linux日志文件须设root属主、syslog属组、640权限,/var/log目录设755;关键日志用chattr +a防删(允许追加),归档后可用+a或+i锁定;配合journald权限、logrotate create设置、auditd监控及远程同步实现纵深防护。

Linux系统中关键日志文件(如 /var/log/messages、/var/log/secure、/var/log/auth.log 等)必须严格控制权限,防止未授权读取、篡改或删除,尤其要防范攻击者清除入侵痕迹。
核心权限设置原则
日志文件本身应遵循最小权限原则:
- 属主设为
root,属组建议设为syslog(或adm,取决于发行版) - 文件权限通常设为
640(即-rw-r-----),确保只有 root 可写,同组用户可读,其他用户无任何权限 - 日志所在目录(如
/var/log)权限建议为755(drwxr-xr-x),属主和属组均为root - 避免设置
777、757或让非特权用户拥有写权限
防止恶意删除的关键机制:chattr +a 和 +i
仅靠传统 Unix 权限无法阻止 root 用户(或提权后的攻击者)删除文件。需结合 chattr 设置扩展属性:
-
chattr +a /var/log/messages:允许以追加模式写入(rsyslog、journalctl 等日志服务仍可正常写日志),但禁止覆盖、截断或删除该文件 —— 推荐用于活跃日志文件 -
chattr +i /var/log/messages:使文件不可修改、不可删除、不可重命名、不可链接,连 root 也无法操作 —— 适用于归档日志或审计完成后的只读日志(注意:启用后日志服务会写入失败,慎用) - 查看属性用
lsattr /var/log/messages - 撤销属性用
chattr -a或chattr -i(需在维护窗口操作)
配合 systemd-journald 与 logrotate 的安全实践
现代系统多采用 journald + rsyslog 混合架构,需协同加固:
- 确认
/var/log/journal目录存在且属主为root:systemd-journal,权限为2755(含 sgid,确保新日志继承组) - 编辑
/etc/logrotate.d/rsyslog(或对应配置),在 rotate 块中添加create 640 root syslog,确保轮转后新建日志权限正确 - 对已轮转的压缩日志(如
messages-20240501.gz),可用chattr +a锁定(gzip 文件不可追加,实际生效的是防删除;更稳妥做法是归档后chattr +i并移至专用审计目录)
补充防护:auditd 与定时校验
主动监控日志文件的异常变动:
- 用
auditctl -w /var/log/messages -p wa -k logfile_watch监控写入和属性变更事件 - 配置定时任务(如 cron),运行脚本检查关键日志文件是否存在、权限是否被篡改、
lsattr输出是否含预期标志 - 将日志实时同步到远程 syslog 服务器(如 rsyslog over TLS),实现异地留存,从根本上规避本地删除风险










