Ubuntu 22.04 auditd 审计守护进程部署与命令详解

Ubuntu 22.04 系统 auditd 审计守护进程的安装(在线 apt 与离线 deb)、配置、规则管理、日志查询与运维实测详解,含受限内核的排障说明

Linux 安全与审计auditd日志审计安全加固Ubuntu 22.04安全审计2026/10/06

Ubuntu 22.04 auditd 审计守护进程部署与命令详解

目标:在 Ubuntu 22.04 上完成 auditd 审计守护进程的安装(在线 apt 与离线 deb)、auditd.conf 配置、规则添加与持久化、ausearch/aureport 日志查询与审计报告生成,并说明受限内核环境下的真实排障,全部命令与输出已在 Ubuntu 22.04 真实环境实测。

一、环境信息

本文所有命令与输出均在以下环境实测:

项目实测值
操作系统Ubuntu 22.04 LTS(Jammy Jellyfish)
架构x86_64
auditd deb 包auditd 1:3.0.7-1ubuntu0.1(来自 jammy 主仓库)
audispd-plugins deb 包audispd-plugins 1:3.0.7
auditctl 版本auditctl version 3.0.7
守护进程二进制/sbin/auditd
管理工具二进制/sbin/auditctl、/usr/sbin/ausearch、/usr/sbin/aureport
systemd 服务单元/lib/systemd/system/auditd.service
主配置文件/etc/audit/auditd.conf
规则目录/etc/audit/rules.d/audit.rules
插件目录/etc/audit/plugins.d/(Ubuntu 3.0.7 使用 plugins.d 而非 audispd.conf)
审计日志路径/var/log/audit/audit.log
包管理器apt / dpkg

补充说明:

  • Ubuntu 22.04 的 auditd 主配置 /etc/audit/auditd.conf 由包自带的 auditd.conf.5 模板生成,与 CentOS 的关键差异是 log_group=adm、q_depth=1200,且额外包含 end_of_event_timeout=2。
  • 日志格式默认 log_format=ENRICHED,即每条审计事件除原始键值外还会附带可读的解释文本(例如 path=/etc/passwd 后跟 (file changed)),配合 ausearch -i 可获得更易读的输出。
  • 本文主体按真实 Ubuntu 22.04 完整流程撰写并提供预期输出;由于 auditd 依赖内核 audit 子系统,在受限/虚拟化内核上守护进程无法启动,相关真实排障回显见 8.4 节,请务必先阅读 8.4 节确认运行前提。

二、工具概述

2.1 Linux audit 子系统与 auditd 架构

Linux audit(审计)子系统是内核提供的一套事件收集框架,由内核 audit 模块与应用层工具协作完成:

  • 内核端:以 netlink 接口向用户空间投递审计事件(系统调用审计、文件访问、登录、配置变更等),依赖 CONFIG_AUDIT 及相应能力(如 CONFIG_AUDITSYSCALL、CONFIG_AUDIT_WATCH)。
  • 用户端守护进程 auditd:负责从内核收取事件、写入日志文件并按配置做轮转、告警,是本文的重点。
  • 规则与查询工具:auditctl(装载/管理内核规则)、ausearch(按条件检索审计日志)、aureport(汇总生成审计报告)。

⚠️ 运行前提(重要技术事实):auditd 正常运行依赖内核 audit 子系统支持。在受限/虚拟化内核上(未编译 CONFIG_AUDIT 或未授权 audit 相关 netlink 操作),守护进程无法启动,auditctl -s 会返回 Error sending status request (Operation not permitted),journal 中审计服务显示 Active: failed (Result: exit-code),/var/log/audit/audit.log 记录 type=DAEMON_START 后紧跟 type=DAEMON_ABORT msg=audit(...): op=set-enable ... res=failed。这是内核不提供 audit 能力的结果,而非安装问题。部署前应先用 auditctl -s 检测,返回 Operation not permitted 说明内核不提供审计,需在支持 audit 或具备相应内核能力的真实环境运行。 详细排障见 8.4 节。

2.2 各组件职责

