安全审计与日志配置

约 8 分钟读完

安全审计与日志配置

概述

安全审计日志是安全事件检测、应急响应和合规审计的基础。没有完善的日志记录,安全事件的调查将无从下手——你无法分析你没有记录的东西。日志系统不仅要能记录关键的安全事件,还需要保证日志自身的完整性和可用性,防止攻击者篡改或删除日志来掩盖踪迹。

在 Linux 系统中,审计体系主要由三个层面构成:内核级审计(auditd,记录系统调用和内核事件)、系统级日志(syslog/rsyslog,记录系统服务和应用事件)和应用级日志(各应用自身的日志记录)。合理配置这三个层面的日志,可以实现对系统活动的全面监控和记录。

本文将详细介绍 Linux 系统中 auditd 审计框架的配置、syslog 集中管理方案和日志保留策略的设计,帮助构建完善的安全审计体系。

核心概念

auditd审计框架

auditd 是 Linux 内核审计子系统的用户态守护进程,能够记录系统调用级别的安全事件。核心配置文件为 /etc/audit/auditd.conf/etc/audit/rules.d/audit.rules

auditd 的审计规则分为三类:文件监控规则(-w,监控文件的访问、修改和属性变更)、系统调用规则(-a-S,监控特定系统调用的执行)和过滤规则(-F,基于条件过滤事件)。

关键审计规则示例:

# 监控用户/组变更
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity

# 监控 sudoers 配置变更
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控 cron 配置变更
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k sshd

系统调用监控示例:记录所有 execve 系统调用(命令执行)、mount/umount 系统调用(文件系统挂载)、kill 系统调用(进程终止)。

rsyslog集中管理

rsyslog 是 Linux 系统中功能最强大的日志收集和转发工具。集中化日志管理的核心思想是将所有主机的日志汇聚到一个中央日志服务器,便于统一存储、检索和分析,同时也保护日志不被入侵者在本地删除。

rsyslog 客户端配置(/etc/rsyslog.d/remote.conf):*.* @@logserver:514(TCP 转发所有日志到中央服务器)。推荐使用 TCP 而非 UDP 传输日志,确保日志不丢失。使用 RELP(Reliable Event Logging Protocol)协议可以进一步提高可靠性。

rsyslog 服务端配置:配置接收远程日志的模块(imtcp/imudp),使用模板定义日志存储格式和路径(按主机名和程序名分类存储),配置日志的访问权限确保日志安全。

日志传输安全:使用 TLS 加密 rsyslog 的远程传输通道(omfwd 模块支持 GnuTLS),防止日志在网络传输中被窃听或篡改。配置双向证书认证确保日志源的可信性。

日志保留策略

日志保留策略应考虑存储空间、合规要求和分析需求。等保 2.0 通常要求日志保留至少 6 个月,金融行业可能要求保留 1 年或更长时间。

日志轮转配置(logrotate):/etc/logrotate.conf/etc/logrotate.d/ 下的配置文件定义了日志的轮转策略。关键参数:轮转频率(daily/weekly/monthly)、保留份数(rotate N)、压缩(compress)、延迟压缩(delaycompress)。

示例 logrotate 配置:

/var/log/audit/audit.log {
    daily
    rotate 180
    compress
    delaycompress
    missingok
    notifempty
    create 0600 root root
    postrotate
        /sbin/service auditd restart
    endscript
}

日志存储规划:根据日志产生速率和保留期限计算存储需求。建议为日志分配独立的存储分区,防止日志占满根分区影响系统运行。

关键日志文件清单

系统认证日志:/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),记录所有认证相关的事件(登录、su、sudo)。

审计日志:/var/log/audit/audit.log,记录 auditd 捕获的系统调用级别事件。

系统日志:/var/log/syslog/var/log/messages,记录系统级的通用日志。

应用日志:各应用自身的日志路径(如 Nginx 的 /var/log/nginx/、MySQL 的 /var/log/mysql/)。确保应用日志也纳入集中管理。

SIEM集成与告警

SIEM(Security Information and Event Management)平台(如 Splunk、ELK Stack、Graylog)将日志集中管理和安全分析结合。SIEM 的核心功能包括:日志归一化(将不同格式的日志统一为标准格式)、关联分析(将多个日志源的事件关联起来发现攻击模式)、告警规则(基于规则或机器学习检测安全事件)。

告警规则示例:5 分钟内同一 IP 的 SSH 登录失败超过 10 次、非工作时间的 root 登录、大量文件在短时间内被修改(可能是勒索病毒)、关键配置文件被修改(auditd 事件触发告警)。

实战要点

  • 保护日志完整性:日志文件应设置严格的访问权限(仅 root 和日志用户可读写)。使用 auditd 监控日志文件自身的访问和修改。配置远程日志备份确保即使本地日志被篡改也有备份可用。
  • 日志时间同步:确保所有服务器的时间同步(使用 NTP),否则日志时间线不准确将严重影响安全事件分析。集中日志服务器的时间应作为所有客户端的时间参考。
  • 避免日志敏感信息泄露:日志中不应包含明文密码、信用卡号等敏感信息。在配置日志记录时注意脱敏处理,特别是 Web 访问日志和应用调试日志。
  • 定期验证日志系统:定期检查日志是否正常产生和收集,验证集中日志服务器的可用性。在应急响应演练中测试日志的完整性和可用性。
  • 日志分析自动化:将常用的日志分析查询编写为脚本或 SIEM 仪表板,实现安全事件的自动检测和告警。建立日志分析的知识库,积累安全事件的检测规则。

总结

完善的审计日志体系是安全防御和事件响应的基石。通过合理配置 auditd 实现系统级审计、使用 rsyslog 构建集中化日志管理、制定科学的日志保留策略,可以为组织的安全运营提供可靠的数据支撑。日志系统需要定期维护和验证,确保在需要时能够提供完整、准确的日志记录。

← 密码学基础概念入门 安全基线检查标准 →