0

我可以在我的 apache 错误日志中看到一个 IP 尝试定期访问一个不存在的文件。Fail2ban 不会自动禁止这个 ip,因为请求的频率太慢了。

1)那么如何手动将此IP添加到fail2ban的非永久禁止列表中?也许还有其他工具/方法在 X 小时内禁止 IP(X 参数化)?

2) 我在哪里可以查看被fail2ban 实际禁止的IP 的完整列表?

谢谢。

4

1 回答 1

0

我建议您使用apache-nohome过滤器,我认为它应该filter.d默认包含在您的目录中 - 如果没有,请apache-nohome.conf在您的filter.d子目录中创建包含以下内容的文件:

# Fail2Ban filter to web requests for home directories on Apache servers
#
# Regex to match failures to find a home directory on a server, which
# became popular last days. Most often attacker just uses IP instead of
# domain name -- so expect to see them in generic error.log if you have
# per-domain log files.

[INCLUDES]

# overwrite with apache-common.local if _apache_error_client is incorrect.
before = apache-common.conf

[Definition]


failregex = ^%(_apache_error_client)s (AH00128: )?File does not exist: .*/~.*

ignoreregex =

# Author: Yaroslav O. Halchenko <debian@onerussian.com>

apache-nohome.local然后,如果您需要修改正则表达式,您可以通过在同一目录中创建一个来修改它,这将覆盖.conf版本(根据fail2ban 文档)。

一旦你创建了这个文件,你需要在你的 jail 配置中包含一个适当的相应段 - 如果你还没有这样做,请将你的 jail.conf 文件复制到 jail.local 进行编辑,并插入一个类似于以下的段, 举个例子:

[apache-nohome]

enabled  = true
filter   = apache-nohome
action   = iptables-allports[name=apache-nohome]
           sendmail-whois[name=apache-nohome, dest=you@yourdomain.tld, sender=yourbox@yourdomain.tld]
logpath  = /var/log/httpd/error.log*
maxretry = 5
findtime = 86400 ; 1 day (specified in seconds)
bantime = 2592000 ; 1 month (specified in seconds)

简单解释一下上述监狱 - 这将在 24 小时内 5 个实例后禁止与 apache-nohome 过滤器中的失败正则表达式匹配的主机的所有 IP 流量,并禁止该 IP 一个月。然后它会向您发送一封电子邮件,其中包含违规 IP 的 WHOIS 详细信息。您当然可以将maxretry值或findtime或值修改为您希望的任何值,如果您不希望收到有关每个禁令的电子邮件bantime,甚至可以从操作中删除该行。sendmail-whois您可能还希望修改 logpath 值以适合您希望扫描的任何日志 - 我只是提供了 CentOS 6.5 下 httpd 的默认错误日志路径作为示例。

希望这可以帮助!

于 2014-12-01T10:20:13.317 回答