云上WAF选型与配置实战:防SQL注入、防CC、防爬虫

去年一个客户,大促前被CC攻击打趴了。每秒几万次请求,CDN扛不住,源站直接崩溃。他们用了云WAF,但配置的是默认策略,阈值设太高,攻击流量没拦住,正常用户也进不来。
安全负责人说:“我们买了WAF,怎么没用?”
我问他:“策略调过吗?”
“没有,开箱即用。”
这是WAF最普遍的误区:以为买了WAF就安全了。其实默认策略只能挡最基础的攻击,不调优等于没配。
今天聊聊云上WAF选型与配置。不是那种“WAF很重要”的入门课,而是帮你理清楚:怎么防SQL注入?怎么防CC?怎么区分好爬虫和坏爬虫?
01 WAF部署模式怎么选
云WAF主要有三种部署方式。
反向代理模式:域名CNAME到WAF,WAF清洗后再转发到源站。最简单,最常用。CDN + WAF联动时,CDN先扛流量,WAF再过滤攻击。适合大部分Web应用。
透明代理模式:流量先经过WAF,不改变域名解析。需要串联在网络路径上,配置复杂。适合不能改DNS的遗留系统。
旁路监控模式:只记录不阻断,分析攻击流量。用于测试规则效果,避免误杀。
那家客户用的反向代理,但策略没调好,攻击流量打过来时,WAF自己先扛不住了。后来开启了CDN + WAF联动,CDN扛DDoS,WAF做七层清洗。
02 防SQL注入、XSS:不是开个开关就行
WAF的Web攻击防护默认开启,但有几个坑。
误报:正常请求被当成SQL注入拦截。比如用户搜索“drop table”,WAF以为要删表。解法:配置白名单,放行业务正常的URL和参数。开启“学习模式”,WAF先观察学习,再自动生成白名单。
漏报:攻击者用编码绕过(URL编码、Unicode编码)。WAF默认规则能挡大部分,但高级绕过需要开启“深度解码”。代价:性能开销增加。
文件上传防护:上传webshell,WAF要能检测。开启文件上传检测,限制上传类型,扫描内容。
那家客户遇到过搜索“1 or 1=1”被拦截。业务是正常的搜索功能,但WAF认为是SQL注入。后来把搜索URL加了白名单,解决了。
03 防CC攻击:限流不是越严越好
CC攻击是用大量合法请求耗尽服务器资源。
WAF的CC防护策略:
频率限制:同一IP每秒请求数不超过N。太严格误伤正常用户(办公楼共用IP),太宽松拦不住攻击。建议先从宽松开始,观察日志再收紧。
验证码挑战:频率超限后弹出验证码,验证通过后放行。有效拦截自动化攻击,但用户体验下降。建议只对敏感接口开启。
行为分析:机器学习识别异常请求模式(短时间大量请求、User-Agent异常、请求间隔固定)。可以减少误报。
那家客户被CC攻击时,WAF阈值设了100请求/秒,攻击峰值200,刚好没拦住。改成30请求/秒 + 验证码挑战后,攻击流量被拦截,正常用户输入验证码即可访问。
04 防爬虫:搜索引擎要放行,恶意爬虫要拦
爬虫不全是坏的。Google、百度要放行,否则SEO完蛋。
Bot管理策略:
搜索引擎爬虫:验证User-Agent,放行。但攻击者可以伪造,不能只靠UA。
恶意爬虫:特征识别(无头浏览器、异常请求频率、缺少JS执行)。拦截或限速。
API保护:API接口通常不需要爬虫访问,可启用API防护,强制带Token。
高级防爬:
动态页面:返回混淆后的HTML,爬虫解析成本高
交互式挑战:JS挑战、Cookie挑战
那家客户有商品价格被竞对爬虫抓取。开启了Bot管理后,识别出无头浏览器请求,返回假数据(价格+5%),竞对爬走了错误数据。
05 日志与告警:被攻击了要知道
WAF不只看拦截,还要看告警。
关键告警:
单IP触发CC阈值
同一URL被多种攻击尝试(SQL注入、XSS、命令注入)
异常请求量突增
日志分析:
定期检查误报,调整白名单
分析攻击来源IP,加入黑名单
识别攻击模式(扫目录、撞库、暴力破解)
那家客户被攻击时,WAF日志里有大量SQL注入尝试。他们没看日志,以为只是CC攻击。后来加了告警,攻击开始5分钟就收到通知,立即调整策略。
06 一个真实案例:策略调优救了双11
一个电商客户,双11前配置了WAF,默认策略。我们做了几件事:
SQL注入/XSS:开启学习模式,生成白名单,减少误报
CC攻击:阈值从100降到30,开启验证码挑战
爬虫:搜索引擎放行,恶意爬虫返回假价格
告警:配置钉钉通知,CC攻击触发时立即告警
双11当天,凌晨出现一波CC攻击,WAF触发了阈值,自动弹出验证码。攻击流量被拦截,正常用户验证后继续访问。损失几乎为零。
安全负责人说:“以前觉得WAF开着就行,现在知道,调和不调,差别巨大。”
写在最后
WAF不是开箱即用。默认策略只能挡脚本小子,真正的攻击要靠调优。
那家客户的安全负责人后来总结:“SQL注入配白名单,CC限流要带验证码,爬虫区分好与坏,日志告警不能少。”
你的WAF,配对了吗?