如何防止 DDOS 攻击
Published: (Updated: )
by .刚得知某个未曾“联系”过网友的博客被 DDOS 攻击了,不得不改为采用 WordPress.com 的服务。我正好有这方面不太成熟的经验,向读者们分享一下。
一、防止泄漏源站 IP
防止 DDOS 或 CC 攻击的关键点在于,不要泄漏源站 IP,也就是你 VPS 服务器的 IP。建议使用 Cloudflare 的免费 CDN,因为既然你已经用了速度不佳的托管服务,那就意味着放弃了网站到中国大陆的速度了,况且绝大部分网站托管服务的连接速度不会比 CloudFlare 更快。
当你购买 VPS 服务器装好 Webserver 后,第一时间在 Cloudflare 绑定域名,并开启 CDN 代理。
![](https://librecat.me/wp-content/uploads/2022/12/图片-1-1024x231.png)
另外一个可能会泄漏源站 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 秒盾等方式缓解攻击。
![](https://librecat.me/wp-content/uploads/2022/12/图片-2-1024x593.png)
三、设置 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。
而我自己目前尚未隐藏,不出名也就少了这些烦恼。
Comments
很少会有人直接DDOS个人博客。如果有,多半是整个网段或者所用的公共IP被攻击而受到牵连。个人博客也没多大流量,不要管他就行,过段时间自己就恢复了?
现在 DDOS 成本太低,几十块就能找人发起 CC 攻击了。对于部分脑子秀逗的人来说,说不准愿意花几十块来攻击自己看着不爽的博主。
让他攻击就好了~几十块钱持续不了多久。现在的互联网服务在高可用方面有点走火入魔了,非要7×24外加多少个9。我认为如果不是银行转账这类影响国计民生的服务,都可以设一个维护时间。比如夜间2点到5点停止对外服务。高铁就是这样。至于个人博客网站,停机几个小时更是毛影响都没有。如果大家都不在意,也就不会有人想着要去 DDOS 了。
我同意你的观点。就算将个人博客攻击得关站了又如何,毕竟你攻击者是需要成本的,博主关了博客又不损失什么。
算了一下,在Wordpress住酒店的费用虽然不低,但是省去了很多麻烦,当然也不准再酒店里面任意装修了,但是好在配套设置比较好。。
因为一开始就是图个方便,觉得个人站不会被人打,就没有套CDN。结果真就被盯上了,开博一年,写了接近400篇文章,也不知道哪一篇惹到了对方,所以也不便回去回查了。不过分析还有可能一个原因,是被「博客志」突然破格收录,大概是惹到了谁。所以比起这件事,我更好奇是谁、究竟是何种原因,一定要对我一个个人博客进行攻击,是很适合的研究对象。哈哈。
WordPress.com 也存在一些问题:
1. 有段时间其 IP 大部份是被墙的,好久没用,刚看了下你的站也还是有部分地区解析出来的 IP 是无法连接的。
2. 商业化气息太浓厚,打开一次七八个追踪器,感觉不太好。
3. 你提到的,有点贵。当然,这是我的问题。
个人博客被墙这件事情对我来说已经无所谓了,因为我之前腾讯云也是用的香港的,就是不想备案,只要国内开始实行白名单制度,被墙也是早晚的事。
啊呀,看样子我也得去开一下 CDN。我就用 QUIC CDN 好了。明天你们来访问看看是否不影响速度。
你的IP已经不隐蔽了,可以直接打你源站。