auditd是Linux内核级安全审计核心组件,通过直接拦截系统调用确保日志真实不可篡改;需启用服务、配置auditd.conf和audit.rules,并用ausearch/aureport分析日志,结合漏洞扫描实现“是否被利用”的闭环验证。

Linux系统安全审计不是堆砌工具,而是围绕关键行为建立可追溯、难绕过的记录链。auditd是其中最底层也最关键的组件——它不依赖用户空间程序,直接在内核拦截系统调用,确保日志真实不可篡改。
auditd服务启用与基础配置
多数主流发行版已预装auditd,但默认未必启用。确认并激活是第一步:
- Debian/Ubuntu:sudo apt install auditd -y && sudo systemctl enable --now auditd
- RHEL/CentOS:sudo yum install audit audit-libs -y && sudo systemctl enable --now auditd
- 验证状态:sudo systemctl status auditd(看active running)和sudo auditctl -s | grep enabled=1
核心配置文件有两个:/etc/audit/auditd.conf控制日志行为,/etc/audit/rules.d/audit.rules存放持久化规则。修改后需重载规则:sudo augenrules --load(或重启auditd)。
精准设置高价值审计规则
规则宁缺毋滥。重点监控三类目标:敏感文件、特权操作、异常系统调用。示例规则如下(写入/etc/audit/rules.d/audit.rules):
- -w /etc/passwd -p wa -k identity:记录对用户数据库的写入和属性变更
- -w /etc/shadow -p wa -k identity:同上,但针对密码哈希存储
- -w /etc/sudoers -p wa -k privileged-actions:捕获权限提升策略变更
- -a always,exit -F arch=b64 -S execve -k process-exec:记录所有64位进程启动(含命令行参数)
- -a always,exit -F arch=b64 -S unlink -S rmdir -k file-deletion:追踪文件/目录删除动作
注意:-p wa比-p rwa更合理——读取通常高频且噪音大,写入和属性变更才真正代表风险;-k标签必须简洁唯一,后续搜索全靠它。
实时捕获与高效日志分析
日志默认存于/var/log/audit/audit.log,但直接cat或tail效率低且难解读。推荐组合使用官方工具:
- 按关键词查事件:sudo ausearch -k privileged-actions
- 查某用户全部活动:sudo ausearch -ui 1000(1000为UID)
- 查特定时间范围:sudo ausearch --start today --end now
- 生成摘要报告:sudo aureport --summary(看事件类型分布)
- 导出可读格式:sudo aureport -f -i --key process-exec(带用户名和命令路径)
关键技巧:用ausearch -i自动解析数字UID/GID为用户名,用aureport -f还原文件路径,避免手动查/proc。
与漏洞扫描形成闭环验证
auditd记录“谁做了什么”,而漏洞扫描回答“系统是否脆弱”。两者结合才能判断风险是否被实际利用:
- 若OpenSCAP报告/etc/shadow权限过宽,立刻检查ausearch -k identity中是否有非root修改记录
- 若Trivy发现镜像含CVE-2023-XXXX,用ausearch -m EXECVE -i | grep "exploit-bin"确认该二进制是否被执行过
- AIDE检测到/bin/bash校验值变化,用ausearch -f /bin/bash -m SYSCALL回溯何时、由谁替换
这种交叉验证能区分“存在漏洞”和“已被利用”,大幅提升响应优先级判断准确性。










