当客户端发送RST数据包时,服务器会关闭连接吗?

当客户端发送RST数据包时,服务器会关闭连接吗?

我正在尝试使用 IPTables 阻止 RST 攻击。
当我搜索它时,我看到规则中设置了 RST 标志的数据包的速率受到限制。
我有点怀疑。我想我需要限制 RST / ACK 而不是 RST 的速率。
如果我没记错的话,当客户端决定中止现有连接时,服务器将收到一个 RST / ACK 数据包,服务器以 ACK 进行响应并关闭连接。
因此,通常服务器永远不会接收或发送 RST 数据包。我认为它总是 RST / ACK,
除非客户端被欺骗并且攻击者插入 RST 标志。
但为什么会关闭连接?
我可能错了,因为我到处都能看到它,但我认为攻击者需要插入 RST / ACK,这不正确吗?
服务器是否无法看到 RST / ACK 和没有 ACK 的 RST 之间的区别?

答案1

发送 RST 表示连接异常结束。结束连接的正常信号是 FIN。TCP
/IP 连接的两端都可以发送它们。接收方应该用 ACK 应答,这样发送方就知道这是可以的,否则它会一次又一次地重新发送信号,直到超时或收到 ACK。

如果您过滤了服务器接收 RST 的速率,则无需过滤 ACK,因为他只会为每个 RST 发送一次 ACK。
而且您不必过滤收到的 ACK,因为这不是威胁。
由于服务器在正常运行中很少收到 RST,因此通常会丢弃其中的大部分。
当外部主机发送真正的 RST 时,它有 75% 的几率被丢弃。因此服务器永远不会发送 ACK。因此主机一次又一次地发送它,直到它通过过滤器。因此服务器发送 ACK,然后就好了。

攻击中使用的 RST 信号包含伪造的源 IP 地址,目的是断开现有连接。这种攻击发明于 2003/2004 年左右。只有当目标拥有大量带宽时,这种攻击才有效,因为攻击者必须尝试数百万个 IP 地址 + 序列号才能使攻击成功。
由于伪造的 RST 包含随机 IP 地址 + 随机序列号,因此限制其速率是降低伪造 RST 与真实连接匹配机会的一种方法。
因此,这种攻击主要用于攻击者知道谁与谁连接的情况。在 T1 线路上,当攻击者确切知道要断开哪个源 IP 地址时,攻击仅需要 5 到 30 秒(如果线路完全空闲,则攻击需要更长时间。例如,如果线路繁忙率为 50%,则时间将加倍)。如果您对它们进行速率限制,则可能需要更长的时间。

相关内容