Firewalld 日志文件中的错误消息设置 fail2ban-ssh 不存在

Firewalld 日志文件中的错误消息设置 fail2ban-ssh 不存在

我在firewalld日志文件中重复出现了以下错误消息。

2019-07-19 14:18:20 ERROR: COMMAND_FAILED: Direct: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.4.21: Set fail2ban-ssh doesn't exist.

Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.

我到处搜索以修复此错误,但没有成功。我正在使用带有防火墙和fail2ban的Centos7。

我不知道问题具体出在哪里。这与 fail2ban 或firewalld 有关吗?

运行 systemctl statusfirewalld -l 显示以下错误消息:

firewalld[703]: WARNING: '/usr/sbin/iptables-restore --wait=2 -n' failed: iptables-restore v1.4.21: Set fail2ban-sshd doesn't exist.

                Error occurred at line: 2
                Try 'iptables-restore -h' or 'iptables-restore --help' for more information.
firewalld[703]: ERROR: COMMAND_FAILED

我有以下用于 fail2ban 的 jail.local 内容:

[DEFAULT]
ignoreip = 127.0.0.0/8
bantime  = 86400
findtime = 86400
maxretry = 5

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = firewallcmd-ipset

[sshd]
enabled = true

[ssh]
enabled  = true
filter   = sshd
action   = %(action_)s
logpath  = /var/log/secure
maxretry = 5

所有其他配置均按照系统默认设置。

我按照以下步骤安装了firewalld:

sudo yum install firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --remove-service=smtp
sudo systemctl enable firewalld

最后执行以下命令:

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

我得到以下结果:

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 0:65535 -m set --match-set fail2ban-ssh src -j REJECT --reject-with icmp-port-unreachable

我非常感谢您的帮助,因为我更注重开发而不是服务器。

我确实需要尽快修复此问题。这是为了我的生产服务器。

谢谢你!

答案1

如果你检查过 /var/log/fail2ban.log 或者你放置它的地方,你会看到类似这样的内容

2019-08-01 08:16:14,509 fail2ban.utils [11727]: #39-Lev。 3ef3cd40 -- exec:ipset 创建 f2b-apache-myadmin hash:ip 超时 2160000 防火墙 cmd --direct --add-rule ipv4 过滤器 INPUT_direct 0 -p tcp -m multiport --dports http,https -m set --match-set f2b-apache-myadmin src -j REJECT --reject-with icmp-port-unreachable 2019-08-01 08:16:14,510 fail2ban.utils [11727]:错误 3ef3cd40 -- stderr:“ipset v7.2:语法错误:'2160000'超出范围 0-2147483” 2019-08-01 08:16:14,510 fail2ban.utils [11727]:错误3ef3cd40 -- stderr:“错误:COMMAND_FAILED:'/usr/sbin/iptables-restore -w -n' 失败:iptables-restore v1.8.2(旧版):设置 f2b-apache-myadmin 不存在。” 2019-08-01 08:16:14,510 fail2ban.utils [11727]: 错误 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: 错误 3ef3cd40 -- stderr: '错误发生在第 2 行' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: 错误 3ef3cd40 -- stderr: “尝试‘iptables-restore -h’或‘iptables-restore --help’获取更多信息。” 2019-08-01 08:16:14,510 fail2ban.utils [11727]: 错误 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: 错误 3ef3cd40 -- 返回 13 2019-08-01 08:16:14,510 fail2ban.actions [11727]: 错误无法执行 ban jail 'apache-catchall' 操作 'firewallcmd-ipset' 信息 'ActionInfo({'ip': '128.14.209.154', 'family': 'inet4', 'fid': at 0x3f24b200>, 'raw-ticket': at 0x3f24b7a0>})': 启动操作 Jail('apache-myadmin')/firewallcmd-ipset 时出错 2019-08-01 08:16:14,510 fail2ban.actions [11727]: 通知 [apache-myadmin]

ipset 的最大超时时间只能为 2147483,请参见http://ipset.netfilter.org/ipset.man.html

timeout 所有集合类型在创建集合并添加条目时都支持可选的 timeout 参数。create 命令的 timeout 参数值表示新条目的默认超时值(以秒为单位)。如果创建集合时支持超时,则在添加条目时可以使用相同的 timeout 选项来指定非默认超时值。零超时值表示条目将永久添加到集合中。可以使用 -exist 选项重新添加元素来更改已添加元素的超时值。最大可能的超时值为 2147483(以秒为单位)。

由于您通过firewalld使用ipset,因此您需要缩短每个监狱的jail.local文件中的禁令时间,并将默认值缩短为最长2147483秒,或以天为单位的任何时间。然后你就好了!

答案2

我知道这个问题已经存在好几年了,但我刚刚在一台运行 Centos7 的旧服务器上遇到了这个问题。最终我将问题缩小到 /etc/firewalld/direct.xml 中卡住的一个不正确的 ipset 前缀:

... --match-set fail2ban-sshd...

... 代替 ...

...--match-set f2b-sshd

修复 direct.xml 中这个不正确的前缀帮我解决了错误。

相关内容