Linux网络编程--洪水攻击详解
洪水攻击详解
①注解:洪水攻击(FLOOD ATTACK)是指利用计算机网络技术向目标主机发送大量无用的数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常服务的网络行为。
主要原理:利用了网络协议中安全机制或者直接用十分简单的ping资源的方法来对主机造成影响。
攻击手段:使用畸形报文让目标机处于处理或者等待,使用原始套接字进行程序设计。
分类:
ICMP回显攻击,利用原始套接字发送大量回显请求或者回显响应的数据,由于此数据协议栈默认是必须处理的,因此有影响
UDP,向目标主机UDP端口发送UDP报文,由于目标机需要对端口进行处理
SYN,利用TCP连接中三次握手,在发送一个SYN原始报文后,目标需要对发送的报文进行处理并等待超时
ICMP洪水攻击
原理:在ping基础上形成
分类:
直接洪水攻击:主机与目标的带宽比拼,用性能砸死他。缺点:目标机可以根据源ip,屏蔽攻击源,甚至可能被反向攻击。
伪装ip攻击:将发送方ip用伪装ip代替,将直接洪水攻击改进
反射攻击:并非自身攻击,而是利用伪装ip,让其他主机误认为目标机在向其发送ICMP请求,结果:目标主机需要对所有请求进行ICMP应答发送
UDP洪水攻击
UDPFlood防护
SYN洪水攻击
简介:又称拒绝服务攻击。是一种广为人知的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
原理剖析:
TCP三次握手:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.
攻击手段:
主机A发送ICMP的SYN请求给主机B,主机A发送的报文源地址为伪造IP。主机B的第二次握手之后需要等待时间来接受A的确认包,在超时时间内会一直占用资源。如果B处理三次握手的资源不能满足A发送数量,那么B就会资源殆尽。主机A发送的是原始报文,发送速度应当是足够高的,对B必然产生影响。
防护措施:
①缩短SYNtimeout超时时间。也就是第二次握手到第三次握手之间的等待时间。
②为每一个请求ip设置cookie,如果连续时间内收到某个ip请求,那么认为是攻击,从而拦截