1、DDOS distributed Denial of Service 分布式拒绝服务;
利用合理的请求造成资源过载,导致服务不可用。
常见的DDOS攻击:SYN flood、UDP flood、ICMP flood等,其中SYN flood尤其严重。
TCP三次握手:SYN(x)、SYN/ACK(x+1,y)、ACK(x+1,y+1)
SYN flood攻击时,伪造大量源IP,向服务器发送大量SYN,服务器返回SYN/ACK包,并持续重试SYN time(一般30s-2min);从而持续消耗服务器资源(CPU和内存),导致无暇处理正常连接。
对抗SYN flood:SYN Cookies/SYN Proxy、safereset等算法;
本质:通过各种方式,对来自于同一个源IP的数据包进行分析,如果判定受到攻击,则丢弃该源IP的包。
2、应用层DDOS
应用层DDOS攻击时TCP连接已建立,源IP为真实存在,商业Anti-DDOS主要防御网络DDOS。
CC攻击 Challenge Collapasar(黑洞):对一些消耗资源较大的页面不断发起正常请求,以达到消耗服务器资源的目的。
针对应用层DDOS攻击的防御:在应用中针对每个“客户端”进行请求频率限制;限制需放在业务逻辑之前。
同一客户端的判断依据:IP、cookie,IP可通过代理或傀儡机获取,cookie可被清空;
应用层DDOS防御:
1)优化应用代码性能;
2)优化网络架构;
3)实施对抗手段,如限定每个IP的请求频率。
3、验证码
CAPTCHA 全自动区分计算机和人类的图灵测试
验证码破解:
1)图像识别算法;
2)验证码实现上的漏洞
a、验证码验证过后sessionID未更新,使用原sessionID可重复提交同一验证码;
b、提前将所有验证码图片生成好,以哈希过的字符串作为图片文件名,验证文件名;攻击者可收集图片名“彩虹表”,修补方法:验证码文件名需要随机化,满足“不可预测性”原则。
4、防御应用层DDOS
判断HTTP头中的User-Agent来识别客户端
让客户解析一段JavaScript
优化Apache配置参数:Timeout、KeepAliveTimeout、MaxClients;
对抗模块:mode_qos、mod_evasive
Yahoo解决思路:根据IP和Cookie等信息,计算客户端的请求频率并进行拦截。
5、资源耗尽攻击
slowloris攻击:以极低速度往服务器发送HTTP请求,以消耗连接数。
正常HTTP包头以两个CLRF作为结束,攻击者只发一个,并保持连接不释放。
HTTP POST DOS攻击:为POST包指定一个非常大的content-length,并以极低速度发包,保持连接不释放,从而导致DOS(拒绝服务)
解决办法:web应用防火墙或定制的webserver安全模块
Server Limit DOS web server对HTTP包头有长度限制,如Apache,默认Request Header为8192字节,Request Body默认2GB;如果客户端发送的HTTP包头超过这个大小,则服务器返回4xx错误
攻击者可能通过XSS攻击,恶意向客户端写入一个超长的cookie,则该客户端在清空该cookie之前,均无法访问该cookie所在域的任何页面,因为cookie也是放在HTTP包头里面的。
解决办法:调整apache参数LimitRequestFieldSize
6、正则表达式导致的攻击:RdDOS
当正则表达式写得不好时,就有可能被恶意输入利用,消耗大量资源,从而造成DOS。
如:^(a+)+$