SYN攻击及防范
1.概述
SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
2.原理:
在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。
3.攻击方式:
-
1)Direct Attack 攻击方使用固定的源地址发起攻击,这种方法对攻击方的消耗最小
-
2)Spoofing Attack 攻击方使用变化的源地址发起攻击,这种方法需要攻击
方不停地修改源地址,实际上消耗也不大 -
3)Distributed Direct Attack 这种攻击主要是使用僵尸网络进行固定源地址的攻击
4.防御方法
TCB(TCP 传输控制块)是一种包含一个连接所有信息的传输协议数据结构
-
1)无效连接监视释放
不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源。 -
2)延缓TCB分配方法
从前面SYN Flood原理可以看到,消耗服务器资源主要是因为当SYN数据报文一到达,系统立即分配TCB,从而占用了资源。而SYN Flood由于很难建立起正常连接,因此,当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。常见的方法是使用Syn Cache和Syn Cookie技术。 -
3) Syn Cache技术:
这种技术是在收到SYN数据报文时不急于去分配TCB,而是先回应一个SYN ACK报文,并在一个专用HASH表(Cache)中保存这种半开连接信息,直到收到正确的回应ACK报文再分配TCB。 -
4)Syn Cookie技术:
Syn Cookie技术则完全不使用任何存储资源,它使用一种特殊的算法生成Sequence Number,这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS、时间等,在收到对方的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(Sequence Number-1)相同,从而决定是否分配TCB资源。 -
5)使用SYN Proxy防火墙
防火墙中提供一种SYN代理的功能,主要原理是对试图穿越的SYN请求进行验证后才放行。