Linux
如何在 CoreOs 中啟用系統呼叫審計?
從 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
.