定期检查nginx目录结构安全的核心是“查权限、验路径、防越权、固基线”,需验证/etc/nginx/(755/640)、/var/log/nginx/(750)、/usr/share/nginx/html/(750)等关键目录的属主与权限,扫描alias/root配置的路径遍历风险,并通过sudo -u nginx模拟操作检验越权可能性,最后用自动化脚本实现定时巡检与告警闭环。

定期对 Nginx 目录结构做安全扫描与完整性校验,核心是“查权限、验路径、防越权、固基线”。不是只跑一遍命令就完事,而是建立可重复、可验证、可告警的闭环机制。
关键目录权限与属主一致性检查
权限错配是 403/502 故障和目录遍历漏洞的常见根源。需按最小权限原则逐项核验:
-
/etc/nginx/:必须属
root:root,目录权限为755,配置文件(如nginx.conf)应为640,禁止 world-writable -
/var/log/nginx/:建议属
root:nginx或nginx:nginx,目录权限750;access.log和error.log需确保 nginx 进程可写,但普通用户不可读 -
/usr/share/nginx/html/(或自定义 root 路径):应属
root:nginx,权限750;禁止 nginx 用户修改,仅保留读取权限
快速检查命令:ls -ld /etc/nginx /var/log/nginx && ls -l /etc/nginx/nginx.conf /var/log/nginx/*.log
路径映射与目录遍历风险扫描
重点排查 alias 和 root 指令配置是否引入路径逃逸风险:
- 检查所有
location块中是否使用了alias;若使用,确认其末尾带斜杠且 location 匹配路径也带斜杠,例如:location /static/ { alias /var/www/uploads/; } - 禁用
autoindex on,避免目录列表暴露;未关闭时,攻击者可通过/images/直接看到全部文件名 - 测试典型遍历路径:
curl -I http://your.site/static/../etc/passwd,响应应为404或403,而非200
低权限用户视角验证(最有效的实操检验)
模拟 nginx 进程真实身份,测试其能否越权访问系统资源:
- 尝试读取敏感文件:
sudo -u nginx cat /etc/shadow→ 应返回Permission denied - 尝试写入配置目录:
sudo -u nginx touch /etc/nginx/test.tmp→ 必须失败 - 尝试启动交互 shell:
sudo -u nginx /bin/bash→ 应拒绝;若成功,说明 nginx 用户未设置/sbin/nologin
自动化脚本 + 定时巡检落地
把上述检查点固化为轻量脚本,配合 cron 执行:
- 用 shell 脚本封装权限检查、路径测试、用户模拟三类动作,输出明确 PASS/FAIL 结果
- 加入简单告警逻辑:任一检查失败时,向运维群发送企业微信/钉钉消息,或写入本地告警日志
- 建议每天凌晨执行一次,也可集成进 CI/CD 流程,在配置变更后自动触发
不复杂但容易忽略——真正起效的安全机制,从来不是靠人盯,而是靠规则自动运行。











