外贸站宝塔面板WAF规则拦截海外恶意请求实操指南
外贸站面向全球客户,但也因此成为海外恶意扫描、爬虫和CC攻击的重点目标。
大量无效请求不仅拖慢服务器响应,还可能导致带宽耗尽甚至被强制关停。
本文会从零开始,教你用宝塔面板自带的WAF功能,自定义规则拦截海外恶意请求,实现精准防护。
外贸站为何需要拦截海外恶意请求
外贸站的目标用户虽然在全球,但绝大多数正常流量来自少数几个目标国家。
而来自其他地区的请求,很多是扫描工具、恶意爬虫或攻击脚本。
如果不加区分地全部放行,服务器日志会被刷爆,CPU和内存占用居高不下,甚至影响真实客户访问。
利用宝塔面板WAF的自定义规则,可以基于IP地域、User-Agent(用户代理)、请求路径等特征,直接拒绝恶意请求,而不是等它们到达PHP程序再处理。
开始前请确认这些条件
在配置规则之前,请确认以下三点:
- 宝塔面板已安装并绑定网站 – 确保你已经在宝塔后台添加了外贸站,并且网站能正常访问。
- WAF功能已开启 – 登录宝塔面板,进入“网站”->找到目标站点->点击“设置”->选择“WAF”选项卡,确认“WAF状态”为“已开启”(默认是开启的)。如果未开启,直接点击开关即可。
- 知道目标用户所在的地区 – 比如你的外贸站主要面向欧美客户,那么可以放行美国、英国、德国等地区,而拦截来自俄罗斯、印度、巴西等非目标地区的请求。
小提示:如果你不确定应该拦截哪些地区,可以先开启WAF的“日志”模式,观察一段时间,根据实际请求来源制定规则。
宝塔面板WAF规则配置三步走
第一步:创建IP地域拦截规则
宝塔面板WAF支持基于IP地理位置的拦截,这是最直接的方式。
操作路径:
- 在网站设置页面,点击“WAF”选项卡。
- 找到“自定义规则”区域(通常在“全局规则”下方),点击“添加规则”。
- 规则类型选择“IP地区”。
- 在“地区”选择框中,勾选你想要拦截的国家或地区。建议先从恶意请求较多的国家开始,比如俄罗斯、乌克兰、印度、巴西、越南等。
- 动作选择“拦截”,然后填写规则名称,例如“block-overseas-malicious”。
- 点击“添加”保存。
如果后续发现误拦截,可以在规则列表里删除或调整地区。
第二步:基于User-Agent拦截常见爬虫
很多海外恶意请求会伪造UA(User-Agent),但也有一些固定特征,比如扫描工具的UA通常带有“curl”、“python-requests”、“Go-http-client”等关键词。
你可以利用WAF的自定义规则拦截这类请求。
操作路径:
- 在“自定义规则”中点击“添加规则”。
- 规则类型选择“User-Agent”。
- 匹配方式选择“包含”,然后在内容框中输入特征词,例如
curl。 - 动作选择“拦截”。
- 如果你想拦截多个UA,可以创建多条规则,或者使用正则(需要勾选“正则匹配”)。一个简单的正则:
(curl|python-requests|Go-http-client|Scrapy)。 - 点击“添加”保存。
注意:如果你的外贸站正常业务用到了curl(比如API回调),需要先排除自己的服务器IP,否则会把自己也拦掉。
第三步:设置频率限制(选做)
如果恶意请求来自少量IP但很高频,可以直接在WAF中设置“频率限制”。
操作路径:
- 在WAF设置页面找到“频率限制”板块。
- 设置周期(比如60秒)和请求次数阈值(比如60秒内超过300次)。
- 动作选择“拦截IP”或“封禁IP”。
- 点击保存。
这个功能可以防御短时间内大量请求的CC攻击,但需要根据你网站正常用户的访问习惯调整阈值,避免误伤。
容易踩的坑和解决方法
1. 误拦截正常客户
现象:配置IP地域拦截后,有海外客户无法访问网站。
原因:可能你拦截的地区正好包含目标客户。
解决:先开启WAF的“日志”模式(不拦截只记录),观察一段时间,确认哪些地区的请求正常,再调整拦截列表。或者改为“只放行”目标地区,其他全部拦截。在宝塔WAF中,可以创建一条“IP地区”规则,动作选择“放行”,地区勾选你的目标国家,然后将这个规则的优先级调高(放在最前面)。
2. 规则不生效
现象:配置了规则,但海外请求依然能访问。
原因:可能WAF功能本身未开启,或者规则没有应用到当前站点(特别是如果开启了CDN)。
解决:首先确认网站设置首页的“WAF状态”是开启的。如果使用了Cloudflare等CDN,需要在CDN处传递真实IP,否则宝塔看到的是CDN节点IP,无法正确判断地域。可以在宝塔面板“网站”->“设置”->“反向代理”中配置“获取真实IP”或使用Nginx的realip模块。
3. 频率限制导致用户误封
现象:正常用户频繁操作后突然被拦截。
原因:阈值设置太低。
解决:临时调高阈值或直接关闭频率限制,观察日志中正常用户的请求数,再合理调整。
如何确认规则已生效
配置完成后,可以通过以下方式验证:
方法一:查看WAF拦截日志
在宝塔面板“网站”->“设置”->“WAF”->“日志”中,可以看到所有被WAF拦截的请求记录,包括时间、IP、UA、规则名称等。
如果配置了IP地域拦截,日志中会显示“地区拦截”或你设置的规则名称。
方法二:用curl模拟被拦截的请求
拿一台不在你放行区域的服务器,执行以下命令访问你的网站:
curl -I https://你的域名
如果返回 403 Forbidden 或类似状态码,说明拦截规则生效。
如果返回 200,则说明请求未被拦截,需要检查规则设置。
方法三:浏览器访问并查看开发者工具
用一个处于被拦截区域的代理(比如VPN),在浏览器中访问你的网站。
如果页面显示空白或提示“访问被拒绝”,同时浏览器开发者工具(F12)中看到HTTP状态码为403,说明拦截成功。
如果你正在处理外贸站宝塔面板WAF规则拦截海外恶意请求,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
持续观察WAF日志,逐步优化规则,让服务器远离无效流量,专注服务真实客户。