Network Attack - LAND Attack

Local Area Network Denial

LAND 是一种 DoS 攻击,发现自 1997 年。通过发送伪造的 TCP/IP 数据包,使得目标系统陷入自我循环状态,耗尽目标系统的资源并导致服务瘫痪。

这种网络攻击的机制就是向目标主机发送伪造的 TCP SYN 包。我们知道, TCP Socket 由一个四元组所标识,在这个伪造的 TCP SYN 包中,满足:

  • 源IP地址=目的IP地址
  • 源端口=目的端口

如此,当目标主机收到 TCP SYN 包后,它就会进入 SYN-RECV 并回发 SYN-ACK 的 TCP 响应报文,而这个响应报文的目的地是“自己”。但由于服务器并没有主动发送连接请求,所以这个 SYN-ACK 包会被视为无效报文而被直接丢弃。

在服务器发送 SYN-ACK 包后,它就会等待客户端返回一个 ACK 响应报文以完成三次握手。而服务器为什么不向自己发送ACK报文呢?这是由 TCP 协议栈决定的,即 ACK 报文的发送方必须是主动发起连接的角色。(服务器进入 SYN-RECV 状态,只有进入 SYN-SEND 状态才能发送 ACK 包)

因为满足了上述的两个条件,导致客户端角色缺失,而服务器实际上只会转换到 SYN-RECV 状态,所以服务器并不会主动发送 ACK 包。这样就会导致服务器的半开连接状态(SYN-RECV),这种状态回一直消耗资源,直到连接超时。每个伪造的连接都会占用内核的连接表条目和内存,当连接表满载后,目标主机无法再处理新的合法连接请求,即 DoS 。

Block Those Self-Directed Packets

现在,这种网络攻击已经不再起作用了。现代操作系统通过更新补丁加入了防自连接保护,在系统层面过滤掉源 IP =目的 IP 的包且源端口=目的端口的 SYN 包。

在网络核心,路由器或交换机会在防火墙上配置规则,丢弃源 IP 和目的 IP 相同的数据包,启用反 IP 欺诈同样可以避免自反连接造成的 LAND 网络攻击。