19.3.审计配置¶
对事件审计的用户空间支持作为 FreeBSD 基本系统的一部分被预置。GENERIC 内核默认提供了内核的支持,并且可以通过在 /etc/rc.conf 中添加以下行来启用 auditd(8):
auditd_enable="YES"
然后,启动审计守护进程:
# service auditd start
喜欢编译定制内核的用户必须在其定制内核配置文件中包含以下行:
options AUDIT
19.3.1.事件选择表达式¶
审计配置中的许多地方都使用到了选择表达式,以确定应该审计哪些事件。表达式包含要匹配的事件类列表。选择表达式从左到右计算,两个表达式通过将一个附加到另一个来组合。
默认审计事件类 总结了默认审计事件类:
表 1. 默认审计事件类
类型名称 |
说明 |
操作 |
---|---|---|
all |
全部 |
匹配所有事件类。 |
aa |
认证和授权 |
|
ad |
管理 |
对整个系统执行的管理操作。 |
ap |
应用 |
应用程序定义的操作。 |
cl |
文件关闭 |
审计对 |
ex |
执行 |
审计程序的执行。审计命令行参数和环境变量是通过使用 audit_control(5) 中 |
fa |
文件属性访问 |
审计对象属性的访问,如 stat(1) 和 pathconf(2)。 |
fc |
文件创建 |
审计创建文件的事件。 |
fd |
文件删除 |
审计文件删除的事件。 |
fm |
文件属性修改 |
审计文件属性被修改的事件,例如 chown(8)、chflags(1) 和 flock(2)。 |
fr |
文件读取 |
对读取数据或打开文件进行读取的审计事件。 |
fw |
文件写入 |
对写入数据、写入文件或修改文件的事件进行审计。 |
io |
ioctl |
审计 |
ip |
ipc |
审计各种形式的进程间通信,包括 POSIX 管道和 System V IPC 操作。 |
lo |
登录_注销 |
|
na |
无归属 |
审计无归属的事件。 |
no |
无效的类 |
不匹配审计事件。 |
nt |
网络 |
审计与网络操作相关的事件,例如 connect(2) 和 accept(2)。 |
ot |
其他 |
审计杂项事件。 |
pc |
过程 |
这些审计事件类可以通过修改 audit_class
和 audit_event
配置文件来定制。
每个审计事件类可以与一个前缀组合,该前缀指示是否匹配成功/失败的操作,以及条目是添加还是删除类和类型的匹配。审计事件类的前缀总结了可用的前缀:
表 2. 审计事件类的前缀
前缀 |
操作 |
---|---|
审计此类中的成功事件。 |
|
审计此类中的失败事件。 |
|
^ |
审计此类中既不成功也不失败的事件。 |
^+ |
不要审计此类中的成功事件。 |
^- |
不要审计此类中的失败事件。 |
如果不存在前缀,则将审计事件的成功和失败实例。
以下示例选择字符串选择成功和失败的登录/注销事件,但仅选择成功的执行事件:
lo,+ex
19.3.2.配置文件¶
在 /etc/security 中可以找到以下用于安全事件审计的配置文件:
audit_class :包含审计类的定义。
audit_control :控制审计子系统的各个方面,例如默认审计类、审计日志卷上保留的最小磁盘空间以及最大审计跟踪大小。
audit_event :系统审计事件的文本名称和描述以及每个事件所在类的列表。
audit_user :用户特定的审计要求与登录时的全局默认值相结合。
audit_warn :auditd(8) 使用的可定制的 shell 脚本,用于在异常情况下生成警告消息,例如当审计记录的空间不足或审计跟踪文件已轮替时。
警告
应仔细编辑和维护审计配置文件,因为错误配置可能导致不正确的事件记录。
在大多数情况下,管理员只需修改 audit_control 和 audit_user。第一个文件控制系统范围的审计属性和策略,第二个文件可用于用户的审计微调。
19.3.2.1. audit_control 文件¶
在 audit_control 中指定了一些审计子系统的默认值:
dist:off
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M
dir
条目用于设置将存储审计日志的一个或多个目录。如果出现多个目录条目,它们将在存储时按顺序使用。通常配置审计,以便审计日志存储在专用文件系统上,以防止在文件系统用完时引起审计子系统与其他子系统之间的干扰。
如果将 dist
字段设置为 on
或 yes
,将创建指向 /var/audit/dist 中所有跟踪文件的硬链接。
flags
字段为归属事件设置系统范围的默认预选掩码。在上面的示例中,对所有用户的成功和失败登录/注销事件以及身份验证和授权进行审计。
minfree
条目定义了存储审计跟踪的文件系统的最小可用空间百分比。
naflags
条目指定了要针对无归属事件进行审计的审计类,例如登录/注销过程以及身份验证和授权。
policy
条目指定了一个以逗号分隔的策略标志列表,用于控制审计行为的各个方面。cnt
表示尽管审计失败,系统仍应继续运行(强烈建议使用此标志)。另一个标志 , argv
会让 execve(2) 系统调用的命令行参数作为命令执行的一部分被审计。
filesz
条目指定了在自动终止和轮替跟踪文件之前审计跟踪的最大大小。0 值禁用自动日志轮替。如果请求的文件大小低于 512k 的最小值,它将被忽略并生成一条日志消息。
expire-after
字段指定审计日志文件何时到期并被删除。
19.3.2.2. audit_user 文件¶
管理员可以在 audit_user 中为特定用户进一步指定审计要求。每行通过两个字段为用户配置审计:alwaysaudit
字段指定应始终为用户审计的 neveraudit
一组事件,该字段指定一组不应为用户审计的事件。
以下示例条目审计登录/注销事件和成功的命令执行—— root
以及文件创建和成功执行的 www
命令。如果与默认的 audit_control 一起使用,则 lo
条目 root
是多余的,并且对 www
的登录/注销事件也将被审计。
root:lo,+ex:no
www:fc,+ex:no