linux敏感目录安全加固核心是“改得准、审得全、锁得住”,即统一权限基线(如/etc设750、/root设700)、auditd细粒度审计chmod等操作、chattr+i锁定关键文件、并建立自动化权限比对告警闭环。

核心是“改得准、审得全、锁得住”——权限变更本身不是目的,确保每次修改可追溯、有依据、不被绕过才是关键。
一、锁定敏感目录范围并统一权限基线
先明确哪些目录属于“全局敏感”:/etc、/usr/bin、/usr/sbin、/var/log、/root、/home/*/.ssh、/boot、/proc/sys等。这些目录一旦被非授权写入或执行,极易引发提权、持久化或日志擦除。
- 对目录本身设为750(属主读写执行、属组读执行、其他无权限),例如:chmod 750 /etc /var/log
- 对配置文件统一设为640(属主读写、属组读、其他无权限),如chmod 640 /etc/shadow /etc/passwd(注意:passwd 可读,shadow 必须仅 root 可读)
- /root 和 /home/*/ 目录必须为700;/home/*/ssh 必须为700,authorized_keys 必须为600,否则 SSH 服务可能拒绝登录
二、启用细粒度审计并捕获所有权限操作
仅靠 chmod 命令记录远远不够。必须用 auditd 持续监控 chmod、chown、chgrp、setfacl 等系统调用:
- 添加审计规则(写入 /etc/audit/rules.d/privileged.rules):
-a always,exit -F path=/bin/chmod -F perm=x -k perm_change
-a always,exit -F path=/usr/bin/chmod -F perm=x -k perm_change
-w /etc -p wa -k etc_access
-w /home -p wa -k home_access - 重启 auditd:systemctl restart auditd
- 验证是否生效:auditctl -l | grep perm_change
三、封禁高危权限变更行为(主动防御)
审计是事后追踪,封禁是事前阻断。对非必要场景应直接限制工具使用:
- 用 chmod 750 /bin/chmod 并将属组设为 wheel 或 admin,再通过 sudoers 严格限定谁可用:
Cmnd_Alias PERM_CMD = /bin/chmod *, /bin/chown *, /usr/bin/chgrp *
%admin ALL=(ALL) NOPASSWD: PERM_CMD - 禁止普通用户执行 setuid 工具(如 /usr/bin/sudo 若非必需):chmod u-s /usr/bin/sudo,并检查残留:find /usr -type f -perm -4000 2>/dev/null
- 对 /etc/passwd、/etc/shadow 等关键文件启用不可变属性:chattr +i /etc/passwd /etc/shadow(需 root 权限,修改前先 chattr -i)
四、建立自动化巡检与告警闭环
人工检查易遗漏,应每日自动比对权限快照并触发告警:
- 生成基准快照(首次运行):find /etc /usr/bin /var/log -type d -printf "%M %p\n" | sort > /etc/perm_baseline.txt
- 每日定时比对(加入 cron):find /etc /usr/bin /var/log -type d -printf "%M %p\n" | sort | diff -q /etc/perm_baseline.txt - || echo "⚠️ 权限异常,请检查" | mail -s "Perm Alert" admin@local
- 配合 aureport -m -ts today | grep perm_change 提取当日所有权限操作,筛选非白名单来源 IP 或用户











