
Recebi as seguintes mensagens de erro repetidas no arquivo de log do 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.
Procurei aqui e ali para corrigir esse erro sem sorte. Estou usando Centos7 com firewalld e fail2ban.
Não sei onde está exatamente o problema. Isso está relacionado ao fail2ban ou firewalld?
A execução de systemctl status firewalld -l mostra as seguintes mensagens de erro:
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
Tenho o seguinte conteúdo de jail.local para fail2ban:
[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
Todas as outras configurações seguem os padrões do sistema.
Eu instalei o firewalld conforme o seguinte:
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
Por fim, executando o seguinte comando:
# firewall-cmd --direct --get-all-rules
Eu obtenho estes resultados:
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
Agradeço sua ajuda, pois estou mais voltado para o desenvolvimento do que para os servidores.
Eu realmente preciso consertar isso o mais rápido possível. É para o meu servidor de produção.
Obrigado!
Responder1
se você tivesse verificado seu /var/log/fail2ban.log ou onde quer que o tenha colocado, e provavelmente veria algo assim
01-08-2019 08:16:14.509 fail2ban.utils [11727]: #39-Lev. 3ef3cd40 - exec: ipset criar hash f2b-apache-myadmin: tempo limite de ip 2160000 firewall-cmd --direct --add-rule filtro 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 01/08/2019 08:16:14,510 fail2ban.utils [11727]: ERRO 3ef3cd40 -- stderr: "ipset v7.2: Erro de sintaxe: '2160000' está fora do intervalo 0-2147483" 01/08/2019 08:16:14.510 fail2ban.utils [11727]: ERRO 3ef3cd40 -- stderr: "Erro: COMMAND_FAILED: '/usr/sbin/iptables- restaurar -w -n' falhou: iptables-restore v1.8.2 (legado): o conjunto f2b-apache-myadmin não existe." 01/08/2019 08:16:14.510 fail2ban.utils [11727]: ERRO 3ef3cd40 - stderr: '' ocorreu na linha: 2' 01/08/2019 08:16:14,510 fail2ban.utils [11727]: ERRO 3ef3cd40 -- stderr: "Tente `iptables-restore -h' ou 'iptables-restore --help' para obter mais informações ." 01/08/2019 08:16:14.510 fail2ban.utils [11727]: ERRO 3ef3cd40 - stderr: '' 08-01 08:16:14.510 fail2ban.actions [11727]: ERRO Falha ao executar a ação 'apache-catchall' da cadeia de banimento 'firewallcmd-ipset' info 'ActionInfo({'ip': '128.14.209.154', 'família' : 'inet4', 'fid': em 0x3f24b200>, 'raw-ticket': em 0x3f24b7a0>})': Erro ao iniciar a ação Jail('apache-myadmin')/firewallcmd-ipset 01/08/2019 08:16: 14.510 fail2ban.actions [11727]: AVISO [apache-myadmin]
ipset só pode ter um tempo limite máximo de 2147483, consultehttp://ipset.netfilter.org/ipset.man.html
timeout Todos os tipos de conjunto suportam o parâmetro opcional timeout ao criar um conjunto e adicionar entradas. O valor do parâmetro timeout para o comando create significa o valor de tempo limite padrão (em segundos) para novas entradas. Se um conjunto for criado com suporte de tempo limite, a mesma opção de tempo limite poderá ser usada para especificar valores de tempo limite não padrão ao adicionar entradas. O valor de tempo limite zero significa que a entrada é adicionada permanentemente ao conjunto. O valor de tempo limite de elementos já adicionados pode ser alterado adicionando novamente o elemento usando a opção -exist. O maior valor de tempo limite possível é 2147483 (em segundos).
como você está usando o ipset através do firewalld, você precisa reduzir o tempo de banimento no arquivo jail.local para cada prisão e o padrão para no máximo 2147483 segundos, ou o que quer que seja em dias. e então você ficará bem!
Responder2
Eu sei que essa pergunta já existe há alguns anos, mas acabei de encontrar esse problema com um servidor antigo rodando Centos7. Eventualmente, reduzi o problema a um prefixo ipset incorreto preso em /etc/firewalld/direct.xml:
... --match-set fail2ban-sshd
...
... em vez de ...
...--match-set f2b-sshd
Corrigir esse prefixo incorreto em direct.xml resolveu o erro para mim.