SYN洪泛攻击
在tcp的三次握手中,如果客户端不发送ACK来完成三次握手的第三步,那么通常一分多钟之后,服务器将中止半开连接并回收资源。
如果攻击者发送大量的TCP SYN报文段,而不完成第三次握手的步骤,那么服务器会不断为这些半开连接分配资源,导致服务器的连接资源被消耗殆尽。
当在服务器上发现大量的半连接状态,同时源ip地址是随机的,基本可以判断是一次SYN洪泛攻击。
SYN cookie -- 通过修改第二步握手中的序列号来实现
1. 当服务器收到一个SYN报文段时,先不为这个报文段生成半开连接。相反,服务器生成一个初始TCP序列号,又称为cookie。服务器利用一个散列函数,以SYN报文段源和目的地址和端口号为输入,将输出的cookie作为第二步握手的序列号(seq)返回给客户端。
2. 如果用户是合法的,他将返回一个ACK。对于一个合法的ACK, 在确认字段中确认号(ack)的值等于第二步握手中序列号值(seq)加一。服务器从ACK中取出确认号ack的值,同时根据ACK中源和目的地址和端口号运行相同的散列函数,如果输出的值加一等于从ACK中的ack值,那么合法。