一、与DoS攻击相关的几个概念
1. DoS:Denial of Service,拒绝服务,即无法及时接收并处理外界合法请求。
2. DoS攻击:指造成DoS的攻击行为,目的是使攻击目标计算机无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。其中,带宽攻击是指以极大通信量冲击通往目标计算机的网络,使得所有可用网络资源都被消耗殆尽,导致合法的用户请求无法通过,无法到达目标计算机。而连通性攻击则是指用大量的连接请求攻击目标计算机,使得所有可用的操作系统资源都被消耗殆尽,导致目标计算机无法处理合法用户的请求。
3. DDoS攻击:DDoS即Distributed Denial of Service,DDoS攻击即是分布式DoS攻击。攻击者借助客户/服务器技术,控制并利用多个傀儡机(肉鸡),对一个或多个攻击目标发起DDoS攻击,从而成倍地提高DoS攻击的威力。
4. DRDoS攻击:DRDoS即Distributed Reflection Denial of Service,DRDoS攻击即是分布式反射DoS攻击。DRDoS攻击与DoS攻击、DDoS攻击不同,它不是直接对攻击目标发起请求,而是通过IP欺骗,发送大量源IP地址为攻击目标IP地址的数据包给攻击主机(第三方),然后攻击主机对IP地址源(即攻击目标)做出大量回应,从而形成DoS攻击。攻击者往往会选择那些响应包远大于请求包的第三方服务来利用,以达到放大反射攻击的效果,这样的服务包括DNS、NTP、SSDP、Chargen、Memcached等。
二、一些常见DoS攻击的攻击原理
1. SYN泛洪
SYN泛洪攻击是利用了TCP协议的缺陷进行的DoS攻击。首先看看下图所示的TCP连接三次握手过程简略示意图:
、
一般正常的三次握手过程在①②③这三步执行之后就完成,客户端与服务器就可成功建立TCP连接。如果客户端通过伪造不存在的IP作为源地址向服务器发送SYN报文,服务器收到之后回应一个SYN+ACK报文并在自己的半连接队列中为收到的SYN报文创建一个条目,等待客户端的ACK应答。但由于客户端采取了IP欺骗,服务器发送的SYN-ACK报文根本得不到回应,这时服务器会不断等待、重传直至重传次数超过系统规定的最大重传次数才停止,并将这个SYN项目从半连接队列中删除。SYN泛洪攻击就是在短时间内伪造大量不存在的IP地址并快速发送大量这样的SYN报文给攻击目标计算机,使其半连接队列被阻塞,正常的SYN请求反而被丢弃,同时还要不断对这个庞大的半连接队列中所有项目进行SYN+ACK的重试,系统可用资源急剧减少,系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。
SYN泛洪防御:
<1>缩短SYN Timeout时间,即从服务器收到一个SYN报文到确认这个SYN报文无用这个过程花费的时间。
<2>设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续收到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包一概丢弃。
2. 死亡之ping
在TCP/IP的RFC文档中对包的最大尺寸都有严格限制规定,许多操作系统的TCP/IP协议栈都规定ICMP包大小为64KB,且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。死亡之ping就是故意产生畸形的ping包,声称自己的尺寸超过ICMP包大小上限,或者直接发送尺寸超过ICMP包上限的报文,使未采取保护措施的网络系统出现内存分配错误,缓冲区溢出,导致TCP/IP协议栈崩溃,最终报文接收方宕机。
3. 泪滴
对于一些大的IP数据包,需要对其进行拆分传送,在IP报头中有一个拆分标志和一个偏移字段,如果拆分标志为1,则表示这是一个大IP包,接收方需要根据偏移字段对接收到的几个IP包分段进行重新组装成一个完整的大IP包。由于在TCP/IP协议栈的实现中,对IP碎片中的包的标题头所包含的信息是信任的,泪滴攻击就是利用这一漏洞,在IP数据包中把偏移字段设置成错误的数值,这样接收方就无法按照数据包中的偏移字段值正确组装这些IP包分段,但是接收方会不断尝试,最终可能导致目标计算机操作系统资源耗尽而崩溃。
4. UDP泛洪
Unix服务器默认会打开一些容易被黑客恶意利用的UDP服务。例如,echo服务会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在接收到每一个数据包时随机反馈一些字符。UDP泛洪就是利用这两个简单的TCP/IP服务的漏洞进行恶意攻击,通过伪造与某一主机的chargen服务之间的一次UDP连接,回复地址指向开着echo服务的另一台主机,通过将chargen和echo服务互指,来回传送毫无用处且占满带宽的垃圾数据,在两台主机之间生成足够多的无用数据流,将很快导致网络可用带宽耗尽。
5. Land攻击
Land攻击就是向攻击目标发送一个SYN包,包中源地址和目标地址都设置成攻击目标的IP,这样将导致接收服务器创建一个空连接,每一个连接都将保留直到超时。在Land攻击下,许多Unix将崩溃,NT变得极其缓慢。
6. IP欺骗
利用TCP协议栈的RST位,使用IP欺骗,伪装成与攻击目标连接的合法用户,向攻击目标发送一个带有RST位的TCP数据段,使攻击目标清空缓冲区中与合法用户已经建立好的连接,这时合法用户再发送数据到攻击目标会被拒绝服务,因为已经不存在连接了,只能重新开始建立新的连接了。