1

我在 Centos 6 服务器中使用了 fail2ban/iptables。
我搬到了 Centos 7,现在我正在使用 fail2ban/firewallD(由 Webmin/Virtualmin 安装,默认设置)

这些是 仅显示 的cat /var/log/maillog | grep "disconnect from unknown"屏幕截图 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述
cat /var/log/fail2ban.log | grep Ban

2019-10-27 16:52:22,975 fail2ban.actions [8792]:通知 [proftpd] Ban 111.225.204.32

此外tailf /var/log/fail2ban.log显示多个“已被禁止”的同一 IP。在这种情况下,fail2ban,在maxretry达到后它会尝试禁止 IP。 在此处输入图像描述

这是我的配置(部分),我将它们保留为默认设置,但更改了bantimes。

监狱本地

[后缀]
enabled = true
端口 = smtp,465,submission
bantime = -1

[postfix-sasl]
启用 = true
端口 = smtp,465,submission,imap3,imaps,pop3,pop3s
bantime = -1

[dovecot]
启用 = true
端口 = pop3、pop3s、imap、imaps、submission、465、sieve
bantime = -1

监狱.conf

[默认]
findtime = 600
maxretry = 5
backend = auto
filter = %(__name__)s
port = 0:65535
banaction = iptables-multiport
banaction_allports = iptables-allports
action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="% > (port)s", protocol="%(protocol)s", chain="%(chain)s"]
action = %(action_)s

jail.d/00-firewalld.conf

[默认]
banaction = firewallcmd-ipset

这些文件存在:action.d/firewallcmd-ipset.conffilter.d/postfix.conf

firewall-cmd --direct --get-all-rules

ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-default src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport - -dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports 10000 -m set --match-set fail2ban-webmin-auth src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh,sftp -m set --match-set fail2ban-ssh-ddos src - j REJECT --reject-with icmp-port-unreachable

手动运行后
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='193.56.28.0/24' reject"

firewall-cmd --reload 此输出 停止。 tailf /var/log/fail2ban.log 在此处输入图像描述

我怎样才能让所有这些 IP 在它们达到maxretry价值后被禁止?尽管服务重新启动或重新加载,它们会被永远禁止吗?

编辑 1: 从 fail2ban.log 与 action=firewalld-cmd ipset
在此处输入图像描述

从带有 action=iptables-allports 的 fail2ban.log
在此处输入图像描述

编辑2:
似乎(我猜)有些东西正在刷新配置(我猜它会是Webmin),因为过了一段时间我开始收到错误日志,failed to execute ban jail 'dovecot' action iptables-allports所以我正在尝试这个:在actions.d中创建banning.conf

[Definition]      

actionban = /usr/bin/firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='<IP>' reject"; ; /usr/bin/firewall-cmd --reload    

在 jail.local

[DEFAULT]
banaction = iptables-multiport 
            banning 

但我Error in action definition banning
知道这不是解决方案。
在移动服务器之前,我多年来一直在使用 fail2ban/iptables(不是 firewalld),而无需注意默认设置。

4

1 回答 1

2

在达到 maxretry 值后,如何让所有这些 IP 被禁止?

您的问题可能与maxretry等无关。
如果您在此后看到[jail] Ban 192.0.2.1[jail] 192.0.2.1 already banned条消息(尤其是在同一监狱/IP 的“禁止”消息后几分钟后),这仅意味着您的禁止操作(防火墙)根本不起作用(在禁令,入侵者 IP 仍然能够重复其尝试)。

上次我们遇到了某些问题(尤其是结合使用 firewalld + CentOS) - 参见例如https://github.com/fail2ban/fail2ban/issues/1609以及相关的 firewalld 问题 - https://github。 com/firewalld/firewalld/issues/515
因此,请检查您的本机网络过滤器(iptables 等),如果您在 fail2ban 链之前看到一些(将已建立流量列入白名单)规则,那么您的配置似乎不支持 fail2ban(或任何禁止系统)......这里可能成为你的答案 - https://github.com/fail2ban/fail2ban/issues/2503#issuecomment-533105500

这是另一个类似的问题,示例摘录说明“绕过fail2ban的错误iptables规则” - https://github.com/fail2ban/fail2ban/issues/2545#issuecomment-543347684

在这种情况下:

  • 要么切换firewalld的后端(如上所述);
  • 或将fail2ban的禁令切换到本机(iptables/ipset/etc)。
  • 甚至添加一个动作,丢弃或终止被禁止 IP 的活动已建立连接(使用 tcpkill、killcx、ss 等)。

更新 1

jail.local 示例:

[DEFAULT]
banaction = iptables-multiport
banaction_allports = iptables-allports

[postfix-sasl]
enabled = true
[dovecot]
enabled = true
...

如果在fail2ban重新加载后您仍然会在ban之后和fail2ban.log中看到一些IP尝试,请在第一次banalready banned时提供fail2ban的日志摘录,否则可能会出现一些错误(因为为时已晚,根本没有帮助)。 如果没有错误,请提供.already banned
iptables -nL

于 2019-11-04T23:50:35.420 回答