核心目标是防止攻击者替换或篡改Web应用关键二进制组件以实现持久化或提权;需识别关键路径文件(如nginx、httpd、startup.sh等),通过chmod 755、chattr +i、专用属主、noexec挂载、IMA校验、systemd保护及auditd审计等多层措施实施权限加固与完整性防护。
对 Web 应用关键二进制组件实施权限加固,核心目标是防止攻击者通过替换、篡改可执行文件(如 Web 服务器二进制、应用启动脚本、中间件守护进程、自定义编译模块等)实现持久化或提权。这类替换攻击常见于已失陷主机的横向移动阶段,尤其在缺乏完整性保护和最小权限约束的环境中高发。
先明确哪些文件属于“关键二进制”:不是所有可执行文件都需同等防护,重点应覆盖直接参与请求处理链路的底层组件:
/usr/sbin/nginx、/usr/local/apache2/bin/httpd)/opt/tomcat/bin/startup.sh、/usr/bin/java 若被硬编码调用).so 动态模块、Apache 的 .so DSO)/var/www/app/start.sh、/opt/myapp/bin/server)使用 find / -type f -perm -u+x 2>/dev/null | xargs ls -l 初筛后,结合进程树(ps auxf)和启动单元(systemctl cat nginx.service)交叉验证真实路径。
仅靠 chmod 不足以防御替换,必须组合属主、权限位与扩展属性:
www-data:root),禁止普通运维账号写入chmod 755 /usr/sbin/nginx;对配置目录保留 750,但二进制本身严禁 g+w 或 o+w
chattr +i)——适用于确认不再更新的稳定版本组件,例如:sudo chattr +i /usr/sbin/nginx
.so),限制其所在目录仅 root 可写,并设置 noexec 挂载选项(mount -o remount,noexec /usr/lib/nginx/modules)权限控制可被 root 绕过,因此需叠加运行时完整性保障:
tcb),使内核在加载二进制前校验其哈希值,并记录到 /sys/kernel/security/ima/ascii_runtime_measurements
bpftool)监控 execve 系统调用,对非白名单路径的执行行为实时告警ProtectSystem=strict 和 ProtectHome=yes,阻止服务进程修改关键系统路径read-only-root-fs 并将二进制挂载为只读卷(ro,bind)加固不是一次操作,而是持续验证的过程:
auditd 监控关键路径:-w /usr/sbin/nginx -p wa -k nginx_binary,捕获任何 write/attribute 修改事件sha256sum /usr/sbin/nginx >> /var/log/bin-hash.log),与基线库比对不复杂但容易忽略的是:很多团队加固了 Web 目录,却放任 /usr/bin/curl 或 /bin/sh 被替换——这些虽非 Web 应用专属,却是攻击者常用来维持 shell 的跳板。权限加固必须覆盖整个执行链上所有可被滥用的二进制节点。