我似乎是 TCP 重置攻击的受害者,目的是阻止我下载特定数据。我知道目前情况确实如此。
目前我住在酒店,因此无法访问这里的路由器防火墙,但我的问题是:是否可以通过 iptables 防止 TCP 重置式攻击?
我尝试使用 iptables 阻止 RST(和 FIN)数据包,如下所示:
iptables -I OUTPUT -p tcp --tcp-flags ALL RST -j DROP iptables -I INPUT -p tcp --tcp-flags ALL RST -j DROP (Same for FIN packets)
但是,攻击者似乎仍然能够终止连接——通过分析 wireshark,我可以看到 RST 数据包仍然从我的 IP 发送到服务器。鉴于 iptables 设置,我不明白它为什么会发送此数据包。
连接到同一 LAN 的攻击者是否仍有可能向服务器发送 RST 数据包并终止我的连接?在这种情况下,我想我需要控制网络防火墙 - 而目前我还没有。
VPN 无法阻止攻击——大概是因为攻击者知道我正在使用的服务器。
我还想指出,我正在使用 qubes,所有互联网流量都经过 iptables 规则处于活动状态的 sys-net qube
我正在寻找一种方法来减轻此类攻击,即使使用防火墙并阻止这些数据包,似乎连接仍然可能被坚定的攻击者终止,而从 wireshark 中我几乎没有找到任何证据——我推测他们自己使用欺骗性的 IP 将数据包发送到服务器。
答案1
VPN 无法阻止攻击——大概是因为攻击者知道我正在使用的服务器。
如果他们能够监控你的流量并向你发送 RST,那么他们也可以很容易地发送伪造的 RST到服务器,对此你无能为力。一旦完成,服务器将停止向你发送数据,并且服务器收到的重置你来自服务器的请求是完全合法的(因此忽略它们是无用的)。
TCP 本身无法有效防范重置攻击(而后来的传输和隧道协议,如 QUIC 或 Wireguard设计考虑到这一点),因此改变网络以使攻击者无法访问流量似乎是唯一的选择。
解决方法取决于攻击者在您和服务器之间的位置。当您的 VPN 服务器距离您较远(可能更靠近目标服务器)时,VPN 可能更有效。例如,恰好与目标服务器位于同一数据中心的 VPN 端点应该可以很好地工作(如果站点托管在公共云提供商上,这很容易实现)。
答案2
由于您住在酒店,因此 TCP 重置攻击可能不是专门针对您的。我可以看到两种可能性:
- 酒店的路由器或酒店与互联网之间的其他路由节点已被入侵
- 酒店网络状况不佳,导致断线。
以下是不良连接导致 TCP 重置的原因,摘自维基百科 TCP 重置攻击:
一种常见的应用是,当 TCP 连接正在进行时,计算机(计算机 A)崩溃了。另一端的计算机(计算机 B)将继续发送 TCP 数据包,因为它不知道计算机 A 已经崩溃。当计算机 A 重新启动时,它将从旧的崩溃前连接接收数据包。计算机 A 不知道这些数据包的上下文,也不知道如何处理它们,因此它可能会向计算机 B 发送 TCP 重置。此重置让计算机 B 知道连接不再有效。计算机 B 上的用户现在可以尝试另一个连接或采取其他操作。
连接中断的情况,将与上面描述的计算机崩溃的效果非常相似。
您可能并未受到攻击,只是连接不佳。
您可以联系酒店工作人员,请他们联系其 ISP。在他们无法提供帮助的最坏情况下,您可以使用手机作为热点。