0成本的高防抵御DDos/CC攻击 – Cloudflare

AffettoIris 2023-11-12 3,237 11/12

 

0成本的高防抵御DDos/CC攻击 - Cloudflare 0成本的高防抵御DDos/CC攻击 - Cloudflare

Cloudflare - 0成本抵御DDos/CC 攻击的解决方案!

使用本方案会牺牲用户访问速度换取防御cc和ddos攻击。除非网站实在遭受太多的DDos/CC 攻击,不然还是别开了。cloudflare是一个国外的cdn加速平台,节点一般大多数都是国外的节点,如果你的服务器在国内,即使参见本文小标题《接入后,访问网站速度变慢了》优化访问速度,依然会很卡。

Cloudflare及其CDN服务的简介

今天访问https://forum.90sec.com,响应数据包有个属性是server: cloudflare,server后面一般跟的是中间件如nginx、IIS,这个cloudflare是什么?

在响应数据包的server属性中出现"cloudflare"表示该网站正在使用Cloudflare的服务,这意味着你的请求经过了Cloudflare的网络加速和安全保护,以提供更好的用户体验和保护网站免受恶意攻击。

Cloudflare是一个提供网络安全和性能优化服务的公司。它提供了CDN(Content Delivery Network | 内容分发网络),以加速网站的访问速度,并通过多层防御机制保护网站免受DDoS攻击、恶意流量和其他网络安全威胁。

当你访问一个使用Cloudflare的网站时,你的请求会首先被路由到最近的Cloudflare服务器,然后由Cloudflare服务器代理请求到源网站服务器。这种方式可以减轻源网站服务器的负载,提高网站的性能和可靠性。

使用 CloudFlare的好坏:

  1. CloudFlare的服务是一种CDN服务。CDN有助于隐藏好服务器真实 IP,在隐藏好服务器真实 IP 的情况下无论多大当量的 DDos/CC 攻击基本都可以无视(换言之暴露了真实IP就依旧有DDOS攻击烦恼)。简单说CloudFlare服务对 DDos/CC 攻击或各种恶意扫描、暴力破解、恶意垃圾爬虫都能有非常不俗的拦截效果。

注:CloudFlare 免费版仅仅对网站的 DDos/CC 防御有效,APP、游戏的高防需要付费版才可以的哦

  1. 防采集和防盗链:CloudFlare 的【服务器端排除】和【HotLink】只需要在网站上简单的设置后就能很好的防采集和防盗链

  2. 减轻服务器压力:借助 CloudFlare 官方公布的节点 IP 配合基于 Linux 内核的防火墙应用限制只有 CloudFlare 节点 IP 才可以回源服务器请求 443 和 80 端口,不仅能大大加强服务器的安全性,还能有效的发挥服务器硬件性能,去除所有非法的回源请求降低服务器负载飙升的风险。如果 CloudFlare 缓存时间长的话,甚至可以做到无论多大的并发请求都不会让服务器 CPU、内存等的负载飙升。

  3. 灵活地放入真搜索引擎爬虫、屏蔽仿冒搜索引擎爬虫:无论是谷歌、百度、必应等这些国内外合法主流搜索引擎爬虫还是冷门小众细分垂直爬虫都能自由灵活的控制其屏蔽和频率,并且还可以基于 CloudFlare 大数据的IP 威胁分完美高效的过滤屏蔽恶意、仿冒搜索引擎爬虫。

  4. 稍微减低了国内用户访问速度:毕竟走了一层代理嘛。

接入Cloudflare的CDN教程

参见如何给网站开通免费的Cloudflare CDN,教程很详细,不再赘述。

验证接入成功的三个方法:

一般介入后,域名的新DNS服务器的更改要24~48小时才能全球生效。刚接入不久,可能电脑、浏览器、局域网的路由器和交换机上的旧DNS记录缓存还没有过期,所以看不到效果。

  • ping 域名发现IP不是自己服务器IP表示接入成功:

    0成本的高防抵御DDos/CC攻击 - Cloudflare

  • 访问网站并抓包,发现响应包的server: cloudflare就是接入了:

    0成本的高防抵御DDos/CC攻击 - Cloudflare

  • 超级ping:

    0成本的高防抵御DDos/CC攻击 - Cloudflare

