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

如何在 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

为什么我看不到 journald 记录的任何事件?

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

答案1

CoreOS 附带一组默认规则,旨在通过 中的文件系统进行配置/etc/audit/rules.d/。当您尝试以交互方式使用它时,您需要做的是首先清除审计规则,因为有一条规则会使/etc/audit/rules.d/99-default.rules所有剩余规则静音。

只需运行audit -D清除规则,然后您以交互方式添加的规则就会开始起作用。

99-default.rules值得一提的是,造成麻烦的规则是-a exclude,always -F msgtype>0

相关内容