还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

一、DDOS 是什么?

首先,了解一下,DDOS 是什么。 举例来说,我开了一家旅馆,正常情况下,最多可以容纳100个人同时住宿。正常情况下只要有顾客前来都住宿都能及时入住。但不幸的是,有个恶霸盯上了我的旅馆。他派出1000个人同时涌进旅馆要住宿。这些人看上去跟正常的顾客一样,每个都说"赶快入住"。但是,旅社的容量只有100个人,根本不可能同时满足这么多的住宿需求,而且他们把门口都堵死了,里三层外三层,正常住宿的客人根本进不来,实际上就把旅馆瘫痪了。 这就是 DDOS 攻击,它在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线。 DDOS 里面的 DOS 是 denial of service(停止服务)的缩写,表示这种攻击的目的,就是使得服务中断。最前面的那个 D 是 distributed (分布式),表示攻击不是来自一个地方,而是来自四面八方,因此更难防。你关了前门,他从后门进来;你关了后门,他从窗口跳起来。

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

DDOS攻击基本拓扑

二、DDOS 的种类

DDOS 不是一种攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断发明出来。网站运行的各个环节,都可以是攻击目标。只要把一个环节攻破,使得整个流程跑不起来,就达到了瘫痪服务的目的。 其中,比较常见的一种攻击是 cc 攻击。它就是简单粗暴地送来大量正常的请求,超出服务器的最大承受量,导致宕机。cc 攻击最多的时候全世界很多个 IP 地址轮流发出请求,每个地址的请求量在每秒200次左右。看访问日志的时候,就觉得那些请求像洪水一样涌来,一眨眼就是一大堆,几分钟的时间,日志文件的体积就大了100MB。 本文以下的内容都是针对 cc 攻击。

三、HTTP 请求的拦截

如果恶意请求有特征,对付起来很简单:直接拦截它就行了。 HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。 拦截可以在三个层次做。

(1)专用硬件 Web 服务器的前面可以架设硬件防火墙,专门过滤请求。这种效果最好,但是价格也最贵。

(2)本机防火墙 操作系统都带有软件防火墙,Linux 服务器一般使用 iptables。如下图:

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

根据需求,添加策略。

(3)Web 服务器

Web 服务器也可以过滤请求。如Apache:

/var/www/web/">

Order allow,deny

Allow from all

Deny from 10.0.0.1 #阻止一个IP

Deny from 192.168.0.0/24 #阻止一个IP段

Nginx如下:

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

Web 服务器的拦截非常消耗性能,尤其是 Apache。稍微大一点的攻击,这种方法就没用了。

四、带宽扩容

上面的 HTTP 拦截有一个前提,就是请求必须有特征。但是,真正的 DDOS 攻击是没有特征的,它的请求看上去跟正常请求一样,而且来自不同的 IP 地址,所以没法拦截。这就是为什么 DDOS 特别难防的原因。 当然,这样的 DDOS 攻击的成本不低,普通的网站不会有这种待遇。不过,真要遇到了该怎么办呢,有没有根本性的防范方法呢? 答案很简单,就是设法把这些请求都消化掉。30个人的餐厅来了300人,那就想办法把餐厅扩大(比如临时再租一个门面,并请一些厨师),让300个人都能坐下,那么就不影响正常的用户了。对于网站来说,就是在短时间内急剧扩容,提供几倍或几十倍的带宽,顶住大流量的请求。这就是为什么云服务商可以提供防护产品,因为他们有大量冗余带宽,可以用来消化 DDOS 攻击。 一个朋友传授了一个方法,给我留下深刻印象。某云服务商承诺,每个主机保 5G 流量以下的攻击,他们就一口气买了5个。网站架设在其中一个主机上面,但是不暴露给用户,其他主机都是镜像,用来面对用户,DNS 会把访问量均匀分配到这四台镜像服务器。一旦出现攻击,这种架构就可以防住 20G 的流量,如果有更大的攻击,那就买更多的临时主机,不断扩容镜像。

还记得DDOS攻击吗?几分钟带你了解并轻松有效的防范DDOS攻击!

CDN简单拓扑图

五、CDN

CDN 指的是网站的静态内容分发到多个服务器,用户就近访问,提高速度。因此,CDN 也是带宽扩容的一种方法,可以用来防御 DDOS 攻击。 网站内容存放在源服务器,CDN 上面是内容的缓存。用户只允许访问 CDN,如果内容不在 CDN 上,CDN 再向源服务器发出请求。这样的话,只要 CDN 够大,就可以抵御很大的攻击。不过,这种方法有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容为主的网站(比如论坛),就要想别的办法,尽量减少用户对动态数据的请求。 上一节提到的镜像服务器,本质就是自己搭建一个微型 CDN。各大云服务商提供的高防 IP,背后也是这样做的:网站域名指向高防 IP,它提供一个缓冲层,清洗流量,并对源服务器的内容进行缓存。 这里有一个关键点,一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器,前面的努力都白费。


分享到:


相關文章: