SYN Flooding
概念:
1. 发生于第四层,利用三次握手。
2. 攻击者发SYN(是TCP三次握手中的第一个数据包),而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个连接就处于挂起状态(半连接)。服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。
3. 大量的这种TCP连接会极大消耗服务器CPU和内存,最后导致死机
防范:
1. 降低SYN timeout时间。
更改主机系统设置,使得主机尽快释放半连接的占用;
2. 采用SYN cookie设置。
服务器收到SYN包时,不分配任何资源,而是根据这个SYN包计算出一个带cookie值的SYN+ACK包(连接的信息都被保存在ack序列号字段)然后返回。在收到客户端发来的ACK包(合法客户端会将cookie值作为ACK包的ack确认号)时,服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,才分配真正内存。
半开连接(Half-open Connection)
如果一方异常关闭(断网,断电),而另一方并不知情。处于半打开的状态,如果双方不进行数据通信,是无法发现问题的。可以引入心跳机制,以检测半打开状态,检测到了发送RST重新建立连接