Excluir todas as proibições fail2ban no Ubuntu Linux

16

Como posso excluir todas as proibições de fail2ban no Ubuntu? Eu tentei de tudo, mas não entendi.

Eu só quero excluir todas as proibições - mas não conheço nenhum endereço IP.

Patrick
fonte
1
As proibições geralmente são feitas em endereços IP através do seu firewall, portanto, você deve observar as regras do firewall.
Julie Pelletier
Sim eu conheço. mas eu quero limpar todas as proibições, sem contar uma endereço IP
Patrick

Respostas:

26

Resposta atualizada

A partir da versão 0.10.0, fail2ban-clientapresenta o unbancomando que pode ser usado de duas maneiras:

unban --all                              unbans all IP addresses (in all
                                         jails and database)
unban <IP> ... <IP>                      unbans <IP> (in all jails and
                                         database)

Além disso, os comandos restart <JAIL>, reload <JAIL>e reloadagora também têm a --unbanopção.

Resposta antiga

fail2ban usa iptablespara bloquear o tráfego. Se você deseja ver os endereços IP atualmente bloqueados, digite

iptables -L -n

e procure as várias cadeias nomeadas fail2ban-something, onde somethingaponta para a cadeia fail2ban (por exemplo, Chain f2b-sshdrefere-se à cadeia sshd). Se você deseja remover apenas o bloco de um único endereço IP <IP>para uma determinada prisão <JAIL>, o fail2ban oferece seu próprio cliente:

fail2ban-client set <JAIL> unbanip <IP>

Como alternativa, você pode usar números de linha. Primeiro, liste as iptablesregras com os números de linha:

iptables -L -n --line-numbers

Em seguida, você pode usar

iptables -D fail2ban-somejail <linenumber> 

para remover uma única linha da tabela. Tanto quanto sei, não há opção para selecionar um intervalo de números de linha, então acho que você teria que agrupar esse comando em um loop for:

for lin in {200..1}; do
   iptables -D fail2ban-somejail $lin
done

Aqui eu inventei o número 200. Verifique sua própria saída do comando com --line-numberse observe que a última linha (com RETURN) deve permanecer. Veja o comentário de @ roaima abaixo para saber o motivo da contagem regressiva.

ph0t0nix
fonte
Obrigado @roaima! Vou atualizar a resposta de acordo.
Ph0t0nix
1
@roaima Sim, é (pelo menos em zsh e bash): echo {5..1}resultará em 5 4 3 2 1.
Ph0t0nix
Você me salvou. Muito obrigado. Por favor, adicione um comando completo, porque eu tive que descobrir que preciso do fail2ban-client na parte de trás do seu comando. (Porque eu sou um noob)
sebastian.roibu
A resposta antiga ainda está em cache no DuckDuckGo, veio dizer a mesma coisa que @roaima - snipboard.io/0oZkXy.jpg
Ari
14

A melhor maneira de desbanir todos os IPs é definir o tempo de espera para 1 segundo, para que todo o IP seja liberado imediatamente.

fail2ban-client set JailName bantime 1

Depois disso, você pode definir o tempo de banimento adequado de volta.

É melhor deixar o fail2ban fazer o desbanjo por você. Não edite manualmente o iptables.

Philip
fonte
1
Esta é a única resposta correta aqui. O Fail2ban mantém seu próprio banco de dados de proibições, que deve ser limpo de forma independente. Todas as respostas sobre a exclusão de regras do iptables ignoram que, no momento em que o fail2ban é iniciado, ele adiciona novamente as regras que você acabou de excluir no iptables. Além disso, nem toda configuração fail2ban usa iptables para implementar proibições.
Cliff Armstrong
3
encontrar todas as cadeias comfail2ban-client status
Flion
Acabei de emitir este comando e estou observando o número de IPs na minha prisão diminuir para zero, à medida que fail2ban processa a prisão. Isso não acontece realmente muito rápido, mas tudo bem, havia mais de cinco mil entradas na prisão. Boa resposta!
Eric M
4

O último fail2ban-client(0,10) tem um unban -allcomando. As prisões também podem ser "reiniciadas" individualmente, eliminando efetivamente as proibições.

Se você possui uma versão mais antiga, esse truque pode funcionar para proibições temporárias automáticas: exclua a prisão que contém a proibição e reinicie o fail2ban para que a prisão (agora vazia) seja recriada.

$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Rolf
fonte
-tudo ou -tudo? Ou - tudo?
Curinga
3

Salvar configuração do iptable no arquivo

$ iptables-save > iptables.conf

Edite-o com qualquer editor que você quiser. Than load config voltar para iptables

$ iptables-restore < iptables.conf

Não se esqueça de armazenar a configuração dentro do iptables para que ela seja capturada na reinicialização

$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
Subdigger
fonte
Essa é uma das maneiras de se fazer isso. Obrigado.
User9102d82
3

1. interromper o serviço limpará todas as regras adicionadas pelo fail2ban

service fail2ban stop

2. Se você não possui outras regras do iptables, pode liberá-lo

iptables -F

tenha cuidado: isso apagará todas as outras regras do seu iptables.

RASG
fonte
3

Aqui está um simples delineador para desbanir toda a cadeia fail2ban da maneira correta:

iptables -L f2b-recidive -n | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 0.0.0.0 | xargs -n 1 fail2ban-client set recidive unbanip

NOTA: O comando iptables usa o prefixo "f2b-" antes do nome da prisão, enquanto "fail2ban-client" o nome real da prisão

Vedran B
fonte
Esta é a melhor resposta para as versões fail2ban abaixo de 0,10. Você pode continuar criando um alias no .bashrc, como fail2ban-purge, com um parâmetro para limpar uma cadeia inteira. Substitua a palavra recidiva acima por $ 1 e use o alias como fail2ban-purge <JAIL_NAME>.
ADDISON74 23/02/19
2

Devido à maneira como fail2banfunciona, existem apenas duas soluções possíveis:

  • Faça um script de configuração do firewall que inclua fail2bancadeias e reinicie o firewall.
  • Remova as regras de firewall que estão bloqueando os IPs que você deseja desbanir.
Julie Pelletier
fonte
2

Este é o script que estou usando para desbanir todos os endereços IP de uma prisão ssh (basta substituir a ocorrência sshd pelo nome da prisão que você precisa ... por exemplo, mysqld-auth)

#!/bin/bash
j=$(iptables -L f2b-sshd | grep -c 'REJECT')
for ((i=1;i<=j;i++))
do
  fail2ban-client set sshd unbanip $(fail2ban-client status sshd | grep 'Banned IP list:' | cut -c23-)
done
Claudio Zanetta
fonte