Linux

如何在 CoreOs 中啟用系統呼叫審計?

  • April 13, 2016

從 CoreOs 766 開始,審計子系統被部分集成:

審計子系統已在核心中啟用,並且 auditctl 已添加到映像中。大多數審計事件預設被忽略。審計規則可以在 /etc/audit/rules.d 中修改。請注意,auditd 不包括在內,journald 負責記錄事件,儘管它是一種盡力而為的機制。與基於 auditd 的系統不同,如果 journald 由於某種原因未能記錄事件,核心不會恐慌。

為了審計 899 和 alpha 1000 CoreOs 版本上的系統呼叫,我嘗試了以下方法。

# starting a new periodic process:
$ while true; do echo "coreos ..." > /tmp/a.txt && sleep 5s; done &
[1] 4509

# get its pid and add a new audit rule:
$ sudo auditctl -a always,exit -F arch=b64 -S read,write,close,dup2,wait4 -F pid=4509

# wait 5 minutes and check if any audit related event was logged into by the journald:
$ journalctl | grep audit | wc
     0       0       0

為什麼我看不到日誌記錄的任何事件?

cn.ko正確載入並根據輸出auditctl -l成功設置規則。雖然它看起來journald沒有從 netlink 介面接收消息。

我按照以下步驟啟用調試,但它也沒有給出任何提示:

mkdir -p /etc/systemd/system/systemd-journald.service.d/

vim /etc/systemd/system/systemd-journald.service.d/10-debug.conf並填寫以下內容:

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug

並重啟 systemd-journald 服務:

systemctl daemon-reload
systemctl restart systemd-journald
dmesg | grep systemd-journald

CoreOS 附帶一組預設規則,旨在通過/etc/audit/rules.d/. 當您嘗試以互動方式使用它時,您想要做的是首先清除審計規則,因為有一條規則/etc/audit/rules.d/99-default.rules可以使所有剩餘的規則保持沉默。

只需執行audit -D以清除規則,然後您以互動方式添加的規則應該開始工作。

FWIW,99-default.rules引起麻煩的規則是-a exclude,always -F msgtype>0.

引用自:https://serverfault.com/questions/768778