我正在尝试审核目录树的读取、写入和权限更改。我使用 创建了规则auditctl -w <path> -k media-watch
,但ausearch -k media-watch
仅显示规则的创建(或删除以进行调试),而不显示指定目录或其树下的文件创建或更改。如果相关,则 Selinux 已禁用。
为什么?如何确保文件访问/更改被记录以供审核?
答案1
手册页说这个-w
已经被弃用了,所以我不会使用它。我会使用当前格式来制定这样的规则。例如:
auditctl -a always,exit -F dir=/path/to/dir/ -k media-watch
答案2
我将与 @Michael Hampton 争论是否应按照他建议的格式制定所有规则。但我同意他的观点,即从 Linux 审计内核的手册页中获取指导 [1]。
根据手册,有 3 种类型的规则control
,file
(这是@RedTedRedemption 尝试做的)和system calls
(这是@Michael 建议的)
在您的规则中,要跟踪文件的读取、写入和权限更改的修改,您需要添加-p
具有以下选项的修饰符:
w = write
a = change permissions or access
r = read
我认为 @RedTedRedemption 的做法是正确的,他设置了一条规则来监视特定目录中的修改。但是,您需要在审计规则目录下的文件/etc/audit/
。否则,每次重新启动审计守护程序或重新启动服务器时,都会再次应用默认规则,并且您的设置将不再记录到文件中/var/log/audit/audit.log
。
要设置规则以永久监视目录,您必须在规则设置文件中输入以下行:/etc/audit/audit.rules
-w </your/file/path> -p war -k <your-key>
此外,您还需要评论或者也从那里删除这些规则:
# First rule – delete all
#-D
# Disable system call auditing.
# Remove the following line if you need the auditing.
#-a never,task
因为上述control
规则在重新加载时会覆盖并删除所有后续规则
然后,当你将更改应用到审计规则,运行以下命令:
service auditd reload
或者systemctl auditd reload
service auditd restart
或者systemctl auditd restart
最后,要查询与您的规则相关的审计日志,您需要运行以下命令:
sudo ausearch -i -k <your-key>
-> 搜索与规则键相关的事件sudo aureport -k
-> 在屏幕上打印按规则键组织的审计报告sudo aureport -f
-> 在屏幕上打印按文件名称组织的审计报告