防篡改的实质
日志的最大风险不是被攻击者删除,而是被有权操作的人顺手改掉——运维误删、责任人掩盖误操作、入侵者清理痕迹都属此类。因此防篡改的第一原则是「执行者与日志分离」:产生操作的账号不应具备修改或删除该日志的能力。技术手段包括只追加写入、实时转发到集中平台、集中侧防篡改存储、哈希链与数字签名,并通过定期校验发现篡改。
基本信息
| 核心原则 | 执行主体不能改写或删除自己的操作记录 |
|---|---|
| 技术手段 | 只追加存储、实时转发、集中防篡改存储、哈希链、签名 |
| 校验方式 | 定期校验哈希链或签名完整性,失败立即告警 |
| 权限设计 | 写入与删除权限分离,删除需审批且留痕 |
| 留存处置 | 按策略设定保存期,到期销毁需留下证据 |
典型使用场景
- 合规要求日志不可篡改:审计中需要证明记录未被后期修改
- 内部调查取证:把操作记录当作可信证据而非参考信息
- 防入侵清痕:攻击者获得主机权限后无法抹掉历史动作
- 第三方操作审查:供应商远程操作纳入同一留痕体系
- 双人复核凭证:证明复核动作发生在执行之前而非事后补签
手段与局限
| 手段 | 防护对象 | 局限 |
|---|---|---|
| 本机只追加写入 | 普通删除与改写 | 具备最高权限者仍可能绕过或破坏文件系统 |
| 实时转发集中平台 | 攻击者清理本地日志 | 转发前的本地窗口期仍有风险 |
| 哈希链串联 | 事后单条替换 | 需定期校验才能发现,校验缺失等于没有 |
| 集中侧防篡改存储 | 平台内部人员篡改 | 容量与成本开销需要规划 |
| 签名与可信时间戳 | 事后否认操作时间 | 依赖密钥与时间源的管理制度 |
常用做法示意
常用做法示意
# 1. 只追加:阻止执行者删除或改写本次记录(示意)
chattr +a /var/log/app/operation.log # 仅允许追加写;用于系统审计组件前需确认与其轮转机制兼容
# 2. 实时转发:缩短攻击者清理本地日志的窗口期
*.* @@logserver.example.net:514 # 用 TCP 转发,避免 UDP 丢包
# 3. 完整性校验:定期核对哈希链,失败立即告警
log-verify --chain /var/log/chain.db # 校验不通过按安全事件处理,不按运维告警处理
# 4. 权限分离:产生业务的账号无权删除集中侧记录
# 删除仅保留给日志平台管理员,且删除动作本身要写进日志防篡改靠组合而不是单点:只追加保护本机记录、实时转发缩短窗口期、集中存储防止内部人员改动、定期校验才能发现「已经被改过」。四者缺一都有明显缺口。
只在本地留存日志无法作为证据:一旦主机被控制或磁盘损坏,记录即不可恢复。审计用日志必须在产生后尽快离开本机。