Linux:防止传出的TCP泛滥


9

我在负载均衡器后面运行了数百台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

干杯!

Answers:


3

我认为最好的解决方案(对我而言效果很好)是限制目标ip的连接/数据包数量。将限制设置为合理的速率将阻止攻击者向目标发送大量连接。设置端口和协议不是一个好主意,因为如果攻击者今天发送HTTP Flood,明天他将使用其他类型的攻击。因此,限制每个IP的连接数通常可以解决您的问题。

希望对您有所帮助:)


-3

我一直采取的立场是,Web服务器根本不应该建立出站TCP连接-只能在服务器响应入站请求时发送流量。(我也只允许Web服务器和SSH允许入站TCP。)(与此相关,我也认为Web服务器永远不是发送邮件的正确主机。)这不仅会阻止出站攻击,还会增加一些难度攻击您的系统(黑客无法获得xterm窗口或将其工具包获取到您的主机)。


好的,那么一个网站如何去从另一个网站获取RSS提要呢?
迈克尔·汉普顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.