攻击者通过简单的
../../组合,就能读取你服务器上的配置文件、数据库密码、甚至源代码——这就是目录遍历攻击,也叫路径穿越。它是Web安全中最常见的高危漏洞之一,攻击者利用它来探测网站结构、扫描敏感文件、窃取核心数据。今天我们就来聊聊,如何用百度云防护WAF构建从“自动拦截”到“精准打击”的完整防御体系。
一、 目录遍历攻击是什么?为什么防不住?
目录遍历(Directory Traversal/Path Traversal)是指攻击者通过操纵URL中的路径参数,使用../或..\等字符“跳出”当前目录,访问服务器上本不应被公开的敏感文件。
典型攻击手法
| 攻击目标 | 恶意URL示例 |
|---|---|
| 读取密码文件 | ?page=../../../../etc/passwd |
| 读取数据库配置 | ?file=../../config/database.php |
| 读取备份文件 | ?path=../backup.sql |
| 编码绕过 | ?page=..%252f..%252f..%252fetc/passwd(双重URL编码) |
为什么传统防护防不住?
- 变体极多:攻击者可以组合
../、..\、URL编码、双重编码、Unicode编码等多种形式,传统的关键词匹配很难覆盖全部。 - 正常业务混淆:某些合法的文件管理功能确实需要路径跳转参数,简单封禁
../会误伤正常业务。 - 慢速扫描:攻击者使用大量代理IP,每个IP只发少量请求,传统的频率限制难以识别。
二、 百度云防护“多层防御”体系
百度云防护WAF针对目录遍历攻击提供了四个层次的防护,层层递进,既能高效拦截攻击,又能避免误伤正常业务。
第一层:基础Web防护引擎(开箱即用)
接入域名后,WAF的基础Web防护引擎默认开启,目录遍历(路径绕过) 是其核心检测能力之一。引擎基于百度云安全AI分析能力,能够自动识别并拦截包含路径穿越特征的恶意请求。
操作路径:
登录百度云防护控制台 → 防护配置 → Web防护 → Web基础防护
防护等级建议:
- 中级策略集(默认):满足大多数场景,推荐日常使用
- 高级策略集(严格):防护粒度更精细,可拦截复杂绕过特征,建议业务稳定后开启
处置动作:
- 拦截:命中规则的请求立即阻断,返回403
- 观察:只记录不拦截,适合新业务试运行,确认无误后再改为拦截
第二层:自定义规则(正则精准打击)
基础引擎可能漏掉一些变种攻击,或者你需要更精细的控制。百度云防护的自定义规则现已全面支持正则表达式匹配,一条规则就能覆盖数十种攻击变体。
配置入口
登录控制台 → 安全防护 → 自定义规则 → 添加规则
推荐规则1:拦截路径穿越符号(一条规则防全部)
| 配置项 | 内容 |
|---|---|
| 规则名称 | 阻断目录遍历攻击 |
| 匹配字段 | URI Path |
| 操作符 | 正则匹配 |
| 匹配内容 | (\.\./|\.\.\|\.\.[0-9a-f]%|\.\.%5c|\.\.[/\\]\.\.) |
| 处置动作 | 拦截 |
这条规则能够匹配../、..\、URL编码后的%2e%2e%2f、双重编码等各类变体。
推荐规则2:拦截敏感备份文件扫描
| 配置项 | 内容 |
|---|---|
| 规则名称 | 拦截敏感文件扫描 |
| 匹配字段 | URI |
| 操作符 | 正则匹配 |
| 匹配内容 | \.(bak|old|backup|swp|sql|tar\.gz|zip|rar|conf|log)$ |
| 处置动作 | 拦截 |
攻击者常用DirBuster等工具扫描备份文件,这条规则可以一网打尽。
推荐规则3:拦截参数中的路径遍历
| 配置项 | 内容 |
|---|---|
| 规则名称 | 拦截参数路径穿越 |
| 匹配字段 | Query String Parameter(参数名如file、page、path) |
| 操作符 | 正则匹配 |
| 匹配内容 | \.\.[\\/] |
| 处置动作 | 拦截 |
针对常见的动态参数(如?file=、?page=、?path=),专门拦截其中的路径穿越符号。
第三层:精准自定义CC防护(压制慢速扫描)
如果攻击者使用大量代理IP慢速扫描目录,传统的频率限制可能失效。此时可以用精准自定义CC对特定扫描行为进行限频。
推荐配置:限制对文件参数的高频探测
| 配置项 | 内容 |
|---|---|
| 防护类型 | 精准自定义CC |
| 匹配条件 | Query String Parameter(如file、page、path) |
| 统计对象 | IP |
| 统计时长 | 60秒 |
| 阈值 | 20次 |
| 处置时长 | 300秒 |
| 处置动作 | JS挑战或拦截 |
为什么有效:正常用户极少在短时间内对同一个动态参数发起数十次请求,而目录遍历扫描工具却会对一个参数疯狂尝试不同的路径组合。通过限频规则,可以高效压制扫描流量。
第四层:白名单与IP地址簿(防止误伤)
如果你的业务确实需要合法的路径跳转(比如某些文件管理接口必须接收../参数),必须通过白名单来规避误拦。
方案一:按IP放行(适用于内网或合作伙伴)
- 创建IP地址簿,将公司出口IP、合作伙伴回调IP等加入
- 在自定义规则中引用该地址簿,匹配条件设为IP属于地址簿,处置动作设为放行
方案二:按路径豁免(适用于特定接口)
| 配置项 | 内容 |
|---|---|
| 匹配字段 | URI Path |
| 逻辑符 | 前缀匹配 |
| 匹配内容 | /legacy/file-manager/ |
| 处置动作 | 放行(并勾选“跳过检测模块”) |
三、 服务器端配合加固(双重保险)
除了WAF层面的防护,服务器配置同样重要。
Nginx配置加固
location ~* \.(php|conf|sql|bak|old|log)$ {
deny all;
}
# 防止 alias 使用不当导致的路径遍历
location ^~ /download/ {
alias /var/www/files/;
disable_symlinks on;
if ($uri ~* "\.\./|\.\.") {
return 403;
}
autoindex off;
}
核心要点:
- 使用
^~前缀匹配,优先级高于正则匹配,防止其他location干扰 - 启用
disable_symlinks on;防止符号链接绕过 - 用正则过滤
\.\./和\.\.,拦截原始和编码后的路径遍历 - 设置
autoindex off;禁止目录列表,防止信息泄露
Apache配置加固
<Directory "/var/www/html">
Options -Indexes
php_admin_value open_basedir /var/www/html
</Directory>
# 使用mod_rewrite拦截路径遍历
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} "@rx \.\." [NC]
RewriteRule .* - [F]
# 禁用.htaccess文件覆盖
<Directory />
AllowOverride None
</Directory>
robots.txt辅助(非安全手段)
在/robots.txt中屏蔽搜索引擎对敏感目录的抓取,但这只是“君子协定”,恶意爬虫不会遵守:
User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /config/
Disallow: /data/
重要提醒:robots.txt不能作为安全防护措施,仅供搜索引擎管理使用。
四、 完整配置清单
| 防护层次 | 配置要点 | 目的 |
|---|---|---|
| 基础引擎 | Web基础防护 → 高级策略集 | 自动拦截已知路径遍历攻击 |
| 自定义规则(正则) | 正则匹配 (\.\./|\.\.\\) | 拦截所有路径穿越变体 |
| 自定义规则(后缀) | 正则匹配 \.(bak|sql|conf)$ | 拦截敏感备份文件扫描 |
| 精准CC | 对 file/page 等参数限频 | 压制慢速扫描流量 |
| 白名单 | 合法业务路径或IP设为放行 | 避免误伤正常业务 |
| 服务器加固 | Nginx/Apache禁用目录列表、过滤../ | 双重保险 |
| robots.txt | 屏蔽敏感目录抓取 | 辅助(非安全手段) |
五、 验证防护效果
配置完成后,务必进行验证:
- 查看攻击日志:在百度云防护控制台的【攻击详情】中筛选被拦截的路径遍历请求,确认规则生效。
- 测试路径遍历:尝试访问
https://你的域名/../../../../etc/passwd,应返回403或被拦截。 - 测试备份文件扫描:尝试访问
https://你的域名/config.php.bak,应被拦截。 - 检查误报:观察是否有正常请求被误拦,如有,及时添加白名单。
六、 主机吧小结
目录遍历攻击虽然手法多样,但百度云防护WAF提供了从“基础引擎自动拦截”到“正则精准打击”再到“CC限频压制”的完整防御链路。合理配置上述规则,可以有效拦截99%以上的目录遍历扫描,同时确保正常业务不受影响。
如果你还在为目录遍历攻击发愁,或者想为网站做一次全面的安全体检,欢迎联系主机吧。我们提供免费安全评估和配置指导,助你构建从WAF到服务器的立体防线。
主机吧 | 百度云防护官方合作伙伴
提供WAF接入、高防CDN、高防IP、高防服务器、SSL证书一站式服务
让每一次路径遍历都无处遁形,让每一台服务器都固若金汤。


