如何在CoreOs中启用系统调用审计?

自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