如何使用 iptables 阻止 tcp-reset 来抵御 DDoS 攻击?

如何使用 iptables 阻止 tcp-reset 来抵御 DDoS 攻击?

有人用随机数据包通过关闭的随机端口向我发送大量数据包。

我认为我的服务器正在使用 tcp-reset 数据包对此做出响应,这也占用了出站带宽。

如何使用 iptables 来阻止 tcp-reset 数据包?

答案1

目标DROP就是你想要的那个。

如果您只有一个盒子并且网络中没有其他机器与其连接,那么您可以阻止所有RESET数据包。

-A OUTPUT -p tcp --tcp-flags RST RST -j DROP

数据包过滤-HOWTO-7了解详情

如果您碰巧宕机,这对合法连接来说不太礼貌,并且会导致需要使用RESET数据包的已建立连接出现不必要的超时。这不是一个好主意,但如果它允许您处理 DDoS,那么暂时应该没问题。

如果您对此盒子的正常使用依赖于RESET为普通用户工作的数据包并且您只想阻止RESET攻击者的数据包,那么您将需要识别恶意数据包,以便我们只能阻止那些数据包。

这些数据包真的是随机的吗或者它们都有一些共同点?

-A INPUT -p tcp -j LOG

如果您LOG在 iptables 配置末尾添加一行,则可以使用该日志分析入站数据包以查看是否存在模式。源端口号和目标端口号的散点图可能会很有用。在 IP 空间图上绘制 IP 地址可能有助于识别恶意和良性范围,尽管我怀疑这不太可能产生有用的结果。简单地计算攻击 IP 地址的数量将很有用。如果数量足够小,您可以简单地将它们全部添加到 iptables 配置中。

即使您没有找到模式,由于肯定存在基于“过多重置数据包”的模式,因此您可以创建一个 fail2ban 规则,该规则将为在 y 秒内DROP导致超过 x 个数据包的任何 IP 地址添加规则。RESET

答案2

您可以使用“-j DROP”而不是“-j REJECT --with-tcp-reset”。

相关内容