本文目录导读:

- 日志生成阶段:确保源头可信
- 日志传输阶段:加密与认证
- 日志存储阶段:防篡改与冗余
- 日志访问与使用阶段:最小权限与审计
- 日志生命周期管理:保留与销毁
- 实战建议清单:最低安全配置
- 总结:没有绝对安全,只有持续加固
这是一个非常关键的安全运营问题,日志加固和安全留存的目的是确保日志的完整性(Integrity)、机密性(Confidentiality)和可用性(Availability),防止攻击者在入侵后通过篡改或删除日志来掩盖踪迹。
以下是一套从生成到销毁的日志安全留存方案:
日志生成阶段:确保源头可信
在日志产生时,就需要加入防篡改机制,这也是日志加固的起点。
- 时钟同步(NTP):
- 所有设备必须使用网络时间协议(NTP)与可信的权威时间源同步。
- 目的:确保日志时间戳一致,便于溯源,防止攻击者通过时间混乱来干扰事件重建。
- 开启详细日志:
- 启用审计日志,记录谁、何时、从何处、做了什么操作(例如
auditd, Windows事件日志中的详细审计策略)。 - 记录原始数据(Raw Log),不经过任何中间格式转换,防止关键信息丢失。
- 启用审计日志,记录谁、何时、从何处、做了什么操作(例如
- 日志格式标准化:
- 推荐使用标准格式如CEF或JSON,并强制包含不可伪造的字段:主机名、进程ID、会话ID、用户ID。
日志传输阶段:加密与认证
日志在从终端设备到日志服务器(SIEM)的网络传输过程中,极易被窃听或篡改。
- 加密传输:
- 禁止使用明文协议(如UDP 514,syslog),强制使用TLS 加密的syslog或HTTPS。
- 对于Windows事件日志,使用WinRM over HTTPS。
- 双向认证:
- 日志发送端和接收端使用证书进行双向身份验证,阻止伪造日志源的注入攻击。
- 完整性校验:
对于高敏感日志,可对日志传输流计算哈希值(如HMAC),确保传输过程中未被修改。
日志存储阶段:防篡改与冗余
这是“安全留存”的核心,要求日志一旦写入,不可被无痕修改。
集中存储与“一次写入,多次读取”策略
- 使用专门的日志服务器:不要将日志和业务数据混在一起。
- 文件系统级别:
- Linux:挂载日志分区时使用
noexec(防止执行)、nosuid(防止提权),并启用append-only(只追加)属性。 - Windows:使用安全事件日志转发(WEF),并限制本地管理员删除远程日志的权限。
- Linux:挂载日志分区时使用
- 存储技术:
- 块存储只读快照:对日志卷定期创建快照。
- WORM存储:可使用支持WORM(一次写入多次读取)的存储设备或对象存储(如S3 Object Lock的合规模式)。
本地与远程日志分离
- 原则:设备本地日志不应是唯一储源。
- 实践:所有日志必须实时复制到远程集中式日志服务器。
- 安全卫士:日志服务器本身的安全等级必须最高(最小化服务、硬件安全模块保护密钥、严格访问控制)。
数字签名与哈希链
- 签名:每隔一段时间,对已生成的日志文件计算哈希值,并用私钥进行数字签名。
- 链式校验:将前一个日志文件的哈希值嵌入到后一个日志文件中,形成一条“哈希链”,任何对历史日志的修改都会导致后续所有哈希值失效。
日志访问与使用阶段:最小权限与审计
日志本身包含敏感信息,其访问权限必须严格控制。
- 权限分离:
- 日志查看者:只能查询,不能修改、删除、导出原始日志。
- 日志管理员:负责配置和备份,但最好也不能查看具体内容(通过隔离权限或脱敏)。
- 安全审计员:可以验证日志完整性,但不能操作配置。
- 访问审计:
谁在何时查看了哪条日志,以及执行了何种操作,都需要被记录下来(即审计审计系统本身)。
日志生命周期管理:保留与销毁
安全留存不等于“永不清除”,否则会带来存储成本、法律风险和性能问题。
- 合规保留期:
根据行业规范(如PCI DSS要求保留1年,SOX要求7年,中国《网络安全法》要求不低于6个月),设置精确的保留策略。
- 安全销毁:
- 超过保留期的日志,必须使用不可恢复的方式销毁,对于非结构化数据,进行多次覆写或物理销毁;对于数据库,执行
DELETE后在表空间级别回收碎片,销毁日志本身需要生成一条审计日志,指明销毁了谁、何时、何种范围的日志。
- 超过保留期的日志,必须使用不可恢复的方式销毁,对于非结构化数据,进行多次覆写或物理销毁;对于数据库,执行
实战建议清单:最低安全配置
如果时间有限,请优先逐条执行以下10项:
- 启用NTP:所有服务器、网络设备、安全设备时间对齐。
- 加密传输:所有日志走TLS,关闭明文端口。
- 集中收集:将所有关键系统日志推送至至少一个中央日志服务器或SIEM系统。
- 权限隔离:日志目录对普通用户不允许写和追加(只对
syslog守护进程开放),管理员也不可修改历史文件。 - 配置“只追加”:在syslog配置中设置
$FileCreateMode 0640,建议配合chattr +a或类似ACL控制。 - 启用
auditd:监控关键文件(如/etc/passwd,/etc/shadow)和高危命令(sudo模块)。 - 使用SELinux/AppArmor:强制限制日志守护进程的行为。
- 定期演练:每月模拟一次“日志被删除”的场景,验证能否从备份还原且还原后的哈希值匹配。
- 防篡改备份:将日志备份到只读媒体(如磁带)或不可变的云存储桶。
- 监控日志空洞:在SIEM中设置告警,如果某台关键服务器突然停止发送日志(日志空洞),立刻触发告警。
没有绝对安全,只有持续加固
日志安全留存是一个系统工程,涵盖了传输加密、存储不可变、访问审计、生命周期管理,攻击者最怕的不是被防御住,而是离开后留下了无法删除的足迹,以上方案的核心目标就是:即使系统被攻陷,攻击者也无法在事后完全抹去他存在的证据。