我可以在apache的错误日志中看到一个IP尝试定期访问一个不存在的文件。由于请求频率太低,Fail2ban不会自动封禁该ip。
1)如何手动将该ip添加到fail2ban的非永久封禁名单中?也许还有其他工具/方法可以在X小时内禁止IP (使用X参数化)?
2)在哪里可以看到fail2ban实际封禁的完整IP列表?
谢谢。
发布于 2014-12-01 18:20:13
我建议您使用apache-nohome
过滤器,我认为默认情况下它应该包含在您的filter.d
目录中-如果不是,请在您的filter.d
子目录中创建包含以下内容的文件apache-nohome.conf
:
# 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 documentation)。
创建此文件后,您将需要在监狱配置中包含相应的段-如果您尚未执行此操作,请将您的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的默认错误日志路径作为示例。
希望这能有所帮助!
https://stackoverflow.com/questions/27188026
复制相似问题