一、拒绝服务攻击(Dos)
DOS攻击是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务,这是黑客常用的攻击手段之一。这些资源包括磁盘空间、内存、进程甚至网络带宽。
拒绝服务攻击通常是利用传输协议的漏洞、系统存在的漏洞、服务的漏洞,对目标系统发起大规模的攻击,用超出目标系统处理能力的海量数据包消耗可用系统资源、带宽资源等,或造成程序缓冲区溢出错误,致使其无法处理合法用户的正常请求,无法提供正常服务,最终导致网络服务瘫痪,甚至引起系统死机。
1、拒绝服务攻击的分类
实现拒绝服务攻击的方法多种多样,最常见的主要有以下几种。
1.滥用合理的服务请求
过度地请求目标系统的正常服务,占用过多服务资源,导致系统超载,无法响应其他请求。这些服务资源通常包括网络带宽、文件系统空间容量、开放的进程或连接数等。
2.制造大量无用数据
恶意地制造和发送大量各种随机无用的数据包,目的仅在于用这些大量的无用数据占据网络带宽,造成网络拥塞,使正常的通信无法顺利进行。
3.利用传输协议缺陷
利用传输协议上的缺陷,构造畸形的数据包并发送,导致目标主机无法处理,出现错误或崩溃,从而拒绝服务。
4.利用服务程序的漏洞
针对主机上的服务程序的特定漏洞,发送一些有针对性的特殊格式的数据包,导致服务处理错误而拒绝服务。
2、拒绝服务攻击的原理
DoS攻击是利用TCP协议三次握手的缺陷进行的。基于TCP协议的通信在通信之前,首先要协商,这个协商过程就是以三次握手实现的。三次握手流程如下:
第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认;
第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
当黑客要进行DoS攻击时,他会操纵很多僵尸主机向被攻击的服务器发送SYN数据包,当服务器回复ACK确认包后,僵尸主机不再回应,这样服务器就会保持这个半连接的存在进行等待。每一个这样的半连接都会耗费服务器的资源,如果有数量极大的半连接,服务器就会停止正常工作了。这里在介绍几个相关联的概念:
半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示半连接队列的最大容纳数目
SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间
3、常见拒绝服务攻击行为特征与防御方法
1.死亡之 Ping(Ping of death)攻击
在早期的阶段,路由器对包的最大大小是有限制的,许多操作系统 TCP/IP 栈规定 ICMP 包的大小限制在 64KB 以内。当发送过来的数据包尺寸大小超过 64KB,就会出现内存分配错误, 导致 TCP/IP 堆栈崩溃,造成接收主机的重启或死机。这就是这种“死亡之 Ping”攻击的原理所在。根据这一攻击原理,黑客们只需不断地通过 Ping 命令向攻击目标主机发送超过64KB的数据包,如果目标主机存在这样一个漏洞,就会缓存溢出,形成一次拒绝服务攻击。 防御方法:现在所有的标准 TCP/IP 协议都已具有对付超过 64KB 大小数据包的处理能力,并且大多数防火墙能够通过对数据包中的信息和时间间隔分析,自动过滤这些攻击。此外,对防火墙进行配置,阻断 ICMP 以及任何未知协议数据包,都可以防止此类攻击发生。
2. SYN 洪水(SYN Flood)
SYN 洪水是当前最流行的 DoS 与 DDoS 的方式之一,这是一种利用 TCP 协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽的攻击方式。
3.Land 攻击
Land 攻击是一种发送源地址和目的地址相同的数据包到服务器的攻击,结果通常使存在漏洞的服务器崩溃。 在 Land 攻击中,一个特别打造的 SYN 包中的源地址和目标地址都被设置成目标主机地址,目标主机在接收到这样的连接请求后,向它自己发送 SYN/ACK 消息,然后又向自己发回 ACK 数据包并创建一个空连接,每一个这样的连接都将保留直到超时掉。这种攻击会使目标主机建立很多无效的连接。 防御