linux安全审计需构建“采集→存储→分析→响应”闭环,核心是auditd配置、日志外发归档、结构化分析及自动化告警。

Linux 安全审计系统不是装个工具就完事,核心是构建一条“采集→存储→分析→响应”的闭环链路。重点不在日志多,而在关键行为可追溯、异常模式可识别、响应动作可落地。
启用 auditd 并配置基础规则
auditd 是内核级审计引擎,比应用层日志更底层、更可靠。它默认常驻但未启用,需手动激活:
- 启动服务并设为开机自启:
sudo systemctl enable --now auditd - 确认运行状态:
systemctl status auditd - 规则写入
/etc/audit/rules.d/下的.rules文件(如critical.rules),避免用auditctl临时添加——重启即失效 - 典型最小化规则示例:
-w /etc/passwd -p wa -k identity_change-a always,exit -F arch=b64 -S execve -F uid!=0 -k user_exec-w /var/log/audit/ -p wa -k audit_log_tamper
集中化日志收集与长期存储
单机日志易被删改,必须外发+归档:
- 用 rsyslog 将
auth和authpriv日志通过 TCP 转发至专用日志服务器:
在/etc/rsyslog.d/remote.conf中添加:auth,authpriv.* @@log-server-ip:514 - audit.log 本身不走 rsyslog,需单独处理:在
/etc/audit/auditd.conf中设置log_file = /var/log/audit/audit.log,并启用轮转:max_log_file = 50(MB)num_logs = 6(保留6个归档)max_log_file_action = ROTATE - 定期将归档日志同步至只读存储或对象存储(如 S3 兼容存储),防止篡改
用 ausearch/aureport 快速定位异常
audit.log 是结构化文本,人工翻阅效率极低,应掌握高频排查指令:
- 查所有非 root 用户执行的命令:
ausearch -m SYSCALL -sc execve -F uid!=0 -i | head -20 - 查某文件(如 /etc/shadow)被访问的完整记录:
ausearch -f /etc/shadow -i - 统计昨日失败登录 IP 分布:
ausearch -m USER_AUTH -sv no -i | awk '{print $13}' | sort | uniq -c | sort -nr - 生成按事件类型汇总的日报:
aureport -ts yesterday -t today --summary -i
对接分析平台实现自动告警
人工筛查无法应对海量日志,需引入自动化分析层:
- 轻量级方案:auditd → rsyslog → Logstash → Elasticsearch → Kibana(ELK),用 KQL 编写检测规则,如 “5分钟内同一IP连续3次 USER_AUTH 失败”
- 企业级方案:接入 Wazuh 或 Ossec,它们原生支持 auditd 解析,内置 CIS、PCI-DSS 等合规检查模板,并支持主动响应(如自动封禁 IP)
- 关键提醒:所有分析规则必须基于基线——先跑一周正常流量,再设定阈值,避免误报淹没真实告警











