自CoreOs 766以来, 审计子系统部分集成:
内核中已启用审计子系统,auditctl添加到映像中。 大多数审计事件被默认忽略。 审计规则可以在/etc/audit/rules.d中修改。 请注意,auditd不包括在内,journald负责logging事件,尽pipe它是尽力而为的机制。 与基于auditd的系统不同,如果journald由于某种原因无法logging事件,那么内核不会发生混乱。
为了审核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
为什么我看不到记事本logging的任何事件?
cn.ko加载正确,并根据auditctl -l输出规则成功设置。 虽然它看起来像journald不接收来自netlink接口的消息。
我按照下面的步骤来启用debugging,但是它也没有给出任何提示:
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/的文件系统进行configuration。 当您试图以交互方式使用它时,您想要执行的操作是首先清除审计规则,因为/etc/audit/rules.d/99-default.rules中有一条规则可以使所有其余规则保持沉默。
只需运行audit -D来清除规则,然后交互式添加的规则就可以开始工作了。
FWIW,从99-default.rules引起麻烦的规则是-a exclude,always -F msgtype>0 。