linux日志审计与权限控制须协同设计,权限约束“能做什么”,审计记录“实际做了什么”;rsyslog需降权运行并最小化权限,关键日志启用chattr +i/+a防护,auditd聚焦sudo、提权等高危操作链,sudo日志须结构化隔离存储并外发。

Linux生产环境日志审计与权限控制必须协同设计,不能割裂实施。单纯记录日志无法阻止越权操作,仅限制权限又难以追溯异常行为。核心在于:用权限控制约束“能做什么”,用审计机制记录“实际做了什么”,两者叠加形成闭环防御。
日志服务自身权限必须最小化
rsyslog或syslog-ng若以root身份运行全部模块,一旦被利用就可覆盖、删除或伪造任意日志。必须降权运行:
- 在/etc/rsyslog.conf中配置$PrivDropToUser syslog和$PrivDropToGroup syslog
- 确保/var/log目录属主为root:syslog,权限设为750,禁止其他用户写入或遍历
- 禁用非必要模块(如imfile),防止通过配置文件加载实现跨路径写入
- 日志轮转工具(logrotate)也应以syslog用户执行,避免root上下文执行脚本带来风险
关键日志文件启用不可变属性
chmod和chown只能防普通误操作,无法抵御root级篡改。需结合文件系统级保护:
- 对主日志文件(如/var/log/messages、/var/log/secure、/var/log/audit/audit.log)执行chattr +i
- 轮转后的新文件(如/var/log/messages.1)需立即重新加锁,否则存在窗口期
- 临时解除锁定仅限维护窗口内操作,且必须配合auditd规则监控chattr -i行为
- 对仅需追加的日志目录(如/var/log),可改用chattr +a替代+i,兼顾可用性与防护
审计规则聚焦权限变更与提权动作
auditd不是日志备份工具,而是行为探针。规则应精准锚定高危操作链:
- 监控/etc/sudoers、/etc/passwd、/etc/shadow的写入与属性修改:-w /etc/sudoers -p wa -k sudoers_mod
- 捕获所有execve调用中涉及特权程序(su、sudo、mount等)的行为:-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
- 跟踪用户组变更(setgroups)、能力集提升(capset)及setuid调用,识别隐蔽提权路径
- 所有规则写入/etc/audit/rules.d/下独立文件,并用augenrules --load持久化,避免重启失效
sudo操作必须结构化记录并隔离存储
默认sudo日志过于简略,且混在系统日志中难于分析。应单独归集、增强上下文:
- 在/etc/sudoers中启用细粒度日志:Defaults logfile="/var/log/sudo.log"、Defaults log_input,log_output
- 将sudo.log输出路由至独立rsyslog设施(如local2.* /var/log/sudo.log),避免与auth.log混杂
- 记录内容至少包含:执行者UID/AUID、目标用户、命令完整路径、工作目录、终端、时间戳、stdin/stdout哈希(启用log_input/output后)
- 该日志文件同样应用chattr +a或+i保护,并同步外发至远程日志服务器