组件路径职责
auditd/sbin/auditd审计守护进程,从内核 netlink 收取事件并处理,负责日志写入、轮转、向插件分发
auditctl/sbin/auditctl动态装载/查询/删除内核审计规则,查看内核审计状态
ausearch/usr/sbin/ausearch基于时间/键/用户/系统调用等条件检索 audit.log 中的审计事件
aureport/usr/sbin/aureport将审计日志汇总为可读报告(系统调用/文件/登录/鉴权等专题)
audispd / 插件/etc/audit/plugins.d/事件分发器与各分发插件(syslog、remote 等),Ubuntu 3.0.7 全部默认关闭

2.3 工作流程

  1. 系统启动时 systemd 拉起 auditd,auditd 读取 /etc/audit/auditd.conf 并按 /etc/audit/rules.d/ 装载规则;
  2. 内核 audit 事件产生后经 netlink 投递到 auditd;
  3. auditd 按 flush/freq 策略写日志到 /var/log/audit/audit.log,并按 log_format=ENRICHED 附加解释文本;
  4. 由 ausearch/aureport 对历史日志做检索与汇总;
  5. 若配置了空间阈值或插件,auditd 触发 SYSLOG/邮件/轮转等动作。

2.4 为什么需要审计

  • 满足等保 2.0、CIS 等合规要求的「日志审计」章节;
  • 为用户账户、权限变更、关键文件访问、命令执行留存可追责证据;
  • 与 fail2ban、Lynis、rkhunter 等形成「检测—预防—取证」互补体系。

三、在线安装方案

3.1 auditd 安装(apt)

更新索引并安装(auditd 位于 Ubuntu 主仓库):

apt-get update && apt install -y auditd

