防范未经授权的系统变更需从行为捕获、日志防护、响应闭环和基础加固四环节同步落地:Linux用auditd抓内核级操作,Windows启四大审核策略;日志须加密外发并校验完整性;通过脚本或SIEM实现自动关联与实时告警;SSH禁root、sudo白名单授权、AIDE检测文件篡改、全员MFA。

要防范未经授权的系统变更行为,核心不是“等改完再查”,而是让每一次提权、配置修改、关键文件变动都可追溯、不可抵赖、实时感知。这需要从行为捕获、日志防护、响应闭环和基础加固四个环节同步落地。
一、在源头捕获所有提权与配置修改动作
仅靠 shell 历史或 sudo 日志远远不够,必须深入内核或系统调用层抓取真实行为。
-
Linux 系统用 auditd 规则精准盯住关键路径:在 /etc/audit/rules.d/priv-audit.rules 中添加如下规则,覆盖执行、读写、权限变更三类高危操作:
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec-w /etc/sudoers -p wa -k sudoers_change-w /etc/passwd -p wa -k user_change-w /etc/shadow -p wa -k shadow_change
加载后运行sudo augenrules --load并确认服务已启用。 -
Windows 系统开启四类审核策略并过滤事件 ID:在“组策略管理编辑器”中启用:
审核策略更改(关注 ID 4719、4706)
审核账户管理(ID 4720、4738、4726)
审核对象访问(需对 C:\Windows\System32\GroupPolicy 等路径手动设 SACL,触发 ID 4663)
审核特权使用(ID 4672、4670,反映非交互式提权)
二、确保日志本身不被删改、不被绕过
本地日志文件一旦被清空或覆盖,审计就彻底失效。必须外发+加密+校验。
- Linux 上用 rsyslog 或 audispd 将 /var/log/audit/audit.log 转发至远程 TLS syslog 服务器,禁用明文传输;
- Windows 上通过“事件转发订阅”将安全日志推送到专用收集服务器,避免依赖本地事件查看器;
- 所有日志接收端开启写保护或只追加模式,并定期用 SHA256 校验日志完整性,发现哈希不一致立即告警。
三、建立实时响应与责任绑定机制
日志有了,但没人看等于没装。必须把“谁、在哪、干了什么”自动关联起来。
- 轻量场景可用 inotifywait + awk 监听 audit.log,匹配
key="sudo_exec"后提取auid(原始用户ID)、terminal、exe字段,触发邮件或企业微信通知; - 生产环境推荐接入 Wazuh 或 Elastic SIEM,自动关联登录 IP、shell 命令、sudo 参数、进程树,识别异常组合(如
root + rm -rf /、admin + chmod 777 /etc); - 所有 sudo 操作强制记录输入输出:
在 /etc/sudoers 中加入:Defaults logfile=/var/log/sudo.logDefaults log_input,log_output
四、堵住审计盲区的基础配置
再严密的日志体系也防不住故意绕开它的操作。必须从入口就限制可能性。
- SSH 配置中设
PermitRootLogin no,禁用密码登录,强制密钥+证书认证; -
/etc/sudoers 中禁用
NOPASSWD: ALL,改用白名单授权,例如:%wheel ALL=(ALL) /bin/systemctl restart httpd, /usr/bin/journalctl; - 部署 AIDE 或 Tripwire,每周对 /etc、/bin、/sbin 等目录生成哈希快照,检测静态配置是否被篡改;
- 所有管理员账户启用 MFA,且禁止共享账号,确保每个操作可归属到具体责任人。

















