两种免费防御DDoS攻击的实战攻略,详细教程演示

为什么说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的官网,

dash.cloudflare.com/

这里需要准备一个域名,

并且把域名托管到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攻击的思路。感谢大家,我们下期再见。

相关推荐
咖啡の猫40 分钟前
Shell脚本-for循环应用案例
前端·chrome
小云数据库服务专线42 分钟前
GaussDB 数据库架构师修炼(十三)安全管理(5)-动态数据脱敏
安全·数据库架构·gaussdb
lingggggaaaa1 小时前
小迪安全v2023学习笔记(六十二讲)—— PHP框架反序列化
笔记·学习·安全·web安全·网络安全·php·反序列化
百万蹄蹄向前冲3 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5814 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路4 小时前
GeoTools 读取影像元数据
前端
ssshooter4 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
黑客影儿5 小时前
Kali Linux 环境中的系统配置文件与用户配置文件大全
linux·运维·程序人生·安全·网络安全·系统安全·学习方法
Jerry5 小时前
Jetpack Compose 中的状态
前端
dae bal6 小时前
关于RSA和AES加密
前端·vue.js