admin

Cloudflare-Block定时监控系统负载自动切换防御级别
前言好吧,最近网站又被同行恶意打爆了。正所谓害人之心不可有,防人之心不可无。之前的我还是太过年轻了,才会导致频发的...
扫描右侧二维码阅读全文
03
2020/03

Cloudflare-Block定时监控系统负载自动切换防御级别

前言

好吧,最近网站又被同行恶意打爆了。
正所谓害人之心不可有,防人之心不可无。之前的我还是太过年轻了,才会导致频发的悲剧,这一次比较惨,由于是周末,服务器商那边的技术都放假了,我提交的工单被一个网页前台的客服给接了,问他什么时候能够解除限制,然鹅对方估计是屁都不懂,一直叫我停止攻击,然后重装系统。

看得我当场差点吐血,首先,是别人攻击我,叫我停止攻击这是个啥玩意?
然后就是重装系统,我一脸的黑脸问号。这是第一次碰到这种服务器被DDOSIP被挂起叫我重装系统解决的。

然后我就简单的用我那三毛钱英语给他解释了一下:这是别人在攻击我,不是我自己攻击自己;你叫我重装系统,没有网络我该如何备份数据。

邮件反复聊了几次,每次都是等个半个小时以上回复我一次,他们后台有个虚拟机的VNC网页版,又一次叫我到那上面去备份,What the fuck? 那不就是个局域网连进去的吗,再次被这个屁都不懂客服给气晕了。最后还给我来了个:

Unfortunately, it is not possible to remove the limits from your VPS without
reinstalling.

好吧,这个时候我已经不抱任何希望了,完全可以确定这个客服就是个小白了。直接邮件让他们找个专业的技术人员来帮我处理这个问题,最后这个时候他才回复说把问题已经转交给了技术人员,第二天的上班时间将会处理。
唉,折腾我一晚上,最后第二天他们那边上班时间的前5分钟左右,技术人员立马就给我解除限制了。

防御

经过上面的惨痛教训,不得不对服务器做出相应的防御措施了。
首先,除了 ssh 端口关闭服务器上的所有其他端口,套上Cloudflare的免费CDN,当然,这个时候所有端口都关闭了,CloudflareCDN也是无法使用的,所以需要在防火墙里面将Cloudflare的 IP 地址段移除,下面是官方给的一些地址段,也可以用在获取用户的真实IP的配置里面,这里我就贴下Nginx里面的配置:

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;

上面是Nginx用来获取用户真实IP的配置,上面的IP地址段可能会有所改变,可以到官网去查看最新的地址段:
https://www.cloudflare.com/ips/

好了,现在即使对方知道你之前被攻击网站的真实IP,也无法直接对你发起攻击了,因为对方无法直接访问你的80或者443端口了,当然,这个时候如果Cloudflare的防御级别比较低的话,对方还是照样可以穿透Cloudflare的防御将你的服务器打爆,我的就是这样,如果防御级别没有设置成I'm under attack!,CPU 还是被对方打得满满的。

难道我们就一直要开着5秒盾?这对SEO非常的不友好,用户体验也不行,有很多用户不懂英文以为网站被黑了,还没等5秒就关闭了,搞不懂Cloudflare为什么不能自定义等待信息,哪怕给个中文的等待也行呀。

废话不多说,既然不能一直开着最高防御级别,那么我们首先想到的肯定就是定时任务了,定时监控CPU使用率来动态地调整防御级别,贴心的是,官方给我们提供了现成的脚本,Github地址如下:
https://github.com/Machou/Cloudflare-Block

使用超级,简单,这里就不再过多赘述了。

使用的时候记得先测试好了再添加到定时任务里面去,不要一顿配置立马添加定时任务就不管了。

我在使用的时候就有这种问题:设置防御级别失败,原因是`zone_id填写错误;脚本报错,bc命令没有安装。

所以先手动运行测试没问题之后再添加到定时任务里去,手动测试就是直接执行:

./Cloudflare.sh 0

Last modification:March 3rd, 2020 at 03:27 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment