CentOS环境下如何进行安全审计
小樊
37
2025-12-11 17:42:39
CentOS 安全审计实操指南
一 核心组件与基线
- 启用并验证 auditd(Linux 审计框架):审计内核拦截系统调用,auditd 守护进程写入磁盘,日志默认位于 /var/log/audit/audit.log。在 CentOS 7/8 上安装并启动:
- 安装:
sudo yum -y install audit audit-libs
- 启动与自启:
sudo systemctl start auditd && sudo systemctl enable auditd
- 验证:
sudo systemctl status auditd、sudo auditctl -l(查看规则)、sudo ausearch -i -k <key>(按关键字检索)、sudo aureport(生成审计报告)
- 基线加固与合规:将预置规则集复制到 /etc/audit/rules.d/ 并重启加载,可快速覆盖关键场景(身份鉴别、网络、特权操作等)。常见模板:30-nispom.rules、71-networking.rules、pci-dss-v31.rules、stig.rules(路径随版本可能为 /usr/share/doc/audit[-version]/rules/ 或 /usr/share/audit/sample-rules/)。
二 日志与审计规则配置
- 守护进程配置 /etc/audit/auditd.conf(按需调整,保证容量与可用性):
log_file = /var/log/audit/audit.log
max_log_file = 100(单位 MB,示例值)
num_logs = 10
max_log_file_action = rotate
flush = incremental_async(兼顾性能与及时落盘)
- 持久化规则目录 /etc/audit/rules.d/*.rules(系统启动/重启时自动合并到 /etc/audit/audit.rules)。
- 常用规则示例(写入即生效;永久生效请放入 rules.d):
- 监控关键文件变更(如 /etc/shadow、/etc/passwd、/etc/ssh/sshd_config)
sudo auditctl -w /etc/shadow -p wa -k shadow-write
sudo auditctl -w /etc/passwd -p wa -k passwd-modify
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd-config
- 按系统调用审计敏感行为(示例:监控删除文件)
sudo auditctl -a always,exit -S unlink -S rmdir -k file-delete
- 按用户审计(示例:对 auid=1000 的用户打开敏感目录的行为进行跟踪)
sudo auditctl -a always,exit -F arch=b64 -S openat -F auid=1000 -k user-open-sensitive
- 规则管理要点
- 查看/清空:
sudo auditctl -l、sudo auditctl -D
- 永久化:将等效规则写入 /etc/audit/rules.d/audit.rules 或自定义 .rules 文件,然后
sudo systemctl restart auditd
- 加载顺序:rules.d 下文件按字典序合并,建议以 数字前缀 控制顺序(如 10-、20-、30-)。
三 日志分析与报告
- 检索与取证
- 按文件:
sudo ausearch -f /etc/passwd -i
- 按关键字:
sudo ausearch -i -k sshd-config
- 按事件 ID:
sudo ausearch -a <event_id> -i
- 认证相关汇总:
sudo aureport -au(成功/失败登录、来源、终端等)
- 解读要点
- 审计事件可能由多条记录组成(如 SYSCALL/CWD/PATH),共享同一时间戳与事件 ID,便于串联还原操作链。
- 关键字段:type(事件类型)、syscall(系统调用号/名)、auid(原始登录用户 ID)、uid/euid、comm/exe(命令/可执行文件路径)、自定义 key(便于检索)。
四 合规与加固扩展
- 合规规则集:复制所需模板到 /etc/audit/rules.d/ 并重启加载,例如
sudo cp /usr/share/doc/audit-*/rules/30-nispom.rules /etc/audit/rules.d/
sudo cp /usr/share/doc/audit-*/rules/71-networking.rules /etc/audit/rules.d/
sudo systemctl restart auditd
- 主机加固与恶意软件巡检(定期执行并留存报告)
- Lynis:系统安全审计与配置建议
sudo yum install -y lynis && sudo lynis audit system
- Chkrootkit / Rkhunter:rootkit 检测
sudo yum install -y chkrootkit rkhunter && sudo chkrootkit && sudo rkhunter -c
- ClamAV:反病毒引擎(更新病毒库后按需扫描)
sudo yum install -y clamav && sudo freshclam && sudo clamscan -r -i /path。
五 运维与风险控制建议
- 性能与噪声控制
- 优先使用 文件/目录 watch(-w) 覆盖关键目标;对高噪声路径(如包含大量临时文件的目录)谨慎使用宽泛的系统调用规则,必要时按用户、时间窗或路径白名单收敛。
- 合理设置 max_log_file / num_logs / flush,并配置 logrotate 或外部日志采集,避免磁盘被占满导致 auditd 暂停(如达到上限采取 rotate 而非 suspend)。
- 集中化与告警
- 将 /var/log/audit/audit.log 与安全日志(如 /var/log/secure)通过 rsyslog 或 syslog-ng 集中到 SIEM/日志平台,结合规则实现实时告警(如多次认证失败、关键文件变更、特权命令执行)。
- 变更与演练
- 规则上线前在测试环境验证,变更留痕;定期做“红蓝对抗/取证演练”,验证审计覆盖与告警有效性。
- 风险提示
- 审计会产生额外 I/O 与存储开销;规则过宽会影响性能与可用性。生产环境建议分阶段启用、滚动评估并持续优化。