关键不是录下所有命令,而是精准捕获sudo/su执行、/etc/sudoers和/etc/passwd修改等提权行为;通过auditd内核级拦截、TLS日志转发、实时告警、sudo/SSH加固及AIDE文件校验实现不可绕过、防篡改的全记录审计闭环。

要实施针对服务器权限管理操作指令执行的全记录审计机制,关键不是“录下所有命令”,而是精准捕获所有真正改变权限状态或具备提权能力的行为——比如执行 sudo、su、修改 /etc/sudoers 或 /etc/passwd 等动作。这套机制必须从内核层拦截、日志不可删改、告警可触发、行为可追溯。
启用 auditd 捕获内核级提权行为
auditd 是 Linux 唯一能绕过 shell 层、直接在系统调用层面记录特权动作的工具,比 bash history 或 syslog 更可靠:
- 在 /etc/audit/rules.d/priv-audit.rules 中添加规则,例如:
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec-a always,exit -F path=/bin/su -F perm=x -k su_exec-w /etc/sudoers -p wa -k sudoers_change-w /etc/passwd -p wa -k user_change - 运行
sudo augenrules --load加载规则,并确认服务已启用:sudo systemctl enable --now auditd - 验证是否生效:执行
sudo ls后,运行ausearch -k sudo_exec -i | head -n1,应看到含用户、终端、时间、命令参数的完整事件
集中转发 + 实时解析告警
本地日志易被删除或覆盖,必须外发并实时响应:
- 配置
rsyslog或audispd插件,将/var/log/audit/audit.log通过 TLS 加密转发至远程 syslog 服务器 - 用轻量脚本监听日志流(如
inotifywait -m /var/log/audit/audit.log | while read; do ausearch -m execve -i -ts recent | grep "key=\"sudo_exec\""; done),匹配到即触发邮件或 webhook 告警 - 企业环境建议接入 Wazuh 或 OSSEC:自动关联登录 IP、shell 类型、命令参数与用户身份,识别异常组合(如非工作时间 + root + chmod 777)
加固 sudo 和 SSH 配置堵住审计盲区
如果用户能绕过 sudo 直接 su 或免密提权,审计就形同虚设:
- 禁用 root 远程登录:
PermitRootLogin no(/etc/ssh/sshd_config),重启 sshd - 在 /etc/sudoers 中启用细粒度记录:
Defaults logfile=/var/log/sudo.logDefaults log_input,log_output(需配合sudo_logsrvd才能录终端输入输出) - 避免使用
NOPASSWD: ALL;按职能最小化授权,例如:%devops ALL=(www-data) /usr/bin/systemctl restart nginx
补充文件完整性校验做变更比对
auditd 告诉你“谁改了”,AIDE 告诉你“改成了什么”:
- 初始化 AIDE 指纹库:
aide --init,生成/var/lib/aide/aide.db.new,重命名为aide.db并部署 - 配置定时检查(如每日凌晨):
0 2 * * * /usr/bin/aide --check | mail -s "AIDE CHECK" admin@example.com - 重点关注
/etc/sudoers、/etc/passwd、/etc/shadow、/usr/bin/sudo等路径的权限、哈希、inode 变更

















