该模块的功能 #
auditd 是 Linux 内核的审计子系统:它记录谁登录、谁使用了 sudo、哪些敏感文件被修改,以及执行了哪些系统调用。它是几乎所有合规要求(CIS、PCI、ISO)的基础。问题在于它的原生工具——auditctl、ausearch、aureport——语法生硬且不够友好。
audit 模块在其上覆盖了一层可读的界面:它一眼告诉你 auditd 是否活跃且已加载规则,按时间或按规则 key 过滤列出近期事件,给你一份报表式摘要(登录、sudo/认证以及文件变更),并让你查询当前生效的 CIS 审计规则——这一切都无需你记住每个工具的标志。
auditd 的规则通常以 immutable(不可变)模式加载,直到下次重启前都被锁定,以防有人在运行中将其停用。因此,当某项变更需要重启时,reload 会提示你,而不是强行应用。
常见任务 #
选择你想做的事。每份配方都附有写好的命令——复制它,需要时调整,再点击复制。
1
检查审计是否已启用
确认 auditd 正在运行、规则已加载且无积压。
用 ubuntu 用户通过 SSH 连接到你的服务器并运行:
$ sudo imaxe audit status需要把输出用于脚本或面板?添加 --json:
$ sudo imaxe audit status --json2
查看近期事件
查询发生了什么,按时间或按规则 key 过滤。
以可读摘要列出今天的事件:
$ sudo imaxe audit events --since today只想要某条具体规则(按其 key)的事件并以 JSON 输出?组合 --key 和 --json:
$ sudo imaxe audit events --key identity --jsonausearch 的语法即可获得过滤后的事件。如果不传 --since,则使用 audit.yml 中的默认时间窗口。3
导出当天的摘要
一份 aureport 式的报表:登录、sudo/认证以及文件变更。
请求聚合的活动摘要:
$ sudo imaxe audit summarysudo 使用以及多少次文件修改。4
查看或重新加载规则
查询生效的规则,并在遵守 immutable 的前提下应用变更。
列出当前已加载的审计规则(等同于 auditctl -l):
$ sudo imaxe audit rules list如果你编辑了规则文件,就重新加载它们。如果系统处于 immutable 模式,该命令会提示你需要重启:
$ sudo imaxe audit rules list --json
$ sudo imaxe audit reload如果 events 返回为空,先用 status 确认 auditd 处于活跃状态且已加载规则。可能是 --since 的时间窗口太短,或者没有任何规则使用你所过滤的 key。用 rules list 查看规则。
用法概要 #
imaxe audit <subcomando> [<subcomando anidado>] [--since T] [--key K] [--json]所有子命令都从审计子系统读取数据,而它只能以 root 身份访问(使用 sudo)。为 status、events 或 rules list 添加 --json 可获得机器可读的输出,适用于脚本和面板。
子命令 #
| 子命令 | 功能 | 相关标志 |
|---|---|---|
| status | 状态:auditd 是否活跃、规则是否加载、immutable 模式以及积压。 | --json |
| events | 以可读摘要列出可过滤的近期事件。 | --since, --key, --json |
| summary | aureport 式摘要:登录、sudo/认证以及文件变更。 | — |
| rules | 审计规则管理分组。需要一个嵌套子命令。 | — |
| rules list | 列出生效的规则(等同于 auditctl -l)。 | --json |
| reload | 重新加载规则;遵守 immutable,并在需要重启时提示。 | — |
参数与标志 #
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --since | string | audit.yml | 在 events 中:从何时开始列出(例如 today、recent、'now-1 hour')。若省略,则使用 audit.yml 中的 default_since。 |
| --key | string | — | 在 events 中:按某条 auditd 规则的 key 过滤(例如 identity)。 |
| --json | bool | false | 在 status、events 和 rules list 中:将结果以结构化 JSON 输出到 stdout。 |
summary、rules 和 reload 不接受标志:它们按原样执行。请记住 rules 始终需要嵌套子命令 list。
文件与路径 #
| 路径 | 内容 |
|---|---|
| /etc/imaxe/audit.yml | 模块配置:events 的默认时间窗口(default_since)及其他选项。 |
| /etc/audit/audit.rules | auditd 在启动时加载的审计规则(CIS 基线)。 |
| /etc/audit/rules.d/ | 规则片段,组装成最终的规则集。 |
| /var/log/audit/audit.log | auditd 写入的事件日志,供 events/summary 查询。 |
audit.yml 示例:
events:
default_since: today退出码与日志 #
每次执行都会返回一个退出码,你可以用 echo $? 查看——便于在脚本中串联:
调试时实时跟踪日志:
$ sudo journalctl -u auditd -f
$ sudo tail -f /var/log/audit/audit.log故障排查 #
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 出现 AUDITD(退出码 3) | auditd 服务未在运行。 | 用 systemctl start auditd 启动它,然后重试 imaxe audit status。 |
events 什么都不返回 | --since 时间窗口太短,或 key 不存在。 | 扩大 --since(例如 'now-1 hour'),或用 rules list 查看 key。 |
reload 提示需要重启 | 规则处于 immutable 模式(锁定直到重启)。 | 安排一次重启以应用变更;在那之前仍沿用先前的规则。 |
| 出现 USAGE(退出码 2) | 调用 rules 时未带嵌套子命令。 | 使用 imaxe audit rules list:rules 始终需要一个子命令。 |
Audit 模块遇到问题了?
把「imaxe <module> status --json」的输出发给我们,我们会尽快回复你。