专注于大流量DDOS攻击防御,各种变异CC攻击防护,是国内领先的服务器安全防御顶尖专家
当前位置:鬼影工作室 > DDOS防御 > 正文

实战干货|DDOS攻击的防御教程

05-13 DDOS防御

 1.什么是分布式拒绝服务?

首先我来解释一下什么是DDOS。
例如,我拥有一家餐厅,通常可以同时容纳30人。你直接去餐厅,找个桌子坐下点菜,马上就可以吃了。
可惜我得罪了一个流氓。他同时派了300人进餐馆。这些人看起来像正常的顾客。大家都说‘快点吃饭’。但是餐厅的容量只有30人,不可能同时满足这么多点菜需求。除此之外,他们还堵了门,正常吃饭的客人根本进不去,实际上让餐厅陷入瘫痪。
这就是DDOS攻击,在短时间内发起大量请求,耗尽服务器资源,无法响应正常访问,导致网站本质上离线。
DDOS中的DOS是拒绝服务的缩写,表示这种攻击的目的是中断服务。正面d是分布式的,意味着攻击来自四面八方而不是一个地方,所以更难防范。你关上前门,他从后门进来;你关上后门,他从窗户跳了出去。
二、分布式拒绝服务的类型
DDOS不是一种攻击,而是一大类攻击的总称。
它有几十种类型,新的攻击方法不断被发明。网站运营的每一个环节都可能成为攻击的目标。只要一个环节断开,整个流程无法运行,就达到了瘫痪服务的目的。
其中,常见的攻击是cc攻击。它简单粗暴地发送大量正常请求,超出了服务器的最大容量,导致停机。
我遇到的是cc攻击。世界上最多有20多万个IP地址轮流发送请求,每个地址的请求量为每秒200 ~300次。
当我阅读访问日志时,我感觉那些请求像洪水一样涌入,几分钟后,DDOS防御日志文件的容量增加了100MB。说实话,这只是一个小攻击,但是我的个人网站没有防护,服务器还是和别人共享的。这种流量一来就下线。
本文以下内容针对cc攻击。
第三,备份网站
防止DDOS的第一步是有一个备份网站或者至少是一个临时主页。万一生产服务器离线了,可以马上切换到备份网站,不至于束手无策。
备份网站不一定全功能。如果能完全静态的浏览,就能满足需求。至少,应该显示一个公告,告诉用户网站有问题,他们正在尽一切努力修复它。当我的个人网站下线后,我用几行简单的HTML代码做了一个临时主页。这个临时主页建议放入Github  Pages或者Netlify,带宽大,可以应对攻击,两者都支持绑定域名,可以从源代码自动构建。
四.拦截HTTP请求
如果一个恶意请求有特征,那么处理起来很简单:直接屏蔽就行了。
HTTP请求有两个特征:IP地址和用户代理字段。DDOS防御比如恶意请求都是从一个IP段发出的,封了这个IP段就够了。或者,它们的用户代理字段具有特征(包含特定的单词),因此带有该单词的请求被拦截。
拦截可以分三个层次完成。
(1)特殊硬件
可以在网络服务器前设置硬件防火墙来过滤请求。这个效果最好,但是价格也是最贵的。
(2)本地防火墙
操作系统配有软件防火墙,Linux服务器一般使用iptables。例如,要拦截IP地址1.2.3.4的请求,您可以执行以下命令。
$ iptables-A  INPUT-s  1.2.3.4-j  DROP
Iptables比较复杂,我不太会用。对服务器性能有一定影响,无法阻止大规模攻击。
(3)网络服务器
网络服务器也可以过滤请求。截取IP地址1.2.3.4,nginx写如下。
位置/
否认1.2.3.4;}
Apache是用。带有以下段落的htaccess文件。
小于要求所有大于
要求所有授权
不要求IP  1.2.3.4小于/要求所有大于
如果你想要更精确的控制(比如自动识别和拦截频繁请求的IP地址),你需要WAF。DDOS防御这里就不详细介绍了。nginx的设置请参考这里和这里。
拦截Web服务器会消耗性能,尤其是Apache。用稍微大一点的攻击,这个方法没用。
第五,带宽扩展
前一节HTTP拦截的前提是请求必须有特征。而真正的DDOS攻击是毫无特色的,它的请求看起来像是正常的请求,来自不同的IP地址,无法拦截。这也是DDOS特别难防的原因。
当然,这种DDOS攻击的代价不低,普通网站不会有这种待遇。但是,真的遇到了怎么办?有什么根本的预防方法吗?答案很简单,就是尽量消化所有这些请求。餐厅30人300人,尽量把餐厅放大(比如临时再租一个门面,请几个厨师),让300人坐下来,不影响正常用户。
对于网站来说,是短时间内的快速扩张,提供几倍甚至几十倍的带宽来承受大流量的请求。这也是云服务提供商能够提供防护产品的原因,因为他们有大量的冗余带宽,可以用来消化DDOS攻击。
一个朋友教我一个方法,给我留下了很深的印象。一家云服务提供商承诺,每台主机将保证低于5G流量的攻击,因此他们一次购买了五台。
该网站设置在其中一台主机上,但不向用户公开。其他主机都是镜像,用来面对用户。DNS会平均分配这四个镜像服务器的访问量。一旦发生攻击,这种架构可以阻止20G流量。如果有更大的攻击,多买临时主机,不断扩大镜像。
第六,CDN
CDN是指将一个网站的静态内容分发到多个服务器,让用户就近访问,提高速度。所以CDN也是一种带宽扩展的方法,可以用来防御DDOS攻击。
网站内容存储在源服务器中,内容缓存在CDN上。用户只允许访问内容分发网络,如果内容不在内容分发网络上,内容分发网络会向源服务器发送请求。这样,只要CDN足够大,就能抵御很大的攻击。
但是这种方法有一个前提,网站的大部分内容必须是静态缓存的。对于基于动态内容的网站(如论坛),我们应该寻找其他方法来最小化用户对动态数据的请求。
上一节提到的镜像服务器,本质上就是自己搭建一个微型CDN。各大云服务提供商提供的高安全性IP背后也是如此:网站域名指向高安全性IP,提供缓冲层清理流量,缓存源服务器的内容。
这里有一个重点。一旦你在CDN上,不要透露源服务器的IP地址。否则,攻击者可以绕过CDN,直接攻击源服务器。之前的一切努力都是徒劳。搜索‘绕过CDN获取真实IP地址’,你就知道国内黑产行业有多猖獗了。

版权保护: 本文由 鬼影工作室 原创,转载请保留链接: http://www.guiyingw.cn/ddos/71.html