Como posso excluir todos os banimentos fail2ban no Ubuntu? Tentei de tudo, mas não entendi.
Só quero excluir todos os banimentos – mas não conheço nenhum endereço IP.
Comentários
- Os banimentos são normalmente feitos em endereços IP através do seu firewall, então você deve olhar as regras do firewall.
- sim, eu sei. mas quero limpar todos os banimentos sem informar um endereço IP
- ” Tentei de tudo ” não, você não ‘ t. O que você tentou?
Resposta
Resposta atualizada
A partir da versão 0.10. 0 fail2ban-client
apresenta o comando unban
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 reload
agora também têm a opção --unban
.
Resposta antiga
fail2ban usa iptables
para bloquear o tráfego. Se você deseja ver os endereços IP que estão bloqueados no momento, digite
iptables -L -n
e procure as várias cadeias chamadas , onde something
aponta para a prisão fail2ban (por exemplo, Chain f2b-sshd
refere-se à prisão sshd
). Se você deseja apenas remover o bloqueio de um único endereço IP <IP>
para uma determinada prisão <JAIL>
, fail2ban oferece seu próprio cliente:
fail2ban-client set <JAIL> unbanip <IP>
Alternativamente, você pode usar números de linha. Primeiro, liste as iptables
regras com 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. Pelo que eu sei, não há opção para selecionar um intervalo de números de linha, então acho que você teria que envolver este comando em um loop for:
for lin in {200..1}; do iptables -D fail2ban-somejail $lin done
Aqui eu fiz o número 200 up. Verifique sua própria saída do comando com --line-numbers
e observe que a última linha (com RETURN
) deve permanecer. Veja o comentário de @roaima “abaixo para o raciocínio por trás da contagem regressiva.
Comentários
- Você me salvou. Muito obrigado. Por favor, adicione um comando completo porque eu tive que descobrir que preciso fail2ban-client em frente ao seu comando. (Porque eu sou um novato)
Resposta
A melhor maneira de cancelar o banimento de todos os IPs é definir o bantime para 1 segundo, então todos os IPs serão liberados 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 desbanho para você. Não edite manualmente o iptables.
Comentários
- Esta é a única resposta correta aqui. Fail2ban mantém seu próprio banco de dados de ban que deve ser apagado independentemente . Cada resposta falando sobre exclusão de regras de iptables ignora que no momento em que o fail2ban for iniciado o backup, ele adicionará novamente as regras que você acabou de excluir de volta ao iptables. Além disso, nem toda configuração de fail2ban usa iptables para implementar banimentos. encontre todas as cadeias com
fail2ban-client status
- Acabei de emitir este comando e estou observando o número de IPs em minha prisão diminuir para zero enquanto fail2ban processa a prisão. acontecer realmente muito rápido, mas que ‘ s OK, havia mais de cinco mil entradas na prisão. Boa resposta!
Resposta
O mais recente fail2ban-client
(0,10) tem um comando unban -all
. As cadeias também podem ser “reiniciadas” individualmente, com efeito limpando completamente os banimentos.
Se você tiver uma versão mais antiga, este truque pode funcionar para banimentos temporários automáticos: exclua a prisão que contém o banimento e reinicie o fail2ban para que a (agora vazia) prisão seja recriada.
$ fail2ban-client stop sshd Jail stopped $ systemctl restart fail2ban
Comentários
- -todos ou —todos? Ou –all?
Resposta
-
Parar o serviço limpará todas as regras adicionadas por fail2ban
service fail2ban stop
-
Se você não tiver nenhuma outra regra de iptables, pode liberá-la
iptables -F
Tenha cuidado: isso apagará todas as outras regras em seu iptables .
Comentários
- Apenas parar e começar de novo foi suficiente.
Resposta
Salvar a configuração da iptable no arquivo
$ iptables-save > iptables.conf
Edite-o com qualquer editor de sua preferência Em seguida, carregue a configuração de volta no iptables
$ iptables-restore < iptables.conf
Não se esqueça de armazenar a configuração dentro do iptables para que seja selecionada na reinicialização
$ service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Resposta
aqui está uma linha simples para cancelar o banimento de todo fail2ban jail da maneira adequada:
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 recebe o prefixo “f2b-” antes do nome da prisão, enquanto “fail2ban-client” é o nome real da prisão
Comentários
- Esta é a melhor resposta para as versões fail2ban abaixo de 0,10. Você pode ir mais longe criando um alias em .bashrc como fail2ban-purge com um parâmetro para limpar uma prisão inteira. Basta substituir a palavra recidiva acima por $ 1 e usar o alias como fail2ban-purge < JAIL_NAME >.
Resposta
Devido à maneira como fail2ban
funciona, existem apenas duas soluções possíveis:
- Faça um script de configuração de firewall que inclua
fail2ban
prisões e reinicie o firewall. - Remova as regras de firewall que bloqueiam os IPs que você deseja cancelar .
Resposta
Este é o script que estou usando para cancelar o banimento de todos os endereços IP de uma prisão ssh ( simplesmente substitua sshd occourence com o nome da jaula que você precisa … ex: 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
Resposta
Talvez este script possa ajudar alguém com uma versão < 0.10.0 como eu:
#!/bin/bash for JAIL in $(fail2ban-client status | grep "Jail list:" | awk "BEGIN {FS="\t"} {print $2}" | sed "s/, / /g") do for IP in $(fail2ban-client status ${JAIL} | grep "Banned IP list:" | awk "BEGIN {FS="\t"} {print $2}" | sed "s/ /\n/g") do fail2ban-client set ${JAIL} unbanip ${IP} done done unset JAIL IP exit 0