将 2 个网站搬到阿里云,一个是因为阿里云稳定,另一个就是牛逼轰轰的云盾了。之前在博客联盟群里模拟 CC 攻击过搭建在阿里云 ECS 上的博客,结果云盾毫无反应,而网站已经挂了。
这次特意细看了一下云盾上的 CC 防护功能,发现有部分朋友估计并未正确使用 WAF。所以,我在本文就简单的分享一下阿里云盾-WAF 网站防御的正确使用方法。
一、域名解析
大部分朋友,只是开启了云盾就不管了,这也就是很多朋友受到 CC 攻击后,云盾却毫无反应的原因了。实际上 WAF 防御必须配合域名解析来使用。
阿里云的 WAF 网站防御实际上相当于没有缓存机制的百度云加速或 360 网站卫士,不过只能用 cname 接入方式,后续是否会结合万网解析,新增 NS 接入方式就不得而知了:
如上图所示,要开启 WAF 网站防御,就必须在域名解析那,将主机记录 cname 到云盾生成的 CNAME 地址。这时用户访问网站是这样一个情况:
用户浏览器 → 域名解析 →cname 到云盾服务器 → 源服务器
当受到攻击时,流量会经过云盾节点,并触发清洗机制,起到 CC/DDoS 防护作用。
当然,也有部分朋友知道 WAF 使用方法,但可能是出于 SEO 考虑,这些朋友也只会在网站受到攻击的时候才会修改为 CNAME 解析,因为 CNAME 解析到阿里云 WAF 域名后,IP 并不是固定的,这点和云加速之类的是一致的,不过遗憾的是 WAF 并没有搜索引擎自动回源机制,所以使用 cname 之后,IP 的频繁变更会对 SEO 造成不良影响!
如下图所示,使用 WAF 之后,网站 IP 也就变成了云盾节点 IP 了:
那该如何解决这个问题呢?想必看过三叶运维上一篇文章的朋友已经了然于心了吧?没错!和备案不影响 SEO 的做法一样:将默认线路 cname 到阿里云 WAF 地址,然后再新增一条搜索引擎线路,指定到源服务器 IP 即可!这样就可以长期开启云盾 WAF 防御,而不影响 SEO 了!
本想,百度自家的云加速解析,对搜索引擎线路的判断应该是最靠谱的(对于做百度流量的网站来说),毕竟是自家的产品,有哪些蜘蛛 IP,都一清二楚,不会搞错!但实际测试发现,百度云加速目前并不支持 cname 默认线路的同时,新增搜索引擎线路,会提示该记录已存在!
Ps:尝鲜版的百度云加速倒是支持,地址是 http://next.su.baidu.com,感兴趣的可以自行测试下。
后来仔细一想,百度虽然对自己的蜘蛛了解透彻,但是对其他几家呢?比如搜狗,比如 360?估计是个半吊子。处于完整性考虑,我推荐使用 DNSPOD 解析,原因无它,看图:
DNSPOD 和百度有过合作,所以有一个百度专属线路,额外的还有搜索引擎线路,想必比百度云加速收集的蜘蛛 IP 更加完善吧!
这样解析不但可以放心使用阿里云 WAF 防御,还可以隐藏你的网站真实 IP,避免发生源站被攻击只能换 IP 的尴尬(通过 hosts 本地解析进行攻击,啥 CDN 防护都没了作用!)
二、防护设置
可能开启了云盾,也正确解析了域名,但是被 CC 攻击时,云盾还是毫无反应?!实际上还要设置下 DDoS 防护高级设置,因为云盾默认的 DDoS 防护阈值还是太高,如下所示:
清洗触发值: 每秒请求流量:180M 每秒报文数量:30000 每秒 HTTP 请求数:1000
我们这种搭建在阿里云的小博客,大部分带宽都只有 1~2M,别人 2M 请求流量或 100+并发就已经把你的网站打出了翔咯!所以很多朋友就算正确开启了 WAF 防御,被攻击的时候还是非常卡!
因此,我们必须根据自己网站的流量设置下阈值。
看了下,最低的请求流量是 10Mbps,也就是 10M 带宽,所以一般 ECS 服务器根本不够看,因为水管太小了。。因此,我们需要设置另一个阈值:http 并发请求。
对于我这种 1M 带宽的 ECS,相信 100 并发已经卡出了翔。所以,我们考虑设置在 50 以下:
Ps:当然做好了 CDN 动静分离的网站可以设置到 100+,比如用了七牛 CDN 的朋友,总之得根据实际情况而定。
阈值只是触发的前提,下面还有一个触发之后的清洗限制,也就是发现并发超过阈值时,云盾对来访的单 IP 做连接数限制,超过了这个限制就返回 503:
原则上,触发清洗阈值之后,单一 IP 连接数限制得越小越好,但是又不能将正常的访问阻挡在门外。所以这个限制该如何定义还得看实际情况!当然,你可以通过模拟攻击去测试出一个合理的限制值,但是也得考虑一些局域网公用一个公网 IP 上网的情况(得看网站的受众人群)。
看到这,相信不少用阿里云服务器的朋友已经有所收获吧?再我看来,使用阿里云 WAF 的作用主要有 2 个,一个是基础 DDoS 防护,另一就是隐藏网站真实 IP。当你的网站经常被攻击,而云盾都无法完全清洗时,我们还可以在本文的基础上再套上一层百度云加速,平常不被攻击时,百度云加速设置回源,关闭加速即可,具体做法我就不多说了,看图即懂:
这种方案的网站访问模式如下:
用户浏览器 → 域名解析 → 百度云加速节点(缓存开启时) → 阿里云盾节点 → 源服务器
当然,这个方案只适用于百度云加速 3.0 尝鲜版,地址:http://next.su.baidu.com/ ,感兴趣的自己去研究下吧!就写这么多,洗洗睡。
最新补充:提了好几次工单,才弄清楚云盾中的 DDoS 和 WAF 是 2 个不同的功能,看来是我理解错了!最后纠正下,DDoS 中的 DD/CC 防护和 WAF 设置并无关系,也就是你不设置 WAF 的 CNAME 也没关系,只要开启了 DDoS 防护就可以了!所以本文中的部分描述是不到位的,但是必须说明的是,参考本文开启 WAF 之后,确实可以实现隐藏真实 IP 的妙用!强烈建议使用!