github编辑

19.3.审计配置

用户空间的事件审计支持作为 FreeBSD 操作系统的一部分进行安装。内核支持默认包含在 GENERIC 内核中,可以通过将以下行添加到 /etc/rc.conf 来启用 auditd(8)arrow-up-right

auditd_enable="YES"

然后,启动审计守护进程:

# service auditd start

希望编译自定义内核的用户,必须在自定义内核配置文件中加入以下行:

options	AUDIT

19.3.1. 事件选择表达式

选择表达式用于审计配置中的多个地方,以确定应审计哪些事件。表达式包含一个事件类别列表来进行匹配。选择表达式从左到右进行评估,两个表达式通过将一个附加到另一个来组合。

默认审计事件类别arrow-up-right总结了默认的审计事件类别:

表1. 默认审计事件类别

类别名称
描述
动作

all

所有

匹配所有事件类别。

aa

身份验证和授权

ad

管理性

执行系统级的管理性操作。

ap

应用程序

应用程序定义的操作。

cl

文件关闭

审计调用 close 系统调用的事件。

ex

执行

审计程序执行。通过 audit_control(5)arrow-up-right 中的 argvenvv 参数控制命令行参数和环境变量的审计。

fa

文件属性访问

审计访问对象属性的事件,如 stat(1)arrow-up-rightpathconf(2)arrow-up-right

fc

文件创建

审计文件创建的事件。

fd

文件删除

审计文件删除的事件。

fm

文件属性修改

审计文件属性修改的事件,如通过 chown(8)arrow-up-rightchflags(1)arrow-up-rightflock(2)arrow-up-right 进行的修改。

fr

文件读取

审计数据读取或文件以读取方式打开的事件。

fw

文件写入

审计数据写入或文件写入或修改的事件。

io

ioctl

审计 ioctl 系统调用的使用。

ip

ipc

审计不同形式的进程间通信,包括 POSIX 管道和 System V IPC 操作。

lo

登录/注销

na

不可归属

审计不可归属事件。

no

无效类别

匹配无审计事件。

nt

网络

审计与网络相关的事件,如 connect(2)arrow-up-rightaccept(2)arrow-up-right 事件。

ot

其他

审计杂项事件。

pc

进程

审计进程操作,如 exec(3)arrow-up-rightexit(3)arrow-up-right 事件。

这些审计事件类别可以通过修改 audit_classaudit_event 配置文件来进行自定义。

每个审计事件类别都可以与前缀结合,表示是否匹配成功/失败的操作,以及该条目是否添加或移除类别和类型的匹配。审计事件类别的前缀arrow-up-right总结了可用的前缀:

表2. 审计事件类别的前缀

前缀
动作

+

审计该类别中的成功事件。

-

审计该类别中的失败事件。

^

不审计该类别中的任何成功或失败事件。

^+

不审计该类别中的成功事件。

^-

不审计该类别中的失败事件。

如果没有前缀,则会审计事件的成功和失败实例。

以下示例选择字符串选择了成功和失败的登录/注销事件,但只选择成功的执行事件:

19.3.2. 配置文件

安全事件审计的以下配置文件位于 /etc/security 中:

  • audit_class:包含审计类别的定义。

  • audit_control:控制审计子系统的各个方面,如默认审计类别、在审计日志卷上保留的最小磁盘空间以及最大审计日志大小。

  • audit_event:系统审计事件的文本名称和描述,以及每个事件所属的类别。

  • audit_user:用户特定的审计要求,在登录时与全局默认设置组合。

  • audit_warn:由 auditd(8)arrow-up-right 使用的可定制的脚本,用于在异常情况下生成警告消息,如当审计记录的空间不足或审计日志文件被轮换时。

警告

审计配置文件应小心编辑和维护,因为配置错误可能导致事件记录不正确。

在大多数情况下,管理员只需要修改 audit_controlaudit_user。第一个文件控制系统范围的审计属性和策略,第二个文件可用于按用户精细调整审计。

19.3.2.1. audit_control 文件

audit_control 文件中指定了许多审计子系统的默认设置:

  • dir 项用于设置一个或多个存储审计日志的目录。如果出现多个目录条目,它们将按顺序使用,直到填满为止。通常建议将审计日志存储在专用文件系统上,以防止审计子系统和其他子系统之间的干扰,尤其是当文件系统空间用尽时。

  • 如果 dist 字段设置为 onyes,则会在 /var/audit/dist 中为所有审计日志文件创建硬链接。

  • flags 字段设置系统范围的默认预选择掩码,用于可归属事件。在上面的示例中,所有用户的登录/注销事件以及身份验证和授权事件都会被审计。

  • minfree 项定义了存储审计日志的文件系统的最小可用空间百分比。

  • naflags 项指定了对于不可归属事件的审计类别,例如登录/注销过程以及身份验证和授权。

  • policy 项指定一个由逗号分隔的策略标志列表,用于控制审计行为的各个方面。cnt 表示即使发生审计失败,系统也应继续运行(强烈建议启用此标志)。另一个标志 argv 会将命令行参数(即 execve(2)arrow-up-right 系统调用的参数)作为命令执行的一部分进行审计。

  • filesz 项指定审计日志文件的最大大小,超出该大小后自动终止并轮换日志文件。值为 0 时会禁用自动日志轮换。如果请求的文件大小小于 512k,则会被忽略,并生成一条日志消息。

  • expire-after 字段指定审计日志文件的过期时间和删除时间。

19.3.2.2. audit_user 文件

管理员可以在 audit_user 文件中为特定用户指定进一步的审计要求。每一行通过两个字段配置用户的审计:alwaysaudit 字段指定应始终审计的事件,neveraudit 字段指定应始终不审计的事件。

以下示例条目会为 root 审计登录/注销事件和成功的命令执行,为 www 审计文件创建和成功的命令执行。如果与默认的 audit_control 配置一起使用,则 rootlo 条目是多余的,登录/注销事件也会为 www 审计。

最后更新于