接入后的优化

网站用了cloudflare的cdn怎么获取访客真实IP

获取真实的访问IP,是保证网站信息安全和追溯不法行为的关键。部署CDN后,当用户发起请求时,前往最近的节点服务器获取资源。但由于请求的路径变化,导致CDN无法直接传递真实的访问IP。

  1. 解决方法一:借助一些其他网站的获取访客IP的api。我用的一个api,它的原理就是让用户另外访问api所在的网站,而这个网站是不布置CDN的,api就能获取到访客真实IP了。

  2. 法二:配置NGINX反向代理,好像要在nginx的配置中加入以下代码:

    set_real_ip_from CDN厂商提供的IP地址;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    可惜我不感兴趣,不想研究、验证,用到时自行学习吧。

  3. 法三:(也未经测试验证,自行辨别)。用户的GET/POST请求包可能带有X-Forwarded-For键值对,可以获取访客真实IP。

    0成本的高防抵御DDos/CC攻击 - Cloudflare

接入后,访问网站速度变慢了

可能是我不会配置页面规则,也可能是别人买了cloudflare的会员,反正我配置后,用户访问页面都卡的很。

0成本的高防抵御DDos/CC攻击 - Cloudflare

四个原理的原文,大致四个原因:

  • DNS 解析缓存造成的:刚接入不久,可能电脑、浏览器、局域网的路由器和交换机上的旧DNS记录缓存还没有过期,需要等待两三天,新设置的域名的DNS服务器才能全球生效。

  • CloudFlare的缓存配置规则没配置。CloudFlare的CDN默认用于安全防护,至于加速缓存的都是要使用者手动去配置的。免费版CloudFlare可以有三条缓存配置规则,够小网站用了,可以用于加速、安全防护、防采集、防恶意扫描等等。按钮所在位置见下图:

    0成本的高防抵御DDos/CC攻击 - Cloudflare

    如果配置得当,比如让CloudFlare节点每2小时缓存下源站的页面,这样用户访问ink0.cn就是就近获取离他最近的节点上的缓存,速度自然快。好像啥都不配置的话,就是每次有用户访问,节点都会回源到服务器上,获取页面后再转发给用户,自然慢了。

  • CloudFlare 节点 IP 回源受阻造成。此情况多见于服务器有防火墙的站点,比如:宝塔面板的防火墙开启后如果没有开启CDN 服务支持的话,就会出现CloudFlare部分节点IP回源遭到宝塔防火墙的拦截和屏蔽,这就会严重影响站点的载入速度。

    解决办法:

    一般宝塔防火墙拦截规则里都有一个 CDN 服务,只需要开启即可,另外就是还有一个禁止境外 IP 的一定要关闭,因为免费 CloudFlare 节点 IP 都是境外的。此外,建议把CloudFlare节点IP在宝塔安全里加白名单,可以参考【宝塔面板下站点如何只限定 CDN 的 IP 节点回源请求】。其他防火墙同理。

  • 在CloudFlare 设置了错误的WAF 规则或者安全防护配置造成的。这个一般是因为不懂CloudFlare的WAF 规则生搬硬套复制粘贴过来就用的,因为WAF 规则不适合自己站点造成的访问各种403/404/502错误引起的,CloudFlare的强大之处就在于哪怕是免费版也提供了自由度非常高的 WAF 规则自定义支持,因为太开放了,所以配置WAF 规则就需要非常的熟悉CDN 原理和网站请求 Url 结构根据网站访问日志做出具体应对的 WAF 规则制定,所以明月一直都不建议WAF 规则的照抄,毕竟不是每个WAF规则都适合所有站点的。并且WAF 规则也经常根据站点日志分析来做调整的,并不都是一成不变的。解决办法就是不要在CloudFlare设置WAF 规则或者安全防护配置,除非你很懂规则!

针对原理二的解决方案:原文

主要的目标是通过设置页面规则(Page Rules),来实现更多源站资源的合理缓存。

