linux中的audit审计日志

这里首先介绍auditctl的应用,具体使用指南查看man auditctl。auditctl的man 描述说明这个工具主要是用来控制audit系统行为,获取audit系统状态,添加或者删除audit系统的规则。控制audit系统行为和获取audit系统状态参数:

-s 或者auditd 状态 auditctl -s 显示:AUDIT_STATUS: enabled=1 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0
-e [0|1|2] 设置audit使能标识, 0 表示临时关闭audit,1 表示启用audit,2表示锁住audit规则配置文件,这条命令一般设这在audit.rules的最后一条,任何人试图修改audit规则都会被记录,并且禁止修改。
-f [0|1|2]控制失败标识。也就flag位,这个位的主要作用是This option lets you determine how you want the kernel to handle critical errors
-r 设置速率,也就是每秒钟消息数目,非0的话如果系统在1秒钟大于设定的值,就会触发系统flag标识的行为
-b 设置backlog_limit

audit系统规则设置:
文件系统audit设置:

-w path path是一个文件或者目录的绝对路径。
-p [r|w|x|a] 和-w一起使用,监测用户对这个目录的读 写 执行 或者属性变化如时间戳变化。
-k 指定一个key,在ausearch的时候使用

系统调用的监控:

-a 添加一条系统调用监控规则
-S 后面接需要监测的系统调用的名称

显示规则和移除规则:

-D 删除所有规则
-d 删除一条规则和-a对应
-W 删除一条规则和-w对应
-l 列出所有规则

-s
根据名称或数字指定一个系统。要指定所有系统调用,可使用all作为系统调用名称。如果程序使用了这个系统调用,则开始一个审计记录。可以为相同的规则指定多个系统调用,每个系统调用必须用-S启动。在相同的规则中指定多个系统,而不是列出单独的规则,这样可以导致更好的性能,因为只需要评价一个规则。
- F ,<=]value>
指定一个规则字段。如果为一个规则指定了多个字段,则只有所有字段都为真才能启动一个审计记录。每个规则都必须用-F启动,最多可以指定64个规则。如果用用户名和组名作为字段,而不是用UID和GID,则会将它们解析为UID和GID以进行匹配。下面是有效的字段名:

auditctl -w /tmp -p e -k webserver_watch_tmp
-w 监控文件路径 /etc/passwd,
-p 监控文件筛选 r(读) w(写) x(执行) a(属性改变)
-k 筛选字符串,用于查询监控日志


auditctl -a entry,always -S all -F pid=1005
-S 监控系统调用
-F 给出更多监控条件(pid/path/egid/euid等)

可以用此命令查看日志:
ausearch -f /etc/passwd -x rm
-k 利用auditctl指定的key查询
-x 执行程序

# ausearch -ts today -k password-file
# ausearch -ts 3/12/07 -k password-file
-ts 指定时间后的log (start time)
-te 指定时间前的log (end time)


always
分配审计上下文,总是把它填充在系统调用条目中,总是在系统调用退出时写一个审计记录。
exit
从系统调用中退出值。
-S
报告关于系统调用的消息