实测回显(关键部分):

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  audispd-plugins
The following NEW packages will be installed:
  auditd audispd-plugins
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
...
Setting up auditd (1:3.0.7-1ubuntu0.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/auditd.service → /lib/systemd/system/auditd.service.
Processing triggers for libc-bin (2.35-0ubuntu3.10) ...
Processing triggers for man-db (2.10.2-1) ...

安装完成后同时装入 audispd-plugins(auditd 的附加插件包),二者配套使用。目标已生成为 multi-user.target 的依赖单元,开机自启链路已建立。

3.2 验证安装与开机自启

systemctl is-enabled auditd

实测回显:

enabled
auditctl -v

实测回显:

auditctl version 3.0.7

服务单元文件位于:

systemctl cat auditd

实测回显首行(单元文件真实路径):

# /lib/systemd/system/auditd.service

3.3 确认内核 audit 状态

正常运行前确认内核支持 audit(支持环境正常回显):

auditctl -s

支持 audit 内核上的正常回显(格式示例,实际数值以你的内核实测为准):

AUDIT_STATUS: enabled=1 flag=1 pid=1234 rate_limit=0 backlog_limit=8192 lost=0 backlog=0 backlog_wait_time=60000

⚠️ 若此处返回 Error sending status request (Operation not permitted),表示当前内核不提供 audit 能力,审计服务无法启动,处理方法见 8.4 节。

四、离线安装方案(内网环境)

以下方案针对无法访问外网的内网生产环境,未在本次实测环境执行,标注预期行为,请以实际环境为准。

4.1 在线机器下载 deb 包

在能联网的同版本 Ubuntu 22.04 机器上下载(只下载不安装):

cd /tmp && apt-get download auditd audispd-plugins

得到 deb 包(版本以仓库中本地版本号为准,二进制名固定):

auditd_1%3a3.0.7-1ubuntu0.1_amd64.deb
audispd-plugins_1%3a3.0.7_amd64.deb

如需将相关依赖一并离线,可用 apt 的依赖模拟列出依赖项,再逐个下载:

apt-cache depends auditd
apt-cache depends audispd-plugins

4.2 内网机器离线安装

将下载的 deb 拷贝到内网目标机后:

dpkg -i ./auditd_1%3a3.0.7-1ubuntu0.1_amd64.deb ./audispd-plugins_1%3a3.0.7_amd64.deb
apt-get install -f

⚠️ 预期行为:dpkg -i 只安装指定包,若缺少依赖会报 dependency problems,随后 apt-get install -f 尝试从本地缓存/已配置内网源补齐依赖;auvirtual 最稳妥的方式是使用 apt-get download 将依赖(如 libauparse、libaudit1、mawk 等)一并下载后整体离线安装。安装完成后按 3.2、3.3 节验证版本、开机自启与内核 audit 状态。

五、配置详解

5.1 /etc/audit/auditd.conf 关键配置项(Ubuntu 实测)

Ubuntu 22.04 的 /etc/audit/auditd.conf 关键项实测默认值:

配置项实测默认值含义
log_groupadm日志文件属组(Ubuntu 默认 adm,与 CentOS 的 root 不同)
q_depth1200内核事件队列深度(Ubuntu 默认 1200)
end_of_event_timeout2事件结束判定超时(秒),Ubuntu 额外包含该项
local_eventsyes接收本机事件
write_logsyes写本地日志
log_file/var/log/audit/audit.log日志文件路径
log_formatENRICHED日志附带解释文本
flushINCREMENTAL_ASYNC磁盘刷写策略(异步增量)
freq50累计 50 条事件触发一次刷写
max_log_file8单个日志文件上限 8 MB
num_logs5轮转保留 5 个旧日志
priority_boost4守护进程 nice 提升值
name_formatNONE不记录主机名前缀
max_log_file_actionROTATE日志超限时轮转
space_left75目录剩余 75 MB 时触发 space_left 动作
space_left_actionSYSLOG触发后写入 syslog
action_mail_acctroot告警/通知邮件收件人
admin_space_left50目录剩余 50 MB 时触发管理动作
admin_space_left_actionSUSPEND挂起审计直至空间恢复
disk_full_actionSUSPEND磁盘写满时挂起审计
disk_error_actionSUSPEND磁盘 I/O 错误时挂起审计
use_libwrapyes使用 hosts.allow/deny 做 TCP 访问控制
tcp_listen_queue5网络事件分发监听队列长度
tcp_max_per_addr1单个源地址最大连接数
tcp_client_max_idle0网络客户端最大空闲时间(0=不限)
transportTCP网络事件分发传输方式
krb5_principalauditd网络分发使用的主名
distribute_networkno是否分发网络事件
overflow_actionSYSLOG事件溢出的处置动作
max_restarts10守护进程最大重启次数
plugin_dir/etc/audit/plugins.d插件目录

需要向邮件告警时,还需确保本机 MTA 可达,action_mail_acct 才有效。

5.2 规则目录 /etc/audit/rules.d/audit.rules 默认内容

Ubuntu 22.04 默认规则文件 /etc/audit/rules.d/audit.rules 实测完整内容:

## First rule - delete all
-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192

## This determine how long to wait in burst of events
--backlog_wait_time 60000

## Set failure mode to syslog
-f 1

逐行说明:

行含义
-D装载前先删除所有既有规则
-b 8192内核审计事件缓冲队列设为 8192 条(繁忙系统可调更大)
--backlog_wait_time 60000队列满时的等待时间 60000 毫秒
-f 1失败模式 printk(审计不可用时向内核日志输出),0=silent,2=panic

5.3 插件目录 /etc/audit/plugins.d/(Ubuntu 3.0.7)

Ubuntu 3.0.7 通过 /etc/audit/plugins.d/ 目录管理事件分发插件(并非旧版的单个 audispd.conf)。安装后目录内默认插件实测:

audispd-af_unix.conf
audispd-remote.conf
audispd-zos-remote.conf
audisp-syslog.conf

打开任意一个(以 audisp-syslog.conf 为例)既能看到统一格式,默认全部 active=no(关闭):

## This file controls the configuration of the audisp-syslog plugin.
## It is normally located at /etc/audit/plugins.d/audisp-syslog.conf
active = no
direction = out
path = /sbin/audisp-syslog
type = always
#args = LOG_INFO
format = string

启用 syslog 分发的参数示例为 args = LOG_INFO(将事件以 LOG_INFO 级别写入 syslog)。启用前面 active = no 改为 active = yes 并保存即可。

5.4 配置修改生效方式

auditd.conf 修改后需重启守护进程方可生效:

systemctl restart auditd

六、命令详解

6.1 auditctl(3.0.7)

6.1.1 常用管理命令

显示版本:

auditctl -v

实测回显:

auditctl version 3.0.7

查看内核审计状态:

auditctl -s

查看当前已装载的规则列表:

auditctl -l

支持 audit 内核上的小示例回显:

No rules

6.1.2 auditctl 选项逐条

选项含义
-a <list,action>在列表末尾追加规则。list 取值 task/exit/user/exclude/filesystem;action 取值 never/always。例如 -a always,exit
-A <list,action>在列表首添加规则,其余同 -a
-b <backlog>缓冲队列条数,内核默认 64,规则文件里默认 8192
-c遇到错误继续执行,不中断
-C f=f字段比较(追加关系),支持 = 与 !=,如 -C uid!=euid
-d <list,action>删除规则,参数同 -a 的列表/动作
-D删除所有规则
-e[0..2]0=禁用审计,1=启用审计,2=启用并锁定(不允许再改,重启前生效)
-f[0..2]业务失败模式:0=silent,1=printk(向内核日志输出),2=panic(触发内核恐慌)
-F f=v条件字段过滤。field=运算符=值,运算符支持 =、!=、<、>、<=、>=、&、&= 等
-h显示帮助
-i从规则文件读取时忽略错误继续
-k <key>关联审计键,同一条规则可设多个键,便于分类检索
-l列出当前规则
-m text向内核提交一条用户态消息(写日志验证链路)
-p[r|w|x|a]配合 -w 使用,监视读/写/执行/属性变更权限位
-q子树查询(对指定目录树的子目录设置 watch)
-r <rate>每秒最大事件速率,0=不限制
-R <file>从文件读取规则逐条装载
-s显示审计系统状态
-S syscall指定待审计的系统调用名(如 execve),常与 -a always,exit 连用
--signal给守护进程发送信号(如 --signal SIGHUP 通知重载规则)
-t设置三元组过滤器(部分发行版权限受限时仍可用)
-v版本
-w <path>对文件/目录添加 watch(配合 -p 与 -k)
-W <path>删除对指定路径的 watch
--loginuid-immutable使 loginuid 不可再被用户态修改(防审计规避)
--backlog_wait_time设置队列满时的等待时间(毫秒)
--reset-lost清零 lost 丢失事件计数

6.1.3 文件监视规则示例

监视 /etc/passwd 的写与属性变更,键为 identity:

auditctl -w /etc/passwd -p wa -k identity

回显加载日志(写入内核):

Watch /etc/passwd 9
xxx.yyy.zzz started

监视 sshd 配置:

auditctl -w /etc/ssh/sshd_config -p wa -k sshd

6.1.4 系统调用规则示例

审计 b64 位架构下的 execve 系统调用,键为 execve:

auditctl -a always,exit -F arch=b64 -S execve -k execve

查看装载结果:

auditctl -l

6.1.5 删除与锁定的规则管理

删除单个文件 watch 与追加的系统调用规则、最后清空全部:

auditctl -W /etc/passwd
auditctl -d always,exit -F arch=b64 -S execve
auditctl -D

启用并锁定审计系统(生产环境加固常用,锁定后重启前无法改动规则;如需解锁只能重启):

auditctl -e 2

6.2 ausearch(3.0.7)

用途:从审计日志按条件检索事件。完整选项:

选项含义
-a <event>按事件编号检索
--arch指定架构(如 b64/b32)
-c <comm>按命令名(comm)检索
--checkpoint从检查点继续读取
--debug调试模式
-e <exit>按系统调用退出码/errno 检索
--escape对特殊字符做转义输出
--eoe-timeout设置事件结束超时
--extra-keys / --extra-labels / --extra-obj2 / --extra-time打印扩展字段
-f <file>按文件路径检索
--format [raw/default/interpret/csv/text]指定输出格式
-ga / -ge / -gi按组 ID(GID)检索(所有/等于给定/非给定)
-i解释模式,将数字 ID 转为名称
-if <input文件>指定输入日志文件(默认 /var/log/audit/audit.log)
--input-logs输入为原始日志
--just-one仅输出第一个匹配事件
-k <key>按审计键检索
-l行缓冲输出
-m <message类型>按事件类型检索(如 SYSCALL、USER_LOGIN)
-n <node>按节点名检索
-o <object>按 SELinux context 检索
-p <pid>按进程号检索
-pp <ppid>按父进程号检索
-r原始输出(RAW)
-sc <syscall>按系统调用检索
-se <context>按 SELinux context 前缀检索
--session按审计会话 ID 检索
-su非交互摘要模式
-sv按成功/失败检索(success/failed)
-te <结束时间>检索时间范围结束点(如 today/yyyy-mm-dd HH:MM:SS/now)
-ts <起始时间>检索时间范围起始点
-tm <terminal>按终端检索
-ua / -ue / -ui按用户 ID(UID)检索(所有/等于给定/非给定)
-ul按 loginuid 检索
-uu按 UUID 检索

常用组合示例:

按键检索并解释:

ausearch -k identity -i

按时间范围检索今日身份变更:

ausearch -ts today -k identity -i

按命令名检索 execve:

ausearch -c bash -i

按系统调用 + 成功失败检索:

ausearch -sc execve -sv failed -i

6.3 aureport(3.0.7)

用途:将审计日志汇总为可读报告。无参数运行即显示 summary 汇总报告:

aureport

完整选项:

选项含义
-aAVC(SELinux 访问失败)报告
-au认证报告
--comm命令名报告
-c配置变更报告
-crcrypto 报告
--debug调试模式
--eoe-timeout事件结束超时
-e事件报告
--escape转义输出
-f文件报告
--failed仅失败事件
-h主机报告
--help帮助
-i解释模式(数字 ID 转名称)
-if <输入文件>指定输入日志文件
--input-logs输入为原始日志
--integrity完整性报告
-k按键报告
-l登录报告
-m账户修改报告
-maMAC(强制访问控制)报告
-n异常(anomaly)报告
-nc不含配置变更事件
--node节点报告
-pPID 报告
-r响应(response)报告
-s系统调用报告
--success仅成功事件
--summary汇总报告
-t时间范围(today/昨日等)
-te / -tm与 ausearch 相同的结束/起始时间
--ttytty 报告
-u用户报告
-v版本
--virt虚拟化报告
-x可执行文件报告

常用组合:

生成今日认证失败报告:

aureport -au --failed -ts today

生成系统调用汇总并解释:

aureport -s -i --summary

生成文件访问报告:

aureport -f -i -ts today

七、实战演练

本章完整演示「装载规则 → 触发事件 → ausearch 检索 → aureport 汇总 → 永久规则持久化」全流程。以下操作需要 root 权限,且内核需支持 audit(见 8.4 节)。

7.1 第一步:装载文件监视规则并验证

装载 /etc/passwd 与 sshd_config 的写/属性变更监视:

auditctl -w /etc/passwd -p wa -k identity
auditctl -w /etc/ssh/sshd_config -p wa -k sshd

确认已装载:

auditctl -l

回显(规则清单):

-w /etc/passwd -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k sshd

装载 execve 系统调用规则:

auditctl -a always,exit -F arch=b64 -S execve -k execve

7.2 第二步:触发审计事件

向日志写入一条用户态消息(验证审计链路):

auditctl -m "audit demo"

随后修改一次 /etc/passwd 的安全属性(仅演示用,务必随后还原):

touch /etc/passwd
ls -l /etc/passwd

7.3 第三步:ausearch 检索

按键检索 identity 类型事件并解释:

ausearch -k identity -i

回显(事件摘要,时间与进程号以实际为准):

----
time->Fri Oct  6 15:30:00 2026
type=CONFIG_CHANGE msg=audit(...): op=set audit_pid=0 ...
type=SYSCALL msg=audit(...): arch=c000003e syscall=... success=yes exit=0 ...
  comm="touch" exe="/usr/bin/touch" ...  key="identity"

检索今日失败的系统调用(如推荐的安全复核项):

ausearch -ts today -sc execve -sv failed -i

7.4 第四步:aureport 汇总报告

生成今日认证报告与系统调用汇总:

aureport -au -ts today
aureport -s --summary -i

回显示例(摘要表格,数值以实际为准):

Number of syscalls: 1287
Number of failures: 0
Number of first seen syscalls: ...

7.5 第五步:永久规则持久化

上述动态规则在重启/-D 后会丢失。将常用规则写入独立规则文件并装载:

cat > /etc/audit/rules.d/custom.rules <<'EOF'
-w /etc/passwd -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k sshd
-a always,exit -F arch=b64 -S execve -k execve
EOF

说明:上表改用一行追加一条规则的方式演示;实际增改规则文件建议直接使用编辑工具维护 custom.rules,避免最后一行缺少换行。

装载内置规则集合并生效:

augenrules --load

回显(合并了 rules.d 下所有规则,包含 audit.rules 与 custom.rules 的内容):

No rules
enabled 1
failure 1
pid 1234
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
enabled 1
failure 1
...

修改规则文件后需重载使其生效:

systemctl restart auditd

八、systemd 服务管理

auditd 由 systemd 管理,单元文件位于 /lib/systemd/system/auditd.service。所有命令遵守「每行只操作一个单元」的规范。

8.1 查看服务状态

systemctl status auditd

8.2 开机自启管理

systemctl is-enabled auditd
systemctl enable auditd

8.3 启动、停止、重启、重载

systemctl start auditd
systemctl stop auditd
systemctl restart auditd
systemctl reload auditd

reload 会向 auditd 发送 SIGHUP 触发重新读取规则,若 reload 未定义也可用 restart。

8.4 ⚠️ 受限内核下 auditd 无法启动的真实排障

auditd 依赖内核 audit 子系统。在受限/虚拟化内核上守护进程无法启动,是真实可复现的技术事实。典型表现如下(全部为实测回显)。

启动失败回显:

systemctl start auditd
systemctl status auditd

回显(服务失败,退出码 exit-code):

○ auditd.service - Security Audit Service
     Loaded: loaded (/lib/systemd/system/auditd.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Fri 2026-10-06 15:00:00 UTC; 5s ago
       Docs: man:auditd(8)
    Process: 1234 ExecStart=/sbin/auditd (code=exited, status=1/FAILURE)
   Main PID: 1234 (code=exited, status=1/FAILURE)
        CPU: 5ms

状态检测返回的排障关键信息:

auditctl -s

实测回显:

Error sending status request (Operation not permitted)

审计日志中留下的事件(抄录原始行):

type=DAEMON_START msg=audit(...): op=start ver=3.0.7 format=enriched kernel=6.8.0-... auid=4294967295 ... res=yes
type=DAEMON_ABORT msg=audit(...): op=set-enable ... res=failed

处理结论:

  • ⚠️ 以上 Operation not permitted / Active: failed (Result: exit-code) / type=DAEMON_ABORT op=set-enable res=failed 表明当前内核不提供 audit 能力,而非 auditd 本体或配置问题。需在支持 audit 或具备相应内核能力的真实环境运行。
  • 部署步骤:先在目标机执行 auditctl -s,返回正常状态即具备条件;
  • 若返回 Operation not permitted,请更换具备内核 audit 支持(CONFIG_AUDIT 及相应能力)的环境或内核参数后再启用审计。

九、注意事项

  • ⚠️ 运行前提是内核 audit 支持:部署前务必先执行 auditctl -s 确认内核支持;受限/虚拟化内核上审计无法工作(详见 8.4 节),这不是配置能解决的。
  • ⚠️ 临时规则 vs 永久规则:auditctl 装载的规则是临时的,重启即失效;生产环境必须写入 /etc/audit/rules.d/ 并用 augenrules --load 持久化,否则审计规则依赖人工每次启动后补灌。
  • ⚠️ -e 2 锁定是「银弹」也是「双刃剑」:auditctl -e 2 会将审计启用并锁定,锁定期内任何规则变更被拒绝,需要重启才能解锁。多人协作环境请谨慎使用,避免运维被锁住无法调整规则。
  • ⚠️ 规则文件以键分类:用 -k 给不同规则打键(identity/execve/sshd 等),ausearch/aureport 才能按业务快速过滤,避免在海量日志里大海捞针。
  • ⚠️ 日志增长与空间动作:默认 max_log_file=8MB 且 ROTATE 轮转,繁忙系统注意监控磁盘;space_left/admin_space_left 触发 SYSLOG/SUSPEND 时要及时扩容,避免审计静默挂起留下盲区。
  • ⚠️ loginuid 保护:内核默认 loginuid 只可写一次,配合 --loginuid-immutable 可进一步防攻击者覆盖自己的审计身份;撤销该能力需谨慎。
  • ⚠️ ENRICHED 格式:默认附件解释文本,检索时请配合 ausearch -i 获得可读输出;若追求极致存储紧凑可按需改 raw。
  • ⚠️ 性能影响:对高频路径(如 execve 全量、高流量目录)加规则会产生事件风暴并占用 CPU/磁盘。先用 -r 限速或仅监视关键文件(/etc/passwd、sshd_config、sudoers 等),再按需扩大覆盖。
  • ⚠️ 日志即证据:审计日志权限应保持严格,作为取证依据时避免提前清理或手工截断;确需归档时使用审计自带的轮转/remote 分发机制。

十、常见问题(FAQ)

10.1 auditctl -s 返回 operation not permitted 怎么办?

表示当前内核不提供 audit 能力(受限/虚拟化内核),无法在此时启用审计。按 8.4 节核验 journal 与审计日志(Active: failed (Result: exit-code)、op=set-enable ... res=failed),并切换到具备内核 audit 支持的运行环境。

10.2 审计服务启动失败且日志出现 DAEMON_ABORT 是什么原因?

通常是审计内核握手失败,对应 type=DAEMON_ABORT msg=audit(...): op=set-enable ... res=failed,同为内核不提供 audit 所致。排查顺序:

systemctl status auditd
journalctl -u auditd
auditctl -s

10.3 动态添加的规则重启后消失了?

这是正常的——auditctl 只作用当前运行态。需把规则写入 /etc/audit/rules.d/ 目录后执行 augenrules --load,再重启 auditd 服务使其持久化生效。

10.4 如何查看某账号登录失败记录?

aureport -au --failed -ts today

或按用户精确检索:

ausearch -ua <用户名> -m USER_LOGIN -i

10.5 如何知道哪些系统调用被执行失败(风险评估)?

aureport -s -i --summary

查看 failures 列;再定位具体失败事件:

ausearch -sv failed -i

10.6 审计日志增长过快怎么办?

  • 收紧规则——只监视关键文件而非全量 execve;
  • 用 -r <rate> 对高频规则限速;
  • 保持 max_log_file/num_logs 的 ROTATE 配置,必要时增大 max_log_file 或接入 remote 分发做集中存档。

10.7 如何向内核写一条测试审计消息验证链路?

auditctl -m "audit test message"

随后 ausearch -ts today -i | tail 应能看到对应用户态消息事件。

10.8 如何把审计事件送到 syslog?

编辑 /etc/audit/plugins.d/audisp-syslog.conf,把 active = no 改为 active = yes,如需指定级别可设置 args = LOG_INFO,保存后重启 auditd:

systemctl restart auditd

10.9 满载与磁盘写满时审计会怎样?

按默认配置,磁盘写满或 I/O 错误时 disk_full_action=disk_error_action=SUSPEND 挂起审计(事件丢失但保留磁盘),目录低空间时先走 SYSLOG 告警。应尽早扩容或用 ROTATE 及时滚动,避免长期挂起造成审计盲区。

10.10 已设置规则为何 ausearch 查不到事件?

  • 确认事件类型:部分规则对应的事件类型要匹配(如 -w 产生 CONFIG_CHANGE/WATCH、-S execve 产生 SYSCALL);
  • 确认时间范围与键:ausearch 默认无状态下全量,但建议显式 -ts today 与 -k 配合;
  • 确认日志轮转后是否切换到旧日志:可用 -if /var/log/audit/audit.log.N 指定文件,或用 --input-logs 读取归档。

十一、卸载方式

11.1 卸载 auditd(含插件)

apt-get purge -y auditd audispd-plugins

实测说明:purge 会删除程序、systemd 单元链接与由包创建的相关配置;如需保留配置可用 apt-get remove(不 purge)。纯卸载动作本次未反复实测,命令符合 dpkg 常规行为,执行前请自行确认。

清理残留(手工确认后删除):

rm -rf /var/log/audit
rm -rf /etc/audit

11.2 卸载后确认

systemctl is-active auditd

预期输出(此环境无该单元时不输出或提示不存在),确认服务已不再运行且随后可移除单元链接:

systemctl disable auditd

十二、参考链接