防范目录扫描需同步发力暴露面收敛、行为识别与响应机制:精简结构删除默认文件、禁用目录索引、统一错误响应;部署waf启用扫描防护规则并设为拦截模式;对敏感路径加访问控制或人机验证;定期自查与日志监控验证效果。

防范目录扫描不能只靠“堵”,得从暴露面收敛、行为识别和响应机制三方面同步发力。核心思路是:让扫描器找不到有效路径、扫出来也难分辨真假、扫多了直接被拦住。
精简网站结构,减少可探测入口
目录扫描依赖的是路径猜测,路径越少、命名越不常规,扫描收益就越低。
- 删除默认文件:移除 phpinfo.php、test.php、install/、backup/ 等常见测试或残留目录
- 禁用目录索引:在 Apache 中确保 Options -Indexes 生效;Nginx 中设置 autoindex off;,避免返回 403 时暴露目录结构
- 统一错误响应:所有 404 页面返回相同状态码、相似长度(如都返回 200 + 统一 HTML 模板),防止攻击者通过响应体大小/内容差异判断路径是否存在
- 隐藏技术栈痕迹:删掉 X-Powered-By 头,修改默认 Server 标识,避免泄露 PHP/Apache/Nginx 版本
部署 WAF 并启用扫描防护规则
现代 WAF(如 ModSecurity、华为云 WAF、雷池 SafeLine)都内置了针对目录遍历的专项防护能力,关键在于开启并调优。
- 启用“目录遍历防护”:识别短时间内大量返回 404 的请求模式,自动封禁源 IP(例如:60 秒内访问 50+ 不存在路径,封禁 1800 秒)
- 开启“高频扫描封禁”:不限于 404,对任意高频请求(如每秒超 15 次)触发惩罚机制,尤其针对 Dirsearch、dirmap 等工具的规律性探测
- 配置为“拦截”模式而非仅记录:初期可先观察日志,确认无业务误伤后,务必切换为拦截动作,否则防护形同虚设
- 结合 OWASP CRS 规则集:部署 owasp-modsecurity-crs,启用 REQUEST-930-APPLICATION-ATTACKS.conf 等规则,覆盖常见扫描特征(如
..%2f、etc/passwd、/admin/批量探测)
添加基础访问控制与人机验证
不是所有扫描流量都来自全自动工具,很多是半自动化或手动探测,可通过轻量级门槛过滤掉低质量扫描。
- 对敏感路径加访问控制:如 /admin/、/api/、/backup/ 等,通过 Web 服务器配置 Basic Auth 或 IP 白名单限制访问
- 引入人机验证(可选):在非登录态访问深层路径时,嵌入简单验证码或 JS 挑战(如雷池 SafeLine 的人机验证模块),能有效阻断多数扫描脚本
- 限制 User-Agent:拒绝空 UA 或明显扫描器 UA(如
DirBuster、sqlmap、gobuster),但需注意部分合法爬虫也会匹配,建议配合其他规则联合判断
定期自查与日志监控
防御效果要靠数据验证,不能只依赖配置上线就万事大吉。
- 主动模拟扫描:用 dirmap 或 dirsearch 对自己站点做授权扫描,检查是否真能发现非预期路径,验证 WAF 是否生效
- 监控 404 日志:重点关注高频 404 路径(如
/phpmyadmin/、/wp-admin/、/git/),若某 IP 短时间内集中请求,说明已在探测,需人工介入分析 - 查看 WAF 防护事件:定期导出“扫描防护”和“Web 基础防护”拦截日志,统计 Top 攻击源、触发规则、误报情况,持续优化规则阈值











