Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

DDoS 攻击

$
0
0

DDoS 攻击

视频讲解DDoS 攻击,包括DDoS 的定义,攻击原理和防御措施

你好,我是好刚,这一讲我们来了解DDoS 攻击。

前段时间阮一峰的博客遭遇了DDoS 攻击,一个个人博客受到这种攻击,实在是说不过去。这里我们来看看DDoS 到底是怎么回事。

1. DDoS 是什么

DDoS 的全称是分布式拒绝服务,这个名字可以分为两部分:拒绝服务和分布式。

拒绝服务可以理解为:让一个网站无法访问,不能正常处理用户的请求。要达到这个目的,方法很简单:攻击者构造超过网站处理能力的请求量,耗尽网站的网络带宽和系统资源,让服务暂时中断或停止,从而让合法用户的请求无法及时处理。拒绝服务是一种攻击手段。

再来看下分布式:对于网站,一般都有很强的网络带宽和服务器,单个攻击者构造的请求攻击基本不可能达到网站服务器的处理极限,很可能网站没被压垮,攻击者自己先出问题。针对这种情况,攻击者会组织很多机器同时发出服务请求,一台不行就用很多台机器进行攻击,直到网站无法访问,这就叫分布式。

DDoS 攻击简单解释:就是大量机器,在短时间内发起大量请求,耗尽目标网站服务器的资源,使得网站无法响应正常的访问。

这就是DDoS 的原理,再来看下DDoS 的攻击方式。

2. DDoS 攻击

当一个请求从浏览器出发后,要经过网络传输,要与网站服务器建立TCP 连接,最后由网站WEB 服务进行处理,这里面各个环节,都可能被攻击。只要一个环节被攻破,就能使得整个流程跑不通,达到瘫痪服务的目的。

常见的攻击方法可以分为以下三类:

2.1 攻击网络带宽

第一类是攻击网络带宽,网络上数据包的数量达到或者超过上限的时候,会出现网络拥堵、响应缓慢的情况。DDoS就是利用这个原理,发送大量网络数据包,占满被攻击目标的全部带宽,从而造成正常请求无法处理,达到拒绝服务的目的。

常见的有ICMP 洪水攻击、或者UDP洪水攻击,通过发送大量报文,对网络造成拥堵,服务器响应速度变慢。

2.2 攻击系统

第二类是攻击系统,请求创建TCP 连接时,客户端需要与服务器进行三次握手,握手信息通常保存在连接表中,但是表的大小有限,当超过了存储量,服务器就无法创建新的TCP连接了。利用这一点,攻击者会建立大量恶意的TCP连接,占满被攻击目标的连接表,使网站无法接受新的TCP连接请求,达到拒绝服务的目的。

2.3 攻击应用

第三类是攻击应用,现在互联网的主要应用是Web 服务,也就是处理用户请求的地方,这使得它成为分布式拒绝服务攻击的主要目标。

具体实现是,攻击者利用大量的受控主机不断地向Web 服务器发送大量HTTP 请求,要求Web 服务器处理,这些恶意请求会完全耗尽服务器资源,让正常用户的Web 访问得不到处理,导致用户无法访问网站。一旦Web服务受到这种攻击,就会对其承载的业务造成致命的影响。

这种攻击WEB 服务器的方式也叫CC 攻击,CC (Challenge Collapsar),意思是“挑战黑洞”,之所以叫“挑战黑洞”,是由于在互联网早期,有一个叫“黑洞”(Collapsar)的系统能抵御DDoS 攻击,于是骇客只能研究出新的攻击方式,来挑战“黑洞”系统,这种攻击也就被命名为“挑战黑洞”。

阮一峰的博客遭遇的就是CC 攻击,恶意请求像洪水一样涌来,个人网站又没有任何防护,这种流量一来立刻就下线了。

我们再来看看,对于CC 攻击,都有哪些防御方法。

3. DDoS 防御 3.1 备份网站

防范 DDoS 的第一步,就是要有一个备份网站,或者一个临时主页。生产服务器万一下线了,可以立刻切换到备份网站,显示公告,告诉用户,网站出了问题,正在全力抢修。

3.2 拦截请求

第二步是拦截请求,根据请求日志,看下恶意请求是否有特征,如果有,对付起来很简单:直接拦截它就行了。

HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者它们的 User Agent 有特征,像包含某个特定的词语,那就把带有这类 UA 的请求拦截掉。

拦截可以在三个层次做:

deny 1.2.3.4

另外nginx 也有专门限制每秒请求数的模块 ngx_http_limit_req_module 和限制IP连接数的模块 ngx_http_limit_conn_module

如果想要更精确的控制(比如自动识别并拦截那些频繁请求的 IP 地址),就要用到 WAF。

3.3 带宽扩容

第三步是带宽扩容,拦截HTTP 请求有一个前提,就是请求必须有特征。但是很多时候,DDoS 攻击是没有特征的,它的请求看上去跟正常请求一样,而且来自不同的 IP 地址,所以没法拦截。这也是为什么 DDoS 特别难防的原因。

当然,这样的 DDoS 攻击的成本很高,普通的网站不会有这种待遇。真要遇到了这种攻击怎么办呢?

答案很简单,就是设法把这些请求都消化掉。对于网站来说,就是在短时间内急剧扩容,提供几倍或几十倍的带宽,顶住大流量的请求。

3.4 CDN

还有第四步,就是使用CDN,CDN 可以将网站的静态内容分发到多个服务器,用户就近访问,提升速度。

同时CDN 也是带宽扩容的一种方法,可以用来防御 DDoS 攻击。因为CDN 上面是网站内容的缓存,用户只允许访问 CDN,攻击者的请求也只会请求到CDN 上。这样,只要 CDN 够大,就可以抵御很大的攻击。另外如果CDN 上缓存的内容不存在了,也只有CDN 向源服务器发出请求,大大降低了源服务器的访问压力。

不过,CDN 有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容是不能缓存的。

还有一旦用了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器,CDN 也就白费了。现在大部分云服务商都有提供弹性IP 服务,可以动态挂载主机实例,当IP 受到攻击的时候,可以直接换一个IP地址。

安全无小事,DDoS 攻击就介绍到这,你听懂了吗。最后请帮忙关注和转发,这个很重要,多谢。我是好刚,好钢用在刀刃上,我们下期见。

参考资料 Denial of service attack wiki cn Denial of service attack wiki en DDoS 攻击的防范教程 Ddos和cc基本知识基本攻防 学习手册:浅析DDoS的攻击及防御 Module ngx_http_limit_req_module CC攻击竟然是源于一个误会

Viewing all articles
Browse latest Browse all 12749

Trending Articles