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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