Fail2Ban 在 CentOS 7 上启动失败

Fail2Ban 在 CentOS 7 上启动失败

我正在运行 CentOS 7,全部已完全更新,并且正在尝试让 Fail2Ban 正常工作,但我遇到了问题。

具体来说,我正在尝试阻止暴力 SSH 攻击。我很确定我已经将一切设置正确 - 在 中启用了 sshd 监狱jail.local,用作firewallcmd-ipset禁止操作,绝对使用 Firewalld,而不是使用 SELinux。

但是当我启动 Fail2Ban 时,其中的内容如下/var/log/fail2ban.log

2017-06-21 06:11:44,186 fail2ban.server         [3357]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
2017-06-21 06:11:44,186 fail2ban.database       [3357]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2017-06-21 06:11:44,188 fail2ban.jail           [3357]: INFO    Creating new jail 'sshd'
2017-06-21 06:11:44,206 fail2ban.jail           [3357]: INFO    Jail 'sshd' uses systemd {}
2017-06-21 06:11:44,230 fail2ban.jail           [3357]: INFO    Initiated 'systemd' backend
2017-06-21 06:11:44,232 fail2ban.filter         [3357]: INFO    Set maxRetry = 3
2017-06-21 06:11:44,232 fail2ban.filter         [3357]: INFO    Set jail log file encoding to UTF-8
2017-06-21 06:11:44,233 fail2ban.actions        [3357]: INFO    Set banTime = 86400
2017-06-21 06:11:44,233 fail2ban.filter         [3357]: INFO    Set findtime = 3600
2017-06-21 06:11:44,234 fail2ban.filter         [3357]: INFO    Set maxlines = 10
2017-06-21 06:11:44,320 fail2ban.filtersystemd  [3357]: INFO    Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2017-06-21 06:11:44,335 fail2ban.jail           [3357]: INFO    Jail 'sshd' started
2017-06-21 06:11:44,864 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stdout: ''
2017-06-21 06:11:44,865 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stderr: '\x1b[91mError: COMMAND_FAILED\x1b[00m\n'
2017-06-21 06:11:44,865 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- returned 13
2017-06-21 06:11:44,865 fail2ban.actions        [3357]: ERROR   Failed to start jail 'sshd' action 'firewallcmd-ipset': Error starting action

正如您将注意到的,在firewall-cmd尝试之前一切都会顺利进行。它尝试运行的命令是:

ipset create fail2ban-sshd hash:ip timeout 86400

其次是

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable

如果我尝试自己运行这些命令,该ipset命令可以正常工作,但该firewall-cmd命令会返回Error: COMMAND_FAILED.所以,我猜测这是 Fail2Ban 尝试发送到的命令的问题firewall-cmd- 但我对 Firewalld 的了解不够,无法修复它。

(哦,SSH 位于端口 44 上,因为我发现它可以大大减少偷渡式攻击,所以我们不要讨论它的利弊!

此外,systemctl status fail2ban显示一切运行顺利,没有报告任何问题。我只有在登录时才注意到这一点,并看到有很多登录尝试失败,这种情况很少见,因为端口发生了变化。

最后uname -r返回,3.10.0-229.14.1.el7.centos.plus.x86_64所以我相当确定这不是 OpenVZ 问题,我在其他地方已经将其视为导致此问题的原因。)

答案1

来自 faqforge.com:https://www.faqforge.com/linux/how-to-use-iptables-on-centos-7/

Centos 7 使用 Firewalld 服务取代了传统的 IPTables Linux 内核防火墙。仍然有很多可用的脚本需要使用 IPTables。一个常见的例子是软件 Fail2ban。

因此,请尝试停止firewalld( systemctl stop firewalld)并安装iptables( yum install iptables-services)和systemctl start iptables.

然后,像这样设置禁令jail.local

banaction = iptables-multiport
banaction_allports = iptables-allports

然后重新启动。

相关内容