← 一派胡言 | 未分类

如何防止 DDOS 攻击

刚得知某个未曾“联系”过网友的博客被 DDOS 攻击了,不得不改为采用 WordPress.com 的服务。我正好有这方面不太成熟的经验,向读者们分享一下。

一、防止泄漏源站 IP

防止 DDOS 或 CC 攻击的关键点在于,不要泄漏源站 IP,也就是你 VPS 服务器的 IP。建议使用 Cloudflare 的免费 CDN,因为既然你已经用了速度不佳的托管服务,那就意味着放弃了网站到中国大陆的速度了,况且绝大部分网站托管服务的连接速度不会比 CloudFlare 更快。

当你购买 VPS 服务器装好 Webserver 后,第一时间在 Cloudflare 绑定域名,并开启 CDN 代理。

比如上图,我就没开启代理,因为我这段时间对速度感兴趣。尽管这样很不安全。

另外一个可能会泄漏源站 IP 的方式是通过 IP 地址反查域名,当你的 NGINX 只配置了一个站点,并且这个站点开启了 HTTPS 后,假如有人直接使用 HTTPS 访问你 VPS 的 IP 地址,NGINX 就会返回已配置域名的那个站点的 HTTPS 证书,也就泄漏了域名。有些网站不间断扫描全球 IP 地址,他们就可以通过这个方式将 IP 地址和域名关联起来。在 NGINX 1.19.4 之前,需要给默认站点配置假证书来解决这个问题,在 NGINX 1.19.4 版本之后,解决的方法就简单了,直接在默认站点的配置中开启 SSL,并禁止连接即可:

server {
    listen 443 default_server;
    server_name _;
    ssl_reject_handshake on;
}

通过以上两种方式,就可以从域名和 IP 两方面防止其对应关系泄漏。

二、在被 DDOS 之后,开启 Cloudflare 防护

开启 Cloudflare 防护并有效的前提就是攻击者只知道域名而不知道 IP 地址,否则攻击者可以直接对源站 IP 发动大量请求来瘫痪 VPS。

在满足上面所说的前提条件后,被攻击时只需在 Cloudflare 面板中调整安全级别、设置速率限制、5 秒盾等方式缓解攻击。

三、设置 Web 服务器仅允许 Cloudflare 服务器访问

因为使用了 Cloudflare CDN,所以正常来讲(除非你 IP 泄漏了)网站的内容均由 Cloudflare 的 CDN 服务器中转。那我们其实可以认为在这种情况下,Web 服务器应该只允许 Cloudflare 的 CDN 服务器访问即可,将其他非 Cloudflare 的 Web 请求阻断掉。

与国内 CDN 厂商遮遮掩掩不同,Cloudflare 的 CDN 服务器 IP 是公开的,其 IP 地址列表在官网有维护。所以有人就写了自动化脚本( iptables 版 | ufw 版 ),自动抓取 IP 并设置防火墙规则。

iptables 规则在服务器重启后就失效了,可以安装 iptables-persistent 包来将其自动持久化,有需要的话可自行搜索。另外,还可以将 cloudflare-ips-only 脚本加到 crontab 中,自动每日运行。

一般来说,只要源站 IP 没泄漏,做不做仅允许 Cloudflare 访问其实无关紧要,因为几乎不可能猜出来域名和 IP 的对应关系。而一旦源站 IP 泄漏了,那做不做也就无关紧要了,因为攻击者会直接将域名和 IP 通过 Hosts 文件等方式关联起来,或者直接攻击 IP。所以放 DDOS 攻击的重点还是隐藏源站 IP。

而我自己目前尚未隐藏,不出名也就少了这些烦恼。

# # # #


《“如何防止 DDOS 攻击”》 有 9 条评论

  1. 沉舟侧畔说道:

    啊呀,看样子我也得去开一下 CDN。我就用 QUIC CDN 好了。明天你们来访问看看是否不影响速度。

  2. ONO说道:

    算了一下,在Wordpress住酒店的费用虽然不低,但是省去了很多麻烦,当然也不准再酒店里面任意装修了,但是好在配套设置比较好。。

    因为一开始就是图个方便,觉得个人站不会被人打,就没有套CDN。结果真就被盯上了,开博一年,写了接近400篇文章,也不知道哪一篇惹到了对方,所以也不便回去回查了。不过分析还有可能一个原因,是被「博客志」突然破格收录,大概是惹到了谁。所以比起这件事,我更好奇是谁、究竟是何种原因,一定要对我一个个人博客进行攻击,是很适合的研究对象。哈哈。

    • 胡一派说道:

      WordPress.com 也存在一些问题:
      1. 有段时间其 IP 大部份是被墙的,好久没用,刚看了下你的站也还是有部分地区解析出来的 IP 是无法连接的。
      2. 商业化气息太浓厚,打开一次七八个追踪器,感觉不太好。
      3. 你提到的,有点贵。当然,这是我的问题。

      • ONO说道:

        个人博客被墙这件事情对我来说已经无所谓了,因为我之前腾讯云也是用的香港的,就是不想备案,只要国内开始实行白名单制度,被墙也是早晚的事。

  3. 涛叔说道:

    很少会有人直接DDOS个人博客。如果有,多半是整个网段或者所用的公共IP被攻击而受到牵连。个人博客也没多大流量,不要管他就行,过段时间自己就恢复了?

    • 胡一派说道:

      现在 DDOS 成本太低,几十块就能找人发起 CC 攻击了。对于部分脑子秀逗的人来说,说不准愿意花几十块来攻击自己看着不爽的博主。

      • 涛叔说道:

        让他攻击就好了~几十块钱持续不了多久。现在的互联网服务在高可用方面有点走火入魔了,非要7×24外加多少个9。我认为如果不是银行转账这类影响国计民生的服务,都可以设一个维护时间。比如夜间2点到5点停止对外服务。高铁就是这样。至于个人博客网站,停机几个小时更是毛影响都没有。如果大家都不在意,也就不会有人想着要去 DDOS 了。

        • wu先生说道:

          我同意你的观点。就算将个人博客攻击得关站了又如何,毕竟你攻击者是需要成本的,博主关了博客又不损失什么。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注