核心是聚焦“谁改了关键文件、改成了什么样、是否合规”,重点审计/etc/passwd(644)、/etc/shadow(600)、/etc/sudoers(440)、/etc/ssh/sshd_config(600)等高危文件,结合stat批量检查、aide基线比对与auditd实时监控,实现自动化持续审计与防护。

审计服务器权限相关配置文件,核心是聚焦“谁改了关键文件、改成了什么样、是否合规”,而不是泛泛检查所有配置。重点盯住那些一旦被篡改就可能直接导致提权、信息泄露或服务失控的文件,并用自动化手段持续比对基线。
锁定必须审计的高危配置文件
不是所有配置文件都值得花同等精力。以下几类需优先覆盖:
-
/etc/passwd:权限应为
644,属主 root;若含明文密码(极罕见)则需600 -
/etc/shadow:必须
600或000,仅 root 可读写 -
/etc/sudoers 及 /etc/sudoers.d/ 下全部文件:建议
440,禁止组和其他用户写入 -
/etc/ssh/sshd_config:推荐
600,防止非授权查看密钥策略或登录限制 -
/etc/crontab 和 /etc/cron.* 目录:应为
600,避免定时任务被恶意注入
用命令快速验证当前权限状态
人工抽查时,一条命令就能暴露问题:
- 查单个文件:
ls -l /etc/shadow看权限和属主 - 批量检查预设文件:
stat -c "%n %a %U:%G" /etc/passwd /etc/shadow /etc/sudoers - 找越权写入:
find /etc -type f -perm /2 -o -perm /4 | grep -E "(passwd|shadow|sudoers|sshd_config)"(匹配有写或执行位的敏感文件) - 确认属主归属:
getent group sudo查哪些用户在 sudo 组,再结合sudo -l -U username看实际能执行什么
建立基线并自动比对变更
静态检查只是一次快照,真正有效的是持续监控变化:
- 用 AIDE 初始化校验库:
aide --init,生成/var/lib/aide/aide.db.new.gz,再重命名为默认库 - 每日运行
aide --check,输出新增、删除、权限/属主/内容变更项 - 配合 auditd 捕获实时修改行为:加规则
-w /etc/shadow -p wa -k shadow_change,确保“谁在什么时候改了”可追溯 - 把 AIDE 报告和 audit 日志一起转发到远程 SIEM(如 Wazuh),自动标记“非工作时间 + 非运维账号 + 修改 shadow”等高危组合
修复后固化防护机制
修完不等于万事大吉,得防反复违规:
- 在 Ansible 或 Shell 部署脚本中,把权限设置写成强制策略,例如:
- name: Secure sudoers file; file: path=/etc/sudoers mode='0440' owner=root group=root - 给关键文件加不可移除属性:
chattr +i /etc/shadow(注意:启用前确保有应急解锁方案) - 将权限审计脚本加入
crontab,每天凌晨运行并邮件告警:0 3 * * * /usr/local/bin/audit-perms.sh | grep WARN | mail -s "Config Perm Alert" admin@domain.com - 容器环境要额外注意:宿主机的
/etc/shadow权限决定安全性,bind mount 进容器后不会自动继承容器内 UID/GID











