白嫖CDN免费WAF,省了三千块,结果数据库炸了
前几天群里有个兄弟问我,说他想白嫖CDN又能防CC,问我CloudFront有没有免费WAF。我当时翻了个白眼:AWS那免费层是骗人的,WAF规则写抽风了照样扣钱。但我这种穷鬼肯定不甘心,搜索了一圈发现CloudFlare Pro每个月20刀太贵,阿里的价格也是秒人。
然后我就盯上了AWS的CloudFront + Lambda@Edge组合方案。网上教程都说可以自建免费WAF?拉倒吧,建什么瓦?我折腾了两天,最后用CloudFront的custom origin反代Nginx,再把nodejs写的验证函数搁Lambda那。这玩意有个配置路径/var/log/nginx/real-ip.log(加了realip模块),我在坑里待了五小时就为了配真实IP。
免费的那个验证逻辑我写的是:请求头如果没有自定义token(比如x-real-ip的前三位哈希),直接403。我以为稳了。结果深夜收到客户报错——后台管理面板打不开了!一查原因是自己的API来源IP被当成恶意流量拦了。我淦!我忘记豁免API子域名了。操蛋的if () 写成了 “X-Forwarded-For” 开头不是我的办公室公网IP就限制地区然后放行,结果公司宽带公网v6也过滤了。我只好自己改安全组规则再写一段real IP白名单。
这里面还有个恶心点:Lambda的冷启动。新访客常常要等2秒才能显示页面,用户直接以为网站挂了。

另外CloudFront免费的SSL证书只能绑定自带域名,不能乱贴野卡。可我想自签证书嘛,但cf那边要求跟Custom Headers一起弄会很蛋疼:AWS限制了最大传20个自定义头,多了真要签“白金合约”。你像搞XSS过滤呢,自己撸几十条正则,轻松爆满。
反正这条羊肠路我替你们踩完了:没花一分钱实现了基本的CC过滤和ip黑名单。最后长个记性:一定要在if里加上内网保留段,别把自己办公室网段拉黑。
省的那几千块钱换个教训吧:白嫖防不住自己!
- 上一篇: 昨晚差点被删库,复盘几点血的教训
- 下一篇: 没有了











鄂公网安备42011602001234号