核心是通过chmod/chown限权、chattr+i设不可变、auditd审计调用、selinux/ apparmor强制控制及定期校验告警来保护敏感二进制文件。

锁定敏感二进制文件的执行与修改权限
核心思路是通过 chmod 和 chown 限制非授权用户访问,同时启用 immutable 属性(chattr +i) 防止任何用户(包括 root)意外或恶意修改。常见敏感二进制包括 /bin/su、/usr/bin/sudo、/bin/ping、/usr/bin/passwd 等。
操作步骤如下:
- 确认文件当前权限:
ls -l /usr/bin/sudo,检查是否为-rwsr-xr-x(带 setuid)且属主为 root - 收紧写权限:
sudo chmod 755 /usr/bin/sudo(移除 group/other 的写权;若已为 755 则跳过) - 设为不可变(需 root 权限):
sudo chattr +i /usr/bin/sudo—— 此后连 root 也无法修改、删除或重命名该文件 - 如需后续维护,先解除:
sudo chattr -i /usr/bin/sudo,操作完成再重新加锁
启用文件系统级审计(auditd)监控关键二进制调用
Linux audit subsystem 可记录谁、何时、以何种参数执行了敏感程序。这比仅靠日志更可靠,不依赖应用自身日志机制。
配置方法:
- 确保 auditd 运行:
sudo systemctl enable --now auditd - 添加审计规则(永久生效需写入
/etc/audit/rules.d/):-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 - 重载规则:
sudo augenrules --load或sudo auditctl -R /etc/audit/rules.d/*.rules - 查询审计日志:
sudo ausearch -k sudo_exec | aureport -f -i查看所有 sudo 执行记录
结合 SELinux/AppArmor 实施强制访问控制(MAC)
即使文件权限被绕过(如通过动态链接库注入或 ptrace),MAC 能从策略层阻止非法行为。以 SELinux 为例:
- 确认 SELinux 启用且为 enforcing 模式:
sestatus - 查看敏感程序的上下文:
ls -Z /usr/bin/sudo,应为system_u:object_r:sudo_exec_t:s0 - 确保其执行域受限:默认策略已限制
sudo_exec_t只能被staff_t、sysadm_t等特定域调用,普通用户域(如user_t)无法触发 - 如需自定义策略,用
audit2allow分析拒绝日志生成新规则,避免盲目放宽策略
定期校验与告警机制建设
权限和属性可能被清除,需自动化检测异常变更。
- 用
rpm -V(RHEL/CentOS)或dpkg --verify(Debian/Ubuntu)验证系统包完整性:sudo rpm -V sudo coreutils util-linux—— 输出非空表示文件被篡改或权限变动 - 编写简单脚本检查 immutable 属性:
for bin in /usr/bin/sudo /bin/su; do [[ $(lsattr "$bin" | awk '{print $1}') == *i* ]] || echo "MISSING IMMUTABLE: $bin"; done - 将校验任务加入 cron,异常时通过 mail 或 syslog 发送告警










