我在负载均衡器后面运行了数百台Web服务器,托管了许多应用程序过多的站点(我无法控制这些站点)。大约每月一次,其中一个站点遭到黑客攻击,并上载了洪水脚本,以攻击某些银行或政治机构。过去,这些始终是UDP泛洪,通过阻止单个Web服务器上的传出UDP流量可以有效地解决这些问题。昨天,他们开始使用许多TCP连接到端口80从我们的服务器中涌入一家大型美国银行。由于这些连接类型对于我们的应用程序完全有效,因此仅阻止它们是不可接受的解决方案。
我正在考虑以下替代方案。您会推荐哪一个?您实现了这些,如何实现?
- 使用源端口!= 80限制Web服务器(iptables)传出TCP数据包
- 相同,但有排队(tc)
- 速率限制每位用户每台服务器的传出流量。由于每个应用程序服务器可能有1000个不同的用户,因此管理负担非常大。也许是这样:如何限制每个用户的带宽?
- 还要别的吗?
自然,我也在寻找方法以最大程度地减少黑客进入我们托管的网站之一的可能性,但是由于该机制永远不会100%防水,因此我想严格限制入侵的影响。
更新:我目前正在使用这些规则进行测试,这将阻止这种特定的攻击。您将如何提出使它们更通用的建议?当我仅对SYN数据包进行速率限制时,是否会错过已知的TCP DoS攻击?
iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset
干杯!