从 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
。