我的服务器是 Debian 9。我已安装 fail2ban 并对其进行了配置。它可以与 sshd 配合使用(登录失败时禁止 IP),但我无法使其与 apache-auth 配合使用(IP 被禁止但 iptables 不会阻止它)。
jail.local 看起来像:
[DEFAULT]
bantime = 720h
findtime = 60m
banaction = iptables
mta = sendmail
destemail = [email protected]
action = %(action_mw)s
maxretry = 2
[sshd]
enabled = true
[apache-auth]
enabled = true
当我运行 compand 时:
fail2ban-client status sshd
它显示被禁止的 IP。当我运行命令时:
iptables -L -n
它显示了上一个命令中的 IP。所以它工作正常。
当我跑步时:
fail2ban-client status apache-auth
它显示禁止IP(我)。
iptables -L -n
不显示之前列表中的任何 IP。iptables 显示的内容可能很重要:
Chain f2b-apache-auth (0 references)
我仍然可以通过 WWW 连接到服务器。我使用 nginx 时遇到了同样的问题,所以我改用 apache,我认为这可以解决我的问题。
答案1
我的 apache jail.conf 部分看起来有点不同
[阿帕奇] 已启用=真 端口 = http,https 过滤器 = apache-auth 日志路径 = /var/log/apache*/*error.log 最大重试次数 = 6
您可以使用以下方式找到已加载的配置
fail2ban-client -d
您说您正在本地测试。请确保您的 IP 不在 中给出的网络掩码中ignoreip
。
由于该操作可能会在您的案例中触发,请查看actionban
那里的条目,看看它是否实际添加了所需的 iptables 规则。
也许var/log/fail2ban.log
有更多信息?
答案2
我找到解决办法了!
[apache-auth]
enabled = true
action = iptables-multiport[port="http,https"]
port = http,https
缺少“操作”。fail2ban 正在发送端口范围,而 iptables 期望单个端口……添加这样的“操作”后,一切都运行良好。
所以我们可以说问题已经解决了。
@Jonas Eberle - 你的配置在所有教程中,不幸的是也没有起作用 :(