WAF配置拦截海外SQL注入XSS跨站恶意攻击
如果你正在寻找WAF配置拦截海外SQL注入、XSS跨站恶意攻击的方法,核心思路是:先启用WAF的规则引擎,再开启地域封禁或IP信誉库,最后结合日志验证拦截效果。
零基础用户建议优先使用宝塔面板或云服务商自带的WAF,无需自己编译,按本文步骤操作,20分钟内可以完成基础防护部署。
配置前先做好这几项准备
开始配置WAF之前,你需要确认以下条件:
- 网站已经部署在服务器上,并且能正常访问。如果还没部署,建议先完成网站上线再做防护。
- 你拥有服务器的管理权限,例如宝塔面板、云控制台或SSH登录权限。
- 确认你的服务商是否提供WAF。如果你使用的是泽御云这类正规云服务商,可以在控制台查看是否有“Web应用防火墙”或“安全组”相关功能;也可以直接在宝塔面板中安装“Nginx防火墙”插件。
- 备份网站配置文件,尤其是
.conf或.htaccess文件,防止配置出错导致网站无法访问。
让WAF规则真正挡住海外恶意流量
这里以宝塔面板的“Nginx防火墙”为例,流程同样适用于其他云WAF。
第一步:开启基础防护规则
在宝塔面板左侧菜单找到“安全”-“Nginx防火墙”,打开“CC攻击防护”、“SQL注入防护”、“XSS防护”、“路径扫描防护”等开关。
这些规则集已经内置了常见的攻击特征,可以拦截大部分基础SQL注入和XSS跨站脚本。
第二步:配置地域封锁
对于目标用户不在海外的网站,建议直接封禁已知的高风险地域。
在防火墙设置中找到“地区限制”,把不需要访问的地区加入黑名单。
注意这里只能按国家/地区维度封禁,无法精确到街道。
如果网站要正常服务海外用户,则不要开启,改为依靠IP信誉库。
第三步:添加自定义规则
如果默认规则识别不到某些变体攻击,可以手动添加。
在“全局过滤”或“自定义规则”中,添加以下两条常见防御规则:
# 拦截常见SQL注入关键字
if ($query_string ~* "(union\s+select|sleep\s*\(|benchmark\s*\()") { return 403; }
# 拦截XSS弹窗脚本
if ($query_string ~* "(
添加后重启Nginx或点击“重载配置”使其生效。
第四步:启用IP黑名单
在“恶意IP”或“IP黑名单”中,可以手动添加通过攻击日志发现的IP。
更高效的方式是开启“自动封禁频繁攻击的IP”,通常设置为1分钟内请求次数超过60次,就自动封禁该IP 24小时。
这些坑一定要避开
- 不要把地域封禁当成全部:地域封禁只能挡住来自特定地区的流量,但攻击者可能使用代理或云端跳板。必须与规则拦截、IP信誉库同时使用。
- 误杀正常用户:设置过于严格的频率限制或自定义规则,可能导致正常访问被拦截。建议先开启“观察模式”或“日志模式”运行24小时,确认没有问题后再切换到“拦截模式”。
- 忽略HTTPS站点:如果你使用的是HTTPS,WAF必须能解密流量才能检查内容。宝塔Nginx防火墙可以通过“SSL”开关自动处理,云WAF则需要在控制台上传证书或选择“代理模式”。
- 忘记更新规则库:攻击特征每天在变,定期点击防火墙的“更新规则库”按钮,确保新变体能被识别。
怎么确认规则真的生效了
配置完成后,不能只看开关状态,要实际验证。
验证方法1:手工模拟攻击
在浏览器或命令行中访问你的域名,并拼接攻击参数:
curl "https://你的域名/?id=1' UNION SELECT 1,2,3--"
如果WAF生效,你会收到403、405或444状态码,返回页面提示“已被WAF拦截”。
curl "https://你的域名/?search="
同样,如果返回拦截页面,说明XSS防护正常。
验证方法2:查看WAF日志
在宝塔防火墙的“攻击日志”中,可以看到刚才模拟请求的拦截记录,包含来源IP、攻击类型、命中的规则。
如果日志为空,说明你的WAF没有开在正确路径上,检查网站是否加入了WAF防护域名。
高频问题解答
Q1:我的网站经常被海外IP扫描,如何快速减少这种噪音?
开启地区限制,把流量访问量极低但攻击量大的国家加入黑名单。
同时开启自动封禁,让WAF自动处理短时高并发请求。
Q2:WAF会不会影响网站访问速度?
有一定影响,但影响很小。
宝塔Nginx防火墙默认使用内存缓存,大并发时会有毫秒级额外消耗。
如果感觉很慢,检查是否开启了过多“全局过滤”复杂正则,优先使用系统自带的规则集。
Q3:云服务商的WAF和宝塔防火墙哪个更好?
两者定位不同。
云服务商的WAF(例如泽御云企业客户常用的高防+WAF方案)通常在云端过滤,不占用服务器资源,适合高防场景;
宝塔防火墙部署在服务器本地,免费、可自定义性强,适合轻量级站点。
如果业务规模较大,建议两类结合使用。
Q4:配置WAF后我的网站打不开了怎么办?
先暂停WAF的“全局拦截”,改为“日志模式”,确认是规则误杀。
然后查看攻击日志中的命中记录,把对应规则设置为仅记录或关闭。
记得检查Nginx配置语法nginx -t,错误时执行systemctl reload nginx恢复最后正确的配置。
如果你正在处理WAF配置拦截海外SQL注入、XSS跨站恶意攻击,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
日常运维中记得定期查看WAF日志和规则库更新,才能让防护不落空。