如何在 Apache 中维护不断增长的被阻止 IP 地址

如何在 Apache 中维护不断增长的被阻止 IP 地址

当我们发现网站上有异常行为时,我会通过将 IP 地址添加到 Apache 配置中来阻止它们,如下所示:

<Directory /var/www/html>
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
  Deny from 1.1.1.1
  Deny from 2.2.2.2
  # and so on...
</Directory>

这很快就会变得难以处理,那么有没有标准的方法来处理这个问题呢?也许将禁止的 IP 列表移动到一个文件中?

谢谢

答案1

我会将所有拒绝的内容放入一个文件中:

# /etc/apache2/banned_ips.conf
Deny from 1.1.1.1
Deny from 2.2.2.2

然后将其包含在您的虚拟主机中:

<Directory /var/www/html>
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
  include /etc/apache2/banned_ips.conf
  # and so on...
</Directory>

答案2

如果您发现这些 IP 的行为不太好,那么在防火墙级别阻止它们可能比在 Apache 中阻止它们更好,这样可以节省 Apache 的一些负载。这种方法的缺点之一是会从您的 Apache 日志中丢失这些“攻击”(尽管这可能是一件好事,而不是坏事)。

如果您使用某种防火墙,那么它肯定会有一种添加坏 IP 的简单方法。如果您的 Web 服务器中没有防火墙,则应尝试在系统中安装一个:我建议在 Linux 中使用 shorewall,或者如果您只想阻止对 Web 服务器的访问,可以使用简单的 iptables 脚本。

答案3

这里有几个选项...

mod_security

Apache 的 mod_security 似乎是显而易见的选择,因为它可以直接与 IPTables 集成并在 TCP/IP 级别(而不是用户空间)阻止用户。

请参阅此处以获取解释http://spamcleaner.org/en/misc/modsec2ipt.html

csf/iptables 防火墙

我倾向于配置像 CSF 这样的软件防火墙 - 它可以通过速率限制/阻止滥用 IP 来增加另一层保护。

失败2ban

它需要一些配置,但您可以用它做一些非常聪明的事情。http://www.fail2ban.org/wiki/index.php/Apache

你现在的方式

另外,要评论你的原始帖子,你可以在允许/拒绝指令的一行上设置多个 IP,请参阅http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html

最后,如果您要继续使用您的方法 - 您可以使用相同的语法(减去标签)在 .htaccess 级别进行阻止

例如。

order allow,deny
allow from all
deny from 1.1.1.1 2.2.2.2 3.3.3.3/24

您当前的方法似乎不可扩展,并且依赖于您判断真实/恶意流量的能力 - 因此强烈建议使用上述自动化解决方案。

相关内容