SYN Flood攻击是一种典型的拒绝服务型(Denial of Service)攻击。所谓拒绝服务型攻击就是通过进行攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。无论是DoS攻击还是DDoS攻击,简单的看,都只是一种破坏网络服务的黑客方式,虽然具体的实现方式千变万化,但都有一个共同点,就是其根本目的是使受害主机或网络无法及时接收并处理外界请求,或无法及时回应外界请求。
其具体表现方式有以下几种:
1,制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。
2,利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。
3,利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。
SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作"TCP客户机(TCP Client)",TCP连接的接收方叫作"TCP服务器(TCP Server)"。值得注意的是在TCP服务器收到TCP SYN request包时,在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态成为半开连接(Half-open Connection)。
在最常见的SYN Flood攻击中,攻击者在短时间内发送大量的TCP SYN包给受害者,这时攻击者是TCP客户机,受害者是TCP服务器。根据上面的描述,受害者会为每个TCP SYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址(这一点对于攻击者来说是很容易伪造的)。这将给TCP服务器系统造成很大的系统负担,最终导致系统不能正常工作。
TCP三次握手建立连接后,并没有规定必须立即进行数据交换,连接可以永久保持空闲状态,如果客户端发生故障,则将无法被其他主机
iis7站长之家到,而tcp的连接保持机制允许服务端对连接加以监视并在合理的时间内获知这种故障,影响参数有下:
1 /proc/sys/net/ipv4/tcp_keepalive_time (7200)
如果在该参数指定的秒数内连接始终处于空闲状态,则内核向客户端发起对该主机的探测
2 /proc/sys/net/ipv4/tcp_keepalive_intvl (75)
该参数以秒为单位,规定内核向远程主机发送探测指针的时间间隔
3 /proc/sys/net/ipv4/tcp_keepalive_probes (9)
该参数规定内核为了检测远程主机的存活而发送的探测指针的数量,如果探测指针的数量已经使用完毕仍旧没有得到客户端的响应,即断定客户端不可达,关闭与该客户端的连接,释放相关资源。
以上三个参数 7200+9*75 导致一条失效的连接在经过2小时11分钟后才被丢弃,降低上述数值可以减少失效连接所占资源的时间。