1.概述
Linux提供了一个审计服务auditd。
默认情况下,开启这个服务只记录较少的资料。
这可能不满足大多数人的需要。但是如果开启全部记录,对于生产环境,可能负载过重,导致影响正常的服务。因此,根据实际需要进行配置是必须的。
Linux系统提供了一些配置的例子可以参考。
/usr/share/doc/audit-2.4.5
audit规则可以使用auditctl命令或配置规则文件来实现。
auditctl命令可以立即生效,但是重启服务会丢失配置的规则。
使用配置文件配置,需要在/etc/audit/audit.rules配置文件中添加规则,然后重启auditd服务生效。
2..auditctl命令简介
规则查看:auditctl -l
状态查看:auditctl -s
添加规则:auditctl -w 路径或路径+文件 -p 规则 -k 关键字
例子:
/scripts目录下发生读、写、执行、属性变化进行审计记录:auditctl -w /scripts -p rwxa
/bin目录下发生执行进行审计记录:auditctl -w /bin -p x
添加规则后在查看一下
这次看到2条规则。
-k参数是一个可选项,允许填写一个字符串,说明这个规则的用途,这个字符串在记录后可以用于过滤使用。
定义系统调用规则:auditctl -a action,filter -S system_call -F field=value -k key_name
action和filter 明确一个事件被记录。action可以为always或者never,filter明确出对应的匹配过滤,filter可以为:task,exit,user,exclude
system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到
field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。
例子:
定义一个规则,当每次使用系统调用adjtimex或者settimeofday时,并且为64位架构,记录审计日志,命令可以输入如下:
auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change 一个文件被user ID为1000或者更大的用户删除,或重命名,记录审计,命令如下:
auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete注意:-F auid!=4294967295 这个是为了排除login UID没有被设置的用户。
其他命令:
-b设置在内河中audit缓冲空间最大值
-D删除所有规则
-f决定内核如何处理critcal error:0=silent ,1=print ,2=panic,默认1。
-W删除一条规则(和-w对应)
-s输出状态报告
-d删除一条UI规则(和-a对应)
4.编辑规则
基本参数与命令auditctl一致,只需要直接写入配置文件/etc/audit/audit.rules,重启auditd服务即可。
/etc/audit/rules.d下放置的文件,可以被导入到audit.rules配置文件。
导入命令:augenrules --load