Web服务器关键服务账户必须以最小权限运行:禁用登录(Linux设nologin/false,Windows取消本地及远程桌面登录)、限定文件访问(根目录仅rx、上传目录仅rw且noexec、配置文件由root管理)、剥离adm/sudo等高危组、中间件同步配置user指令并禁用危险功能。

Web服务器关键服务账户一旦拥有过高权限,就可能成为越权执行的跳板——攻击者通过WebShell、日志注入或配置缺陷获得初始立足点后,若该账户能登录、执行命令、读取敏感配置或属于高危组,提权几乎不可避免。防范核心不是“加锁”,而是让账户本身就不具备越权能力。
创建专用低权账户,杜绝复用与共享
禁用系统默认账号(如www-data、apache、IIS_IUSRS),避免与其他服务共用身份。应新建专属用户和组:
- Linux示例:
groupadd webproc && useradd -r -s /usr/sbin/nologin -g webproc webproc - Windows示例:在“计算机管理→本地用户和组”中新建用户
websvc,取消勾选“允许本地登录”和“通过远程桌面服务登录” - 确保该账户无家目录(或家目录为空且权限为700),防止缓存、SSH密钥或shell历史被利用
严格限制账户登录与交互能力
服务账户必须丧失交互式操作入口:
- Linux下确认
/etc/passwd中对应行的shell字段为/usr/sbin/nologin或/bin/false - 禁止该账户使用
sudo、su或任何提权机制;检查sudo -l -U webproc应返回“no sudoers entry” - 移除对
/bin/sh、/usr/bin/python3等解释器的执行权限(如chmod 750 /bin/sh并确保webproc不在其所属组)
目录权限分治:写≠执行,读≠遍历
权限边界必须物理隔离,不能仅靠代码逻辑控制:
- 网站根目录(如
/var/www/html):仅webproc可读+执行(rx),组和其他用户无权限 - 上传目录(如
/var/www/upload):设为rw-,且挂载noexec,nosuid,nodev(Linux需在/etc/fstab中配置) - Nginx/Apache配置中显式拒绝脚本执行:
location ~ \.(php|sh|py|pl|jsp)$ { deny all; } - 关闭目录浏览:
autoindex off;(Nginx)、Options -Indexes(Apache)
中间件与运行时同步降权
账户降权必须贯穿整个调用链,否则形同虚设:
- Nginx主配置中明确声明:
user webproc webproc; - PHP-FPM的
www.conf中设置:user = webproc、group = webproc,禁用php_admin_flag类可覆盖指令 - IIS应用池“高级设置→标识”必须指定为
websvc,严禁使用Local System或ApplicationPoolIdentity - 数据库连接账号也需最小化:仅授予
SELECT/INSERT必要表,禁用FILE、LOAD DATA等高危权限

















