Others执行权限开放会使攻击者绕过Web服务器用户边界直接运行恶意程序监听端口,而设为750(drwxr-x---)可阻止others执行,配合禁用危险函数、上传目录隔离及网络限制等措施,能有效削弱Webshell落地与持久化能力。

限制Web根目录的Others执行权限,不能直接阻止Webshell开启后门端口,但能显著削弱其落地条件和持久化能力——因为多数Webshell依赖在Web可访问路径下写入并执行恶意脚本(如PHP、Shell文件),而Others执行权限(x)一旦开放,可能让非Web服务用户(如攻击者已提权的低权限账户)绕过web服务器用户(如www-data)边界,直接运行恶意二进制或解释型后门。
为什么Others执行权限与后门端口相关
黑客上传Webshell后,常分两步扩大控制面:
- 第一步:利用Webshell写入并执行本地程序(如
nc、python -m http.server、自编译反弹shell),监听端口建立反向连接; - 第二步:若Web根目录(如
/var/www/html)对others设置了755(即rwxr-xr-x),则other用户可直接chmod +x并./malware运行——哪怕该文件属主不是web用户; - 若目录权限为
750(即rwxr-x---),others无任何权限,即使文件被写入,也无法执行,更无法监听端口。
关键操作:收紧Web根目录的Others权限
执行以下命令,确保Web根目录不向others开放执行(x)或写入(w)权限:
-
chmod 750 /var/www/html(推荐:owner可读写执行,group可读执行,others无权限) - 若需兼容部分静态资源访问,可设为
755,但必须配合后续措施; - 禁止对Web根目录递归开放
o+x:find /var/www/html -type d -perm -o+x -exec chmod o-x {} \; - 检查并清理已存在的others可执行文件:
find /var/www/html -type f -perm -o+x -ls,删除或修复权限。
必须同步落实的配套防护
单靠目录权限不够,需组合生效:
-
禁用危险函数:在
php.ini中禁用exec、system、proc_open等,阻断Webshell调用系统命令启动端口监听进程; -
关闭上传目录执行权限:将
upload/等用户可写目录挂载为noexec,或用open_basedir隔离,且目录权限设为755但文件权限设为644(不可执行); -
限制网络监听能力:通过
iptables或nftables默认拒绝非必要端口出向连接,并禁止非特权用户绑定1024以下端口; - 启用SELinux/AppArmor:配置策略禁止Apache/Nginx进程执行非白名单路径下的二进制文件,从内核层拦截异常执行行为。
验证是否真正生效
完成配置后,模拟攻击者视角测试:
- 以普通用户(非
www-data)身份尝试在/var/www/html下创建并执行脚本:echo '#!/bin/sh' > test.sh && chmod +x test.sh && ./test.sh→ 应提示Permission denied; - 检查
ps aux | grep -E ':(8080|9999|4444)'等常见后门端口是否仍有非预期进程; - 用
ls -ld /var/www/html确认权限为drwxr-x---,且属组为www-data或对应服务组。

















