Linux账户认证日志防护需分层加固:严格限制权限(chown root:adm、chmod 640)、启用不可变属性(chattr +i)、auditd监控文件访问、rsyslog TLS加密外发至远程服务器。

Linux 账户认证日志(如 /var/log/auth.log 或 /var/log/secure)是追踪登录行为、sudo 操作、SSH 访问等关键安全事件的核心依据。一旦被攻击者清空、删除或篡改,入侵痕迹将彻底消失,溯源和取证基本失效。要真正守住这条防线,不能只靠单一手段,而需分层加固——从文件本身、服务机制、系统策略到外部存储,环环设防。
严格限制访问权限与所有权
这是最基础也最关键的一步。默认情况下,很多发行版的日志文件权限仍较宽松(如 644),普通用户可读;若组权限开放且 adm/syslog 组成员过多,风险更高。
- 将 auth.log 所有者设为 root,所属组设为 adm 或 syslog:sudo chown root:adm /var/log/auth.log
- 权限收紧至 640(root 可读写,adm 组可读,其他用户无权访问):sudo chmod 640 /var/log/auth.log
- 同步检查日志目录权限:sudo chmod 750 /var/log,防止非 root 用户创建或覆盖同名文件
启用不可变属性(chattr +i)
即使攻击者获得 root 权限,chattr +i 也能阻止对文件的任何修改、重命名或删除——这是对抗“清空内容”和“直接删除”两类最常见篡改手段的硬核防护。
- 设置不可变:sudo chattr +i /var/log/auth.log
- 注意:启用后,logrotate 无法自动轮转该文件,需先临时移除属性(chattr -i),完成轮转后再加回;建议配合 logrotate 的 postrotate 脚本自动化处理
- 验证是否生效:lsattr /var/log/auth.log 应显示 i 标志
强制审计日志访问行为(auditd)
权限和属性是“守”,auditd 是“察”。它能记录谁、何时、用什么系统调用(open/write/unlink)动了 auth.log,哪怕攻击者成功绕过权限限制,操作也会留下铁证。
- 安装并启用 auditd:sudo apt install auditd && sudo systemctl enable --now auditd(Debian/Ubuntu)
- 添加监控规则(写入 /etc/audit/rules.d/authlog.rules):
-a always,exit -F path=/var/log/auth.log -F perm=wa -k authlog_mod - 重载规则:sudo augenrules --load,之后所有对该文件的写和删操作都会在 /var/log/audit/audit.log 中生成带时间戳和 UID 的审计记录
外发至可信远程日志服务器
本地防护再强,也挡不住整机沦陷。将 auth.log 实时转发至独立、加固的远程日志服务器,是最后一道保险——攻击者控制不了那台机器,就无法抹除原始证据。
- 使用 rsyslog 配置 TLS 加密传输(避免明文 UDP 514 被窃听或伪造):
在 /etc/rsyslog.d/50-auth-remote.conf 中添加:
*.* @@logserver.example.com:6514;fwdformat(@@ 表示 TCP+TLS) - 远程服务器需配置证书、启用接收,并将收到的 auth 日志单独归档、设置只读权限
- 测试连通性:logger "test auth log forward",检查远程端是否实时收到











