5.5. 定义审核规则

审核系统根据一组规则运行,这组规则定义了日志文件中所获取的内容。有三种类型的审核规则可以详细说明:
  • 控制规则 — 允许审核系统的行为和它的一些被修改的配置。
  • 文件系统规则 — 也被称为文件监视,允许审核进入特定文件或者目录。
  • 系统调用规则 — 允许记录任何指定程序所做的系统调用。
审核规则可以在命令行上使用 auditctl 实用程序进行详细说明(请注意这些规则并不是在重新启动时一直有效),或者写在 /etc/audit/audit.rules 文件中。以下两个部分总结了定义审核规则的两个方法。

5.5.1. 使用 auditctl 实用程序来定义审核规则

注意

所有与审核服务交互的命令以及审核日志文件都需要 root 特权。作为 root 用户确保您执行这些命令。
auditctl 命令允许您控制审核系统的基本功能并且限定规则来决定哪些审核项目要记录。

定义控制规则

以下是一些控制规则允许您修改审核系统的行为:
-b
在 Kernel 中设定最大数量的已存在的审核缓冲区,例如:
~]# auditctl -b 8192
-f
当追踪重要错误时设定所要完成的行动,例如:
~]# auditctl -f 2
以上配置触发 kernel 恐慌以防重要错误。
-e
启动或者禁用审核系统或者锁定它的配置,例如:
~]# auditctl -e 2
以上命令锁定审核配置。
-r
设定每秒生成信息的速率,例如:
~]# auditctl -r 0
以上配置在生成信息方面不设定限制速率。
-s
报告审核系统状态,例如:
~]# auditctl -s
AUDIT_STATUS: enabled=1 flag=2 pid=0 rate_limit=0 backlog_limit=8192 lost=259 backlog=0
-l
列出所有当前装载的审核规则,例如:
~]# auditctl -l
LIST_RULES: exit,always watch=/etc/localtime perm=wa key=time-change
LIST_RULES: exit,always watch=/etc/group perm=wa key=identity
LIST_RULES: exit,always watch=/etc/passwd perm=wa key=identity
LIST_RULES: exit,always watch=/etc/gshadow perm=wa key=identity
⋮
-D
删除所有当前装载的审核规则,例如:
~]# auditctl -D
No rules

定义文件系统规则

定义文件系统规则,使用以下语法:
auditctl -w path_to_file -p permissions -k key_name
其中:
  • path_to_file 是审核过的文件或者目录:
  • permissions 是被记录的权限:
    • r — 读取文件或者目录。
    • w — 写入文件或者目录。
    • x — 运行文件或者目录。
    • a — 改变在文件或者目录中的属性。
  • key_name 是可选字符串,可帮助您判定哪个规则或者哪组规则生成特定的日志项。

例 5.1. 文件系统规则

为了定义所有的输写访问权限以及在 /etc/passwd 文件中每个属性更改的规则,执行以下命令:
~]# auditctl -w /etc/passwd -p wa -k passwd_changes
请注意以下字符串 -k 选项是任意的。
为了定义记录所有输写访问权限,以及在 /etc/selinux/ 目录中所有文件属性更改的规则,执行以下命令:
~]# auditctl -w /etc/selinux/ -p wa -k selinux_changes
为了定义可以记录执行 /sbin/insmod 命令的规则,在 Linux Kernel 中插入模块,执行以下命令:
~]# auditctl -w /sbin/insmod -p x -k module_insertion

定义系统调用规则

为了定义系统调用规则,使用以下语法:
auditctl -a action,filter -S system_call -F 输入栏=value -k key_name
其中:
  • action 以及 filter 详细说明某个事件何时被记录。 action 可能是 always(经常是)或者never(从不是)其中之一。 filter 详细说明哪个 Kernel 规则匹配过滤器应用在事件中。以下是其中之一的与规则匹配的过滤器: taskexituser 以及 exclude。如果想要更多有关这些过滤器的信息,请参考〈第 5.1 节 “审核系统架构”〉的开始部分。
  • system_call 通过它的名字详细说明系统调用。所有的系统调用都可以在/usr/include/asm/unistd_64.h 文件中找到。许多系统调用都能形成一个规则,每个都在 -S 选项之后详细说明。
  • field=value 详细说明其他选项,进一步修改规则来与以特定架构、组 ID、进程 ID和其他内容为基础的事件相匹配。为了列出完整可用的输入栏类型和它们的数值,请参考 auditctl(8) 手册页。
  • key_name 是可选字符串,可帮助您判定哪个规则或者哪组规则生成特定的日志项。

例 5.2. 系统调用规则

为了定义创造日志项 的规则,每次通过程序使用系统调用 adjtimex 或者 settimeofday。当系统使用 64 位架构,请执行以下命令:
~]# auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
为了定义创造日志项的规则,每次由 ID 是 500 或更大的系统用户删除或者重命名文件时,使用(-F auid!=4294967295 选项排除没有设定登录 UID的用户),执行以下命令:
~]# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete
使用系统调用语法来定义文件系统也是有可能的。对于 -w /etc/shadow -p wa 文件系统规则来说,以下命令为模拟的系统调用创造了规则:
~]# auditctl -a always,exit -F path=/etc/shadow -F perm=wa

5.5.2. 在 /etc/audit/audit.rules 文件中定义持久的审核规则和控制

为了定义在重新启动时可以一直有效的审核规则,您必须把它们包含在 /etc/audit/audit.rules 文件中。这个文件使用相同的 auditctl 命令行语法来详细说明规则。任何在 # 之后的空行或者文本(#)可以忽略。
auditctl 指令可以被用来读取来自指定文件的规则,使用 -R 选项,例如:
~]# auditctl -R /usr/share/doc/audit-version/stig.rules

定义控制规则

文件可以只包括以下的控制规则,修改审核系统的行为: -b-D-e-f、或者 -r。如果想获取更多信息,请参考 “定义控制规则”一节

例 5.3. 在 audit.rules中控制规则。

# Delete all previous rules
-D

# Set buffer size
-b 8192

# Make the configuration immutable -- reboot is required to change audit rules
-e 2

# Panic when a failure occurs
-f 2

# Generate at most 100 audit messages per second
-r 100

定义文件系统和系统调用规则

使用 auditctl 语法定义文件系统和系统调用原则。在〈第 5.5.1 节 “使用 auditctl 实用程序来定义审核规则”〉中的例子可以用以下规则文件来表示:

例 5.4. 在 audit.rules 中的文件系统和系统调用规则

-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -p x -k module_insertion

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete

预配置规则文件

/usr/share/doc/audit-version/ 目录中, 根据不同的认证标准 audit 软件包提供一组预配置规则文件:
  • nispom.rules — 审核规则配置符合《国家行业安全程序操作运行指南》的第八章中详细说明的要求。
  • capp.rules — 审核规则配置满足由 CAPP 设定的要求,是公共标准认定的一部分。
  • lspp.rules —审核规则配置满足由 LSPP 设定的要求是公共标准认定的一部分。
  • stig.rules — 审核规则配置满足由 STIG 所设定的要求。
为了使用这些配置文件,需要创造您原始文件的备份 /etc/audit/audit.rules 并且复制您所选择的有关 /etc/audit/audit.rules 文件的配置文件:
~]# cp /etc/audit/audit.rules /etc/audit/audit.rules_backup
~]# cp /usr/share/doc/audit-version/stig.rules /etc/audit/audit.rules