Auditd 是 Linux 内核级审计服务,通过配置规则监控 sudo、/etc/shadow 修改、用户创建及 SSH 登录失败等行为,结合 ausearch/aureport 分析日志,并与 SIEM 和漏洞扫描工具联动实现纵深防御。

Auditd 是 Linux 系统级审计的核心服务,能精准记录系统调用、文件访问、用户行为等关键事件,是安全监控和事后溯源的基石。它不依赖应用层日志,直接工作在内核层面,因此难以被普通用户绕过或篡改。
一、Auditd 基础配置与日志采集
默认情况下,auditd 通常已预装但未启用。需确认服务状态并启动:
- 检查是否安装:
rpm -q audit(RHEL/CentOS)或dpkg -l | grep auditd(Debian/Ubuntu) - 启动服务:
systemctl enable --now auditd - 主配置文件为
/etc/audit/audit.conf,重点关注log_file、max_log_file和space_left_action参数,避免日志轮转失效或磁盘占满 - 规则定义在
/etc/audit/rules.d/下的 *.rules 文件中,使用augenrules --load加载生效
二、编写实用审计规则监控高危操作
规则应聚焦权限变更、敏感文件访问、提权行为等真实攻击链路节点:
- 监控 sudo 使用:
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_usage - 记录 /etc/shadow 修改:
-w /etc/shadow -p wa -k identity_change - 捕获新用户创建:
-a always,exit -F arch=b64 -S useradd,groupadd -k account_mgmt(注意架构适配,b32/b64) - 审计 SSH 登录失败:
-a always,exit -F arch=b64 -S execve -F path=/usr/sbin/sshd -F auid!=unset -k ssh_login_fail
每条规则末尾的 -k 标签便于后续用 ausearch -k 快速检索,建议语义清晰、统一命名。
三、日志分析与告警联动
audit.log 本身是二进制+文本混合格式,直接阅读低效。推荐组合使用:
-
ausearch:按关键字、时间、UID、系统调用等条件过滤,如ausearch -m SYSCALL -ts yesterday | aureport -f -i -
aureport:生成汇总报表,aureport -au查登录事件,aureport -f --key ssh_login_fail提取指定标签事件 - 将 audit.log 接入 SIEM(如 Wazuh、Elastic Stack):通过 filebeat 或 audispd 插件转发,实现集中存储、关联分析与实时告警
- 简单脚本化告警示例:用
ausearch -k critical_action -ts recent | wc -l判断阈值,触发邮件或 webhook
四、结合漏洞扫描提升纵深防御能力
Auditd 擅长“行为审计”,但无法主动发现系统弱点。需与漏洞扫描工具协同形成闭环:
- 定期运行
openvas或nmap --script vuln扫描开放端口与服务版本,识别 CVE 风险 - 用
lynis进行本地基线检查,输出缺失的 auditd 规则建议(如 “Enable auditing for cron jobs”) - 将扫描发现的高危配置(如 root 可写 /etc/passwd、SSH 允许空密码)转化为 auditd 监控项,形成“扫描 → 补丁 → 审计加固”流程
- 注意:扫描行为本身也会触发 auditd 日志,可提前添加临时规则排除扫描 IP,避免日志污染
审计不是摆设,关键是让规则贴合业务风险,让日志真正可查、可溯、可响应。










