18.4. 对审计进行配置
上一页 | 第 18 章 安全事件审计 | 下一页

## 18.4. 对审计进行配置

所有用于安全审计的配置文件， 都可以在 `/etc/security` 找到。 要启动审计服务， 下面这些文件必须存在：

- `audit_class` - 包含对于审计类的定义。

- `audit_control` - 控制审计子系统的特性， 例如默认审计类、 在审计日志所在的卷上保留的最小空间、 审计日志的最大尺寸， 等等。

- `audit_event` - 文字化的系统审计事件名称和描述， 以及每个事件属于哪个类别。

- `audit_user` - 针对特定用户的审计需求， 这些配置在登录时会与全局的默认值合并。

- `audit_warn` - 由 auditd 调用的一个可定制的 shell 脚本， 用于在意外情况， 如用于审计日志的空间过少， 或审计日志文件被翻转时， 生成警告信息。

### 警告:

在编辑和维护审计配置文件时一定要小心， 因为配置文件中的错误会导致记录事件不正确。

### 18.4.1. 事件筛选表达式

在审计配置文件中的许多地方会用到筛选表达式来确定哪些事件是需要审计的。 表达式中需要指定要匹配的事件类型， 并使用前缀指定是否应接受或忽略匹配的事件， 此外， 还可以指定一个可选项指明匹配成功或失败的操作。 选择表达式是按从左到右的顺序计算的， 而对于两个表达式的情形， 则是通过将后一个追加到前一个之后来实现的。

下面列出了在 `audit_class` 中的默认事件类型：

- `all` - all (全部) - 表示匹配全部事件类。

- `ad` - administrative (管理) - 所有在系统上所进行的管理性操作。

- `ap` - application (应用) - 应用程序定义的动作。

- `cl` - file close (文件关闭) - 审计对 `close` 系统调用的操作。

- `ex` - exec (执行) - 审计程序的执行。 对于命令行参数和环境变量的审计是通过在 audit_control(5) 中 `policy` 的 `argv` 和 `envv` 参数来控制的。

- `fa` - file attribute access (造访文件属性) - 审计访问对象属性， 例如 stat(1)、 pathconf(2) 以及类似事件。

- `fc` - file create (创建文件) - 审计创建了文件的事件。

- `fd` - file delete (删除文件) - 审计所发生的文件删除事件。

- `fm` - file attribute modify (修改文件属性) - 审计文件属性发生变化的事件， 例如 chown(8)、 chflags(1)、 flock(2)， 等等。

- `fr` - file read (读文件数据) - 审计读取数据、 文件以读方式打开等事件。

- `fw` - file write (写文件数据) - 审计写入数据、 文件以写方式打开等事件。

- `io` - ioctl - 审计对 ioctl(2) 系统调用的使用。

- `ip` - ipc - 审计各种形式的进程间通信 (IPC)， 包括 POSIX 管道和 System V IPC 操作。

- `lo` - login_logout - 审计系统中发生的 login(1) 和 logout(1) 事件。

- `na` - non attributable (无主) - 审计无法归类的事件。

- `no` - invalid class (无效类) - 表示不匹配任何事件。

- `nt` - network (网络) - 与网络操作有关的事件， 例如 connect(2) 和 accept(2)。

- `ot` - other (其它) - 审计各类杂项事件。

- `pc` - process (进程) - 审计进程操作， 例如 exec(3) 和 exit(3)。

这些审计事件， 可以通过修改 `audit_class` 和 `audit_event` 这两个配置文件来进行定制。

这个列表中， 每个审计类均包含一个表示匹配成功/失败操作的前缀， 以及这一项是否是增加或删去对事件类或类型的匹配。

- (none) 审计事件的成功和失败实例。

- `+` 审计这一类的成功事件。

- `-` 审计这一类的失败事件。

- `^` 不审计本类中的成功或失败事件。

- `^+` 不审计本类中的成功事件。

- `^-` 不审计本类中的失败事件。

下面例子中的筛选字符串表示筛选成功和失败的登录/注销事件， 而对执行事件， 则只审计成功的：

lo,+ex

### 18.4.2. 配置文件

多数情况下， 在配置审计系统时， 管理员只需修改两个文件： `audit_control` 和 `audit_user`。 前者控制系统级的审计属性和策略， 而后者则用于针对具体的用户来微调。

#### 18.4.2.1. `audit_control` 文件

`audit_control` 文件指定了一系列用于审计子系统的默认设置。 通过查看这个文件， 我们可以看到下面的内容：

dir:/var/audit flags:lo minfree:20 naflags:lo policy:cnt filesz:0

这里的 `dir` 选项可以用来设置用于保存审计日志的一个或多个目录。 如果指定了多个目录， 则将在填满一个之后换用下一个。 一般而言， 审计通常都会配置为保存在一个专用的文件系统之下， 以避免审计系统与其它子系统在文件系统满的时候所产生的冲突。

`flags` 字段用于为有主事件配置系统级的预选条件。 在前面的例子中， 所有用户成功和失败的登录和注销都会被审计。

`minfree` 参数用于定义保存审计日志的文件系统上剩余空间的最小百分比。 当超过这一阈值时， 将产生一个警告。 前面的例子中， 最小剩余空间比例设置成了两成。

`naflags` 选项表示审计类审计无主事件， 例如作为登录进程和系统服务的那些进程的事件。

`policy` 选项用于指定一个以逗号分隔的策略标志表， 以控制一系列审计行为。 默认的 `cnt` 标志表示系统应在审计失败时继续运行 (强烈建议使用这个标志)。 另一个常用的标志是 `argv`， 它表示在审计命令执行操作时， 同时审计传给 execve(2) 系统调用的命令行参数。

`filesz` 选项指明了审计日志在自动停止记录和翻转之前允许的最大尺寸。 默认值 0 表示禁用自动日志翻转。 如果配置的值不是零， 但小于最小值 512k， 则这个配置会被忽略， 并在日志中记录这一消息。

#### 18.4.2.2. `audit_user` 文件

`audit_user` 文件允许管理员为特定用户指定进一步的审计需求。 每一行使用两个字段来配置用户的审计： 第一个是 `alwaysaudit` 字段， 它指明了一组对该用户总会进行审计的事件； 而第二个则是 `neveraudit` 字段， 它指明了一系列对该用户不审计的事件。

在下述 `audit_user` 示例文件中， 审计了 `root` 用户的 登录/注销 事件， 以及成功的命令执行事件， 此外， 还审计了 `www` 用户的文件创建和成功的命令执行事件。 如果与前面的示范 `audit_control` 文件配合使用， 则 `root` 的 `lo` 项就是多余的， 而对 `www` 用户而言， 其登录/注销事件也会被审计：

root:lo,+ex:no www:fc,+ex:no

上一页 | 上一级 | 下一页
18.3. 安装审计支持 | 起始页 | 18.5. 管理审计子系统

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.