首页/安全/应急响应速查/logrotate 配置篡改排查

logrotate 配置篡改排查

logrotate 配置与状态文件被改动,可能让痕迹提前轮转清除或让日志跳过轮转;重点核对新增片段与修改时间。

应急响应速查安全更新于 2026-10-13

logrotate 配置篡改排查

logrotate 的配置与状态文件被改动,可能让痕迹提前轮转清除,也可能让某个日志完全跳过轮转。排查重点是新增的配置片段与文件修改时间,以及 postrotate 指向的脚本内容。

基本信息

配置/etc/logrotate.conf 与 /etc/logrotate.d/
状态文件/var/lib/logrotate/status 或 logrotate.status
可疑点新增规则、copytruncate 覆盖、postrotate 指向脚本
核对手段mtime 与包归属(dpkg -S / rpm -qf)
影响日志保留时长与轮转节奏被改变
安全预览logrotate -d 调试模式,不实际执行

典型使用场景

  • 排查日志为何异常缩短或提前消失
  • 确认某个服务的日志是否仍正常轮转
  • 加固巡检:核对 logrotate.d 下的文件清单
  • 排查「日志一天内被清空多次」的现象
  • 配合日志断档排查定位原因
  • 处置后验证轮转配置已恢复正常
  • 演练中练习检查轮转配置
  • 排查服务日志目录被写入异常脚本的情况

核对配置与状态

核对配置与状态
ls -la --time-style=long-iso /etc/logrotate.d/                 # 清单与修改时间
grep -rn 'copytruncate\|postrotate' /etc/logrotate.d/ | head -n 20   # 可疑指令
ls -la /var/lib/logrotate* 2>/dev/null                         # 状态文件
dpkg -S /etc/logrotate.d/nginx 2>/dev/null || rpm -qf /etc/logrotate.d/nginx 2>/dev/null
logrotate -d /etc/logrotate.conf 2>&1 | head -n 30              # 调试模式预览

指令与风险

指令含义风险
daily / weekly轮转周期改成 daily 会让日志更快消失
rotate N保留份数改小会缩短可回查窗口
copytruncate复制后截断原文件覆盖式清空,痕迹更难恢复
postrotate轮转后执行脚本可挂载命令执行
compress压缩归档与保留份数共同决定回查范围
改动配置本身不构成攻击:关键是改动时间是否与事件时间线吻合、postrotate 是否指向异常脚本。
不要用 logrotate -f 强制轮转来验证:那会真的切走当前日志,先把待查内容移出当前文件,应改用 -d 调试模式预览。
配置片段要连文件属主一起看:非 root 属主或组可写的轮转配置属于异常,攻击者往往先改权限再改内容。
轮转节奏变化会直接改变可回查窗口:把周期改成 daily、保留份数改小,几天之内老日志就会被清理掉,所以时间相关的改动要优先核对。

易错点

  • 只看主配置:攻击者更常把改动塞在 logrotate.d 的片段文件里
  • 忽略状态文件:被清空会改变轮转节奏,直接影响时间线判断
  • 不看 postrotate 内容:轮转钩子里同样可以实现命令执行
  • 用 -f 强制轮转做验证:会立即切走日志,把待查内容移出当前文件
  • 不核对文件属主与权限:非 root 或组可写的轮转配置属于异常,先看权限再读内容

数据来源与参考

  • man 8 logrotate
  • man 5 logrotate.conf

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