syn flood攻击
最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源 从而使合法用户无法得到服务的响应。syn flood属于Dos攻击的一种。
如果恶意的向某个服务器端口发送大量的SYN包 则可以使服务器打开大量的半开连接 分配TCB Transmission Control Block , 从而消耗大量的服务器资源 同时也使得正常的连接请求无法被相应。当开放了一个TCP端口后 该端口就处于Listening状态 不停地监视发到该端口的Syn报文 一 旦接收到Client发来的Syn报文 就需要为该请求分配一个TCB 通常一个TCB至少需要280个字节 在某些操作系统中TCB甚至需要1300个字节 并返回一个SYN ACK命令 立即转为SYN-RECEIVED即半开连接状态。系统会为此耗尽资源。
常见的防攻击方法有
无效连接的监视释放
监视系统的半开连接和不活动连接 当达到一定阈值时拆除这些连接 从而释放系统资源。这种方法对于所有的连接一视同仁 而且由于SYN Flood造成的半开连接数量很大 正常连接请求也被淹没在其中被这种方式误释放掉 因此这种方法属于入门级的SYN Flood方法。
延缓TCB分配方法
消耗服务器资源主要是因为当SYN数据报文一到达 系统立即分配TCB 从而占用了资源。而SYN Flood由于很难建立起正常连接 因此 当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。常见的方法是使用Syn Cache和Syn Cookie技术。
Syn Cache技术
系统在收到一个SYN报文时 在一个专用HASH表中保存这种半连接信息 直到收到正确的回应ACK报文再分配TCB。这个开销远小于TCB的开销。当然还需要保存序列号。
Syn Cookie技术
Syn Cookie技术则完全不使用任何存储资源 这种方法比较巧妙 它使用一种特殊的算法生成Sequence Number 这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息 以及对方无法知道而己方比较固定的一些信息 如MSS(Maximum Segment Size 最大报文段大小 指的是TCP报文的最大数据报长度 其中不包括TCP首部长度。)、时间等 在收到对方 的ACK报文后 重新计算一遍 看其是否与对方回应报文中的 Sequence Number-1 相同 从而决定是否分配TCB资源。
使用SYN Proxy防火墙
一种方式是防止墙dqywb连接的有效性后 防火墙才会向内部服务器发起SYN请求。防火墙代服务器发出的SYN ACK包使用的序列号为c, 而真正的服务器回应的序列号为c’, 这样 在每个数据报文经过防火墙的时候进行序列号的修改。另一种方式是防火墙确定了连接的安全后 会发出一个safe reset命令 client会进行重新连接 这时出现的syn报文会直接放行。这样不需要修改序列号了。但是 client需要发起两次握手过程 因此建立连接的时间将会延长。
点赞 评论本文链接: http://cachesyn.immuno-online.com/view-753917.html