防日志擦除需结合权限与扩展属性:/var/log目录设750、日志文件设640,属主root、属组syslog/adm;关键日志用chattr +a锁定只追加;logrotate需配置create继承权限;归档日志建议chattr +i锁定,并辅以auditd监控和远程日志同步。

日志目录不能只靠 chmod 限制写入,因为 root 或提权后的攻击者仍可直接删除或覆盖文件。真正防擦除的关键是让日志文件“只允许追加、禁止覆盖和删除”,这需要结合权限设置与扩展属性协同实现。
核心配置:属主、属组、基础权限
/var/log 目录及其关键日志文件(如 messages、secure、auth.log)应统一设为:
- 属主:root
- 属组:syslog(Ubuntu/Debian)或 adm(RHEL/CentOS),保持与日志服务一致
- 目录权限:750(drwxr-x---),禁止其他用户进入和列目录
- 日志文件权限:640(-rw-r-----),仅 root 可写,同组可读,其他用户无权限
关键防护:chattr +a 实现只追加
执行以下命令,锁定活跃日志文件,使其只能被追加写入(rsyslog、journald 等服务照常工作),但无法覆盖、截断或删除:
- sudo chattr +a /var/log/messages
- sudo chattr +a /var/log/secure
- sudo chattr +a /var/log/auth.log
验证是否生效:lsattr /var/log/messages 应显示类似 ----a---------e---(含小写 a);若误用 +i,会导致日志写入失败,切勿在运行中启用。
配套加固:logrotate 与 journald 协同
轮转和归档环节容易破坏 +a 属性,必须显式保障:
- 在 /etc/logrotate.d/rsyslog 的 rotate 块中添加:
create 640 root syslog —— 确保新建日志继承正确权限 - 对 /var/log/journal 目录,确认其属主为 root:systemd-journal,权限为 2755(含 sgid,确保新日志自动归属该组)
- 归档完成的压缩日志(如 messages-20260720.gz),建议移至专用审计目录后执行 chattr +i 锁定,彻底防篡改
额外防线:审计与远程同步
仅靠本地防护不够,需叠加可见性与冗余:
- 用 auditd 监控关键路径:
sudo auditctl -w /var/log/ -p wa -k log_dir_write - 配置 rsyslog 或 journalctl --send-to 将日志实时同步至远程 SIEM 或独立日志服务器
- 定期校验日志完整性(如用 sha256sum 记录归档前哈希值)

