规则有分优先级,排在最前面的规则优先处理,所以把不缓存指定目录或者网址的规则拖拉到最前面的位置。例如首页肯定经常更新也最常访问,而具体到某些文章页,你可能一周更新一次,所以你不希望节点缓存首页,即使访问首页会慢点,不然用户可能访问不到首页新内容。而希望缓存其他页,让节点快速提供用户内容,毕竟此内容大概率没有新的更新。所以你可以配置不缓存首页,并缓存其他页。

缓存级别:我只会用绕过(即不缓存)和缓存所有内容(即字面意思,包括文字、图片、css、js)

0成本的高防抵御DDos/CC攻击 - Cloudflare

设置不缓存网站首页:

0成本的高防抵御DDos/CC攻击 - Cloudflare

如果你想缓存除首页外全部页面内容,这个时候填写链接为:www.wuxianwz.cn/*。

0成本的高防抵御DDos/CC攻击 - Cloudflare

浏览器缓存和边缘缓存的区别?

首先如果你设置了浏览器缓存为1天,边缘缓存为2天,那么当用户访问你网站的时候,会首先接收到边缘缓存(大家平时理解的节点缓存)看看有没有数据,让节点给用户。浏览器缓存就是用户本地缓存了,设置了1天,那么用户再刷新访问同一个页面的时候,就会从本地调取数据访问,而不是走节点了。站长可以主动清理节点上的缓存以强制更新节点上的缓存

0成本的高防抵御DDos/CC攻击 - Cloudflare

但是不能干预用户的浏览器缓存,如果想要他们选择更新你的网站数据,就必须得他们自己清理浏览器缓存或者等缓存过期,所以不要设置浏览器缓存太久,避免有些内容更新不及时让访客看不到。

好了,现在我们配置了如下两条规则,意思是首页不用缓存,牺牲用户访问首页速度换取最新内容;缓存其他所有页,牺牲最新内容换取用户访问速度

0成本的高防抵御DDos/CC攻击 - Cloudflare

验证:

http ping工具,ping首页,全国访问都很慢:

0成本的高防抵御DDos/CC攻击 - Cloudflare

再去http ping文章页https://www.ink0.cn/index.php/2023/11/11/docker/,这个页面就快很多了:

0成本的高防抵御DDos/CC攻击 - Cloudflare

但是还是卡,转了有1分钟了还是空白的很,放弃cloudflare了:

0成本的高防抵御DDos/CC攻击 - Cloudflare

Crawler Hints(爬虫提示)

0成本的高防抵御DDos/CC攻击 - Cloudflare

搜索引擎爬虫会每隔一段时间访问网站看看是否有更新,这常常让爬虫白跑一趟。

而 Crawler Hints(爬虫提示)是 cloudflare 和搜索引擎合作开发的功能。如果网站更新,cloudflare 将直接通知搜索引擎:网站更新了!,通知搜索引擎爬取更新的页面。(这里的更新可以是添加、更新或删除)。否则网站没更新,爬虫就不爬,这个功能主要是方便了爬虫。

Always Online

字面意思,我觉得可以开启,用于服务器崩了时依旧能让用户访问到页面。

0成本的高防抵御DDos/CC攻击 - Cloudflare

0成本的高防抵御DDos/CC攻击 - Cloudflare

开发模式

如其描述,用于开发时,想立马看到对网站的更改。

0成本的高防抵御DDos/CC攻击 - Cloudflare

关闭Cloudflare的CDN

把域名的DNS服务器改回来就行。

0成本的高防抵御DDos/CC攻击 - Cloudflare

0成本的高防抵御DDos/CC攻击 - Cloudflare

一般需要等待两三天以等待更改生效。验证某地区访问ink0.cn时访问的DNS服务器是谁:

https://www.whatsmydns.net/#NS/

0成本的高防抵御DDos/CC攻击 - Cloudflare

- THE END -

AffettoIris

11月12日00:51

最后修改:2023年11月12日
3

共有 2 条评论

  1. 你好,可以加个友链吗,很喜欢贵站的文章

    1. AffettoIris

      AffettoIris博主

      @棋: OK,欢迎,已添加贵站!贵站的文章质量也不低呀,而且界面好好看欸。
      名称:网安冷墨寒
      链接: https://www.ink0.cn
      描述:Flag 是全世界!
      头像: https://www.ink0.cn/wp-content/uploads/2023/10/173bd187c460bff965c694-scaled.jpg