为什么说DDoS攻击恶心又无解?因为黑客只需要投入极少的成本,就可以发起海量的攻击流量。而小网站往往无力承担这高额的防护费用。这是国内某云服务器厂商的DDoS高防IP的套餐价格,这些昂贵的套餐甚至还有流量限制。一旦攻击流量超过套餐限制,那就得加钱。
本期视频分享两种零成本防御DDoS攻击的思路,特别适合个人开发者与小型企业。本期视频主要侧重于实战,会详细演示每一个配置步骤,还有具体的注意事项。
CDN
CDN即内容分发网络。CDN服务商通过遍布全球的数据中心,缓存网站的静态资源。网站的访客可以直接从CDN网络的缓存读取这些数据,加快网站的加载速度,并且减少服务器压力。网站开启了CDN以后,就隐藏了网站真实的IP地址。攻击者的DDoS攻击最多也只能攻击到CDN节点。CDN服务商首推的是互联网大善人Cloudflare。我之前看过一个报道,Cloudflare曾经为免费客户阻止了有史以来最大的DDoS攻击,攻击的峰值高达每秒2,600万次。如果客户使用的是其他网络供应商提供的按流量计费的CDN,估计已经一夜破产了。可能有的观众会问,用了Cloudflare的CDN以后,国内的访问速度会变慢?爬爬虾想说的是,速度变慢总归比网站被攻击到掉线要好。如果对速度有更高要求,Cloudflare的企业级产品里面也提供了专门的中国线路优化。本期视频我们还是以个人网站使用免费套餐为例,进行演示。
实战演示
好,我们进入实战环节。这是我的一台云服务器,然后我在上面安装了一个nginx。我使用nginx部署了一个页面,我们在浏览器输入服务器的IP地址,就可以访问到我这个最基础的小网站。
接下来,我们使用Cloudflare配置CDN来保护我的网站。我们进入到Cloudflare的官网,
这里需要准备一个域名,
并且把域名托管到Cloudflare上面。爬爬虾之前有详细视频介绍如何购买一个域名、如何获得免费域名,并且托管到Cloudflare上。对这块不熟悉的观众朋友们,可以看一下往期视频。
我们有了域名以后,这里点击DNS记录。接下来我们配置一个DNS解析,把我的域名指向我的网站。这里点击添加记录,名称的话我填@,指的是把我的域名解析到这个IP地址。IP地址就填服务器的IP地址。好,这一步是重点,我们要把这个代理状态,也就是这个小黄云开启。
接下来我们保存一下,然后我们在浏览器访问这个域名,这样成功访问到了我的网站。
如果想使用CDN抗DDoS攻击的话,我们记得要把这个IP地址保密,不要与其他人分享。一旦网站的真实IP地址被泄露,黑客就可以很容易的攻击到网站。
除了我们主动泄露IP地址,还有一个风险,就是黑客利用网络测绘工具在互联网上扫描到了我们的IP地址。比如,黑客使用fofa这种网络空间测绘引擎,24小时的探测一切暴露在互联网上的信息。
黑客通过网络测绘工具暴力的扫描所有的IP地址,他可以发现这个IP地址与我这个域名对应的网站是一样的,从而就知道了我网站的真实IP地址。
为了避免这个风险,我们还需要进行一步设置,就是在云服务器厂商那里设置一个IP白名单。我们只允许Cloudflare的CDN节点来访问我们的网站,屏蔽掉其他的一切无关访问,特别是要屏蔽掉这种网络空间测绘等的访问。
好,接下来我来演示一下。我在国内的一家云服务器厂商购置了一台服务器,我们来看如何配置他的IP白名单这里。
我们点击安全组,然后点击创建安全组,这里我起个名字叫做Cloudflare CDN。我们把允许所有端口访问的关掉,接下来我们添加入站规则。我们添加一条规则,类型的话IPv4只允许TCP协议端口,就是80端口。
我们只需要Cloudflare的CDN节点通过80端口访问到我们的服务器,其他一切无关IP全部屏蔽掉。所以这里IP来源,我们需要填写Cloudflare的CDN节点的IP。
我们进入这个地址, www.cloudflare.com/ips/ 这里面的IP地址就是Cloudflare所有的CDN节点的IP地址。
我们把这些IP地址作为白名单,填写到刚才的安全组里面。这里我先选择第一条填上,备注的话我就写CF1,然后确定。
接下来我们填写第二条规则,还是TCP协议80端口,我们把第2条也填写过来,备注的话我叫CF2。总共15条规则,我全部填写到这里。然后我再添加一个规则,这里我需要把22端口开放,因为等下我还要操作服务器。
来源的话就是所有。15条Cloudflare的白名单规则,还有一条22端口的SSH规则,最后我们保存一下这个规则。
把这个规则添加到服务器上面,这里找到我的云服务器,我们点击进来服务器设置。这里有一个安全组,
现在使用的是默认安全组,我们点击这个加号关联安全组,我把Cloudflare CDN安全组选中,
然后把默认安全组取消掉,在这里点击确定。好,我们来试一下,这里我们直接使用IP地址看看还能不能访问到,可以看到访问不到了。也就是说,我的网站现在只允许Cloudflare的CDN节点来连接,这些奇奇怪怪的网络测绘工具以后再也扫描不到我的服务器了。我们来试一下使用域名能不能连接到服务器,域名还是可以访问的。好,到现在为止,我们已经可以扛住网络层还有传输层的DDoS攻击了。
Cloudflare防火墙
接下来,我们来看使用Cloudflare的免费防火墙为我们的应用层增加抗DDoS攻击的能力。这里我们找到自己的域名,找到这里的安全性,我们进入这里的WAF。进来以后我们点击自定义规则,免费用户可以自定义5个防火墙规则,我们来看几个比较有用的。
这里点击创建规则,规则名称我叫做恶意请求,我们找到威胁分数改成大于等于5,接下来的操作我们选择这个托管质询。这里的意思是,Cloudflare会为我们分析每一个入站请求,如果发现入站请求的威胁等级大于5,他就会弹出一个Turnstile的5秒盾进行一个人机验证。
我们还可以再添加规则,比如这里我添加一个规则叫做屏蔽国外,然后客户的地址只要是不等于中国,我们还可以采取措施,比如这里阻止。这里指的是所有国外的请求都会被Cloudflare的规则阻止。我们可以通过分析黑客的DDoS攻击的来源,使用防火墙规则挡住大部分DDoS攻击。具体规则如何配置,可以参考Cloudflare的文档。
另一个很有用的规则限制是这里的速率规则限制。
我们来点击创建规则,这里我叫IP访问限制,这里我们填URL路径,然后来一个通配符,这里我直接星号,指的是保护整个网站。接下来具有相同特征,那就是IP地址,免费版是没法改的,然后这里可以填写一个自定义的速率,比如这里我填写1,然后选择10秒钟,指的是同IP每10秒钟只能请求一次,然后采取措施,这里直接阻止,最后时间是10秒。
接下来我来访问一下我的网站,可以看到第一次访问成功的,然后我再刷新一下,这里显示error,因为我触发了Cloudflare的速率限制。我们可以通过配置一个合理的数值来控制每个IP的最大访问速率,这里我建议填个100或者150类似的值。
Cloudflare的安全性设置里面还有一个大招,就是这里的安全级别,可以把这个安全级别调成最高,叫做I'm under attack。
访问网站的所有请求必须全部通过Cloudflare的人机验证才能到达你的网站。好,我们来试一下,这里弹出了人机验证,必须打上对勾以后才能访问到网站。这个大招一开,基本上所有的DDoS攻击全部拒之门外。
使用静态网站
对于一些企业宣传页、个人博客等等的网站,其实没有必要使用传统的服务器部署,
我们可以考虑使用免费的静态网站托管服务。静态网站指的是由纯HTML、CSS还有Javascript组成的网站,所有的页面都是预先生成好的,不需要后台服务器的支持,也不需要数据库查询。
市面上有很多免费的静态网站托管服务,比如Github Pages还有Cloudflare。使用静态网站就从根本上杜绝了DDoS攻击,因为我们连服务器都没有,黑客也就没法攻击了。这就叫无招胜有招。
爬爬虾之前有很多视频介绍使用Github Pages部署免费的静态网站,比如我之前讲过这个表白代码收藏馆的项目,还有这个18秒部署一个个人博客。这个博客目录导航栏、图片表格这些功能一应俱全,甚至访客来还能发表评论,只需要登录一下Github账号,就可以在博客里面发表评论。黑客能耐再大,也不可能把Github攻克。
今天的视频就到这里,希望给大家提供一些防御DDoS攻击的思路。感谢大家,我们下期再见。