第13章 应用层拒绝服务攻击
1、DDOS简介
DDOS又称为分布式拒绝服务,全称是Distributed Denial of service。DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
2、应用层DDOS
CC攻击:CC攻击是对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。
防御应用层DDOS:
- 限制请求频率。在应用中针对每个“客户端”做一个请求频率的限制。
- 做好性能优化。合理的使用memcache就是一个很好的优化方案。
- 做好网络架构优化。利用负载均衡分流。
- 实现一些对抗手段,如限制每个IP地址的请求频率。
3、资源耗尽攻击
Slowloris攻击:是在2009年由著名Web安全专家RSnake提出的一种攻击方法,以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么WebServer的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。
要保持住这个连接,RSnake构造了一个畸形的HTTP请求,准确地说,是一个不完整的HTTP请求。
GET / HTTP/1.1\r\n
HOST: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n
在正常的HTTP包头中,是以两个CLRF表示HTTP Headers部分结束的。
Content-Length: 42\r\n\r\n
由于Web Server只收到了一个\r\n,因此将认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。此时客户端再发送任意HTTP头,保持住连接即可。
“有限”的资源是WebServer的连接数。这是一个有上限的值,比如在Apache中这个值由MaxClients定义。如果恶意客户端可以无限制地将连接数占满,就完成了对有限资源的恶意消耗,导致拒绝服务。
HTTP POST DOS:
其原理是在发送HTTP POST包时,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,保持住这个连接不断开。当客户端连接数多了以后,占用住了服务器上可用的连接,从而导致DOS。
Server Limit DOS:
Cookie也能造成一种拒绝服务,称为Service Limit DOS。
假如攻击者通过XSS攻击,恶意的往客户端写入一个超长的Cookie,则该客户端在清空Cookie之前,将无法再访问该Cookie所在域的任何页面。这是因为Cookie也是放在HTTP包头里发送的,而web Server默认会认为这是一个超长的非正常请求,从而导致“客户端”的拒绝服务。
4、小结
应用层拒绝服务攻击本质是对有限资源的无限滥用所造成的,解决这个问题的核心思路就是限制每个不可信任的资源使用者的配额。可以使用验证码,但不是最好方式。