TCP三次握手的安全性问题:SYN洪泛攻击

SYN洪泛攻击

TCP三次握手的过程中,服务器为了响应一个收到的SYN,分配并初始化 连接变量缓存。然后服务器发送一个 SYN ACK 进行响应,并等待来自客户端的ACK报文段。如果某客户端不发送 ACK 来完成该三次握手的第三步,最终(通常在一分多钟以后)服务器将终止该半开连接并回收资源。
这种TCP连接管理为经典的 DOS攻击SYN洪泛攻击 提供了环境。在这种攻击中,攻击者发送大量的TCP SYN 请求连接 报文段, 而不完成第三次握手 ( 不发送 确认连接 报文段 )。 如果服务器不断地响应请求, 为这些半开连接分配资源 ( 但从未使用 ), 导致服务器地连接资源被消耗殆尽。这种SYN洪泛攻击是众多DOS攻击中的其中一种。

解决方法

  • 当服务器接收到一个 SYN 报文段时,它不知道时一个正常连接还是一次攻击,因此,服务器不会为该报文段生成一个半开连接。相反,服务器生成一个初始TCP序列号,该序列号是SYN报文段的源和目的IP地址与端口号以及仅有该服务器知道的秘密数的一个复杂函数 (散列函数)。 这个初始序列号也就是一个cookie。服务器发送具有这种特殊序列号的SYN ACK (** 允许连接 **)报文段。重要的是,服务器并不记忆该cookie或任何对应于SYN的其它状态信息
  • 如果客户是合法的,它将返回一个ACK (** 确认连接 )报文段。该报文段的 ack 值为 cookie值加1。根据这个值计算该ACK报文段是否合法,如果判定合法,服务器才会生成一个具有套接字的全开的连接**。
  • 在另一方面,如果客户没有返回一个ACK报文段,则初始的SYN并没有对服务器产生危害,因为服务器没有为它分配任何资源。
上一篇:抓包软件Wireshark常用过滤使用方法命令


下一篇:网络安全