互联网上典型的 apache web 服务器的 iptables 应该发挥什么作用来帮助抵御 DoS 攻击

互联网上典型的 apache web 服务器的 iptables 应该发挥什么作用来帮助抵御 DoS 攻击

我需要知道互联网上典型的 apache web 服务器的 iptables 应该发挥什么作用来帮助防止或限制 DoS 或其他攻击。

答案1

正如您所指出的,IPTables 并不是解决 DoS 问题的最终解决方案 - 至少有一个原因是您的服务器仍然会接收数据包并且必须对其进行处理。如果发送了足够多的数据包,您的带宽将被耗尽,并且您的服务器仍将进行大量处理,而合法请求可能无法通过。

尽管如此,IPTables 仍有其用途,并且如果您无法设置服务器外部(上游)的设备,它们可能是一种合理的防御措施。

首先要关闭除您需要的端口之外的所有端口。对于 Web 请求,您需要打开端口 80(如果您使用 HTTPS/SSL,则需要打开端口 443)。您的服务器运行的任何其他服务(SSH、FTP、POP、SMTP、IMAP 等)都需要打开其他端口。

需要注意的是 - 在阻止太多端口之前,请确保您已经实施了一些措施来重置您的配置,以防您被“锁定”。

至于 DoS,您可能想查看最近的模块。它将监视来自给定 IP 地址的传入请求数,可以这样使用:如果超出您指定的限制,则来自相关 IP 地址的所有未来数据包都将被丢弃(在您指定的时间内)。

例如,您可以说,如果 60 秒内来自某个 IP 的新请求超过 100 个,则删除来自该 IP 的请求 1 小时。

如果您想要更复杂的东西,您可以实施分层系统,第一次阻止 IP 10 分钟,第二次阻止 30 分钟,等等。

我使用类似的东西,但对于非 HTTP 连接(例如 SSH、FTP 等),你可以看到这里对于您来说,一个可能的(不完整的)实现可能如下所示:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80 -m recent --update --seconds 1800 --name BANNED --rsource -j DROP
-A INPUT -p tcp -m multiport --dports 80 -m state --state NEW -j ATTK_CHECK

#OTHER PRE-EXISTING RULES

-A ATTK_CHECK -m recent --set --name ATTK –-rsource
-A ATTK_CHECK -m recent --update --seconds 60 --hitcount 100 --name ATTK --rsource -j ATTACKED
-A ATTK_CHECK -j ACCEPT
-A ATTACKED -m limit --limit 5/min -j LOG --log-prefix "IPTABLES (Rule ATTACKED): " --log-level 7
-A ATTACKED -m recent --set --name BANNED --rsource -j DROP

如果端口 80 上的点击次数每分钟超过 100 次,并且攻击持续,则基本上禁止 30 分钟,并继续延长 30 分钟。

答案2

您或许可以在服务器操作系统本身(而不是 Apache)上设置一个程序,如果某个 IP 在 X 分钟内访问 X 次,该程序将禁止该 IP... 也将其设为临时禁止,因此... 谷歌搜索特定程序,因为我不知道您使用的是什么操作系统。祝您好运。

\编辑

抱歉,CentOS。知道了。

相关内容