关键路径保护需分层实施:先用chmod/chown锁定基础权限,再用auditd监控访问行为,最后靠selinux或apparmor阻断越权进程;必须优先保护/etc/shadow、/etc/passwd、/etc/group、/etc/ssh/、/boot/及suid二进制文件,并通过-w -p wa或-a always,exit -f path等规则精准审计,规则须写入/etc/audit/rules.d/并augenrules加载,selinux适用于rhel系,apparmor适用于ubuntu系。

直接结论:关键路径保护不是“加个权限就完事”,而是分层动作:先用 chmod/chown 锁死基础权限,再用 auditd 持续盯防访问行为,最后靠 SELinux 或 AppArmor 阻断越权进程——三者缺一不可。
哪些路径必须优先保护?
别从 / 开始扫。真正要盯住的是以下几类:
-
/etc/shadow、/etc/passwd、/etc/group:用户凭证核心,权限必须是640(shadow)或644(passwd),属组为shadow或root -
/etc/ssh/目录:必须drwx------(700),否则普通用户可遍历私钥文件 -
/boot/vmlinuz*、/boot/initramfs*:内核镜像和初始化内存盘,应设为600,且禁止 group/other 执行 -
/usr/bin/sudo、/bin/ping等 SUID 二进制:检查是否被篡改(ls -l /usr/bin/sudo),权限应为-rwsr-xr-x
auditd 规则怎么写才不漏报?
权限只是门锁,auditd 是摄像头。只监控读写不够,要覆盖属性变更、执行、甚至符号链接解析:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 监控
/etc/shadow的所有访问:-w /etc/shadow -p wa -k shadow_access - 监控所有 SUID 文件执行:
-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec - 监控
/boot下任意文件修改:-w /boot/ -p wa -k boot_change - 规则必须写入
/etc/audit/rules.d/下独立文件(如99-critical.rules),然后执行sudo augenrules --load - 别依赖
auditctl -w临时添加——重启后失效
SELinux 或 AppArmor 该选哪个?
不是“选一个就行”,而是看发行版和运维能力:
- RHEL/CentOS/Fedora 默认用
SELinux:setenforce 1后确认/sys/module/apparmor/parameters/enabled是N,再查sestatus确保是enabled和enforcing - Ubuntu/Debian 默认用
AppArmor:运行aa-status看 profile 是否加载;没加载就说明白写了也没用 - Web 服务(如 nginx)建议用
AppArmor白名单路径:/etc/apparmor.d/usr.sbin.nginx中明确只允许读/etc/nginx/**、写/var/log/nginx/**,禁止访问/root或/home - 数据库(如 PostgreSQL)用
SELinux类型标记:semanage fcontext -a -t postgresql_db_t "/var/lib/postgresql/data(/.*)?",再restorecon -Rv /var/lib/postgresql/data
最容易被忽略的三个细节
很多加固失败,不是因为没做,而是卡在这三点:
-
umask没全局统一:用户新建文件默认权限由umask控制,/etc/profile里没设umask 077,敏感配置一保存就变成644,谁都可读 -
/proc和/sys不是文件系统,find扫不到,但auditd能监到——比如有人用echo 1 > /proc/sys/net/ipv4/ip_forward开启转发,必须用-w /proc/sys/ -p wa捕获 - 业务进程启动后才设
oom_score_adj,但 audit 规则早该在服务定义里写死:systemd service 文件中加Audit=1和CapabilityBoundingSet=...,否则进程跑起来再补 audit 规则,中间窗口期已暴露










