现在脚本小子太多了,不做好安全策略都不敢宣传自己的网站。
虽然可以购买高防IP或者是OVH来防御DDOS,但高防IP太贵了,OVH需要申请免税,太麻烦。我用阿里云快照用的太舒服了,也懒得换,因此就没使用OVH的服务器。
虽然套了CF或其他的CDN可以隐藏IP,但当CDN被CC超过阈值回源后,服务器IP也会暴露。因此单靠CDN来防御DDOS显然是不够的。
为了省钱,我就想到了一个比较取巧的方法,并为此进行了操作和测试。
原理
正常情况下,DDOS一个IP,是需要建立连接的,所以我想,如果在安全组上设置好策略,让“所有连接”都无法通过安全组,是否能在一定程度上防御DDOS呢?
为此,我提交了工单,询问阿里云客服:
你好,请问如果我的安全组就对特定ip开放了端口,而ddos攻击者从其他ip发动攻击,请问如果攻击流量超过了黑洞阈值(但压根没通过阿里云的ecs安全组),那么ecs还会进黑洞吗
阿里云给我的回复是:
您好,若您将所有端口都设置指定IP访问,是可以起到防止攻击的效果,但也只有指定的IP能访问您的服务器和网站。
通过阿里云的回复,我了解到,理论上如果攻击的数据没有通过安全组,服务器理论上不会进入黑洞。
因此,理论上只要服务器的安全组指定了CDN回源服务器IP才能访问,对ddos攻击是有一定的防御效果的。由此,我为了验证我的想法进行了如下的操作。
操作流程
询问CDN的回源服务器IP
每家的CDN服务商都会有固定的回源服务器来从客户的服务器获取数据,并且回源服务器IP是可以查到或者是询问到的。
例如我是在国外使用cloudflare,国内使用腾讯云CDN,来加速我的网站。
cloudflare提供了专门的页面来提供回源服务器IP范围:
https://www.cloudflare.com/ips/
腾讯云CDN可以提交工单询问客服:
问题描述
请问能否提供下腾讯云的所有cdn节点ip?我好加入防火墙白名单,谢谢了
腾讯云工程师2019-10-10 11:00:09
您好,您可以参考附件中的IP,查看cdn节点。
附件
配置安全组
获取到回源服务器的IP后,我们就可以制作符合要求的安全组表格,来导入阿里云/其他云服务商安全组里了。
我知道大部分人都懒得自己获取,这里我提供下我的安全组文件,你们直接创建新的安全组,导入就行了。
配置好安全组后,在未来,一般情况下不用管了。理论上只要有一台CDN回源服务器能访问你的网站,那么用户就能正常访问你的网站,正常情况下CDN服务商不会更换所有回源服务器的IP吧。
接入CDN
配置好安全组后,再接入cdn即可。
建议使用国外使用cloudflare,国内使用腾讯云CDN来节约费用。
接入cloudflare后,最好是按照下面方法配置下cloudflare的防火墙:
测试
本来这篇文章应该是19年11月就发布的,但因为一直没找到机会测试我的这个方法是否有效,因此拖到了2020年2月才发布。才不是因为懒得写呢前几天在群里和一个大佬讨论了下阿里云的黑洞是在哪里产生作用的,因为互相说服不了对方,因此我把我的IP给大佬测试了下,攻击强度为6.4G,整个过程没有进黑洞。后面又求另一个大佬测试了两次,第一次打了2G,第二次不限流发包打了3.7G,报废了大佬两台服务器,三次都收到了阿里云开始清洗的邮件和短信,但网站运转正常,没有进入黑洞。因此,也验证了这个方案能防御住一般的脚本小子。
第二天大佬打了7G,依旧没啥事。
注意事项
本来在这篇文章写完的时候网站运行很正常,但过了2个月,可能是腾讯云CDN回源节点更新了,经常出现写文章/登录的时候无响应。我个人猜测是腾讯云cdn回源请求被安全组拦截了。因此,如果你的网站POST请求较多的话,注意更新下规则,或者是仅在热备源站使用这个方法,普通源站还是完全开放80/443端口吧。
其他
博客防御体系 - 减弱CC请求攻击对博客影响
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/14.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。
2 条评论
好文章,感谢感谢
为什么这么好的文章,没人评论呢(☆ω☆)