Eliminar todas las prohibiciones fail2ban en Ubuntu Linux

16

¿Cómo puedo eliminar todas las prohibiciones de fail2ban en Ubuntu? Intenté todo pero no lo entiendo.

Solo quiero eliminar todas las prohibiciones, pero no conozco ninguna dirección IP.

Patricio
fuente
1
Las prohibiciones generalmente se realizan en direcciones IP a través de su firewall, por lo que debe consultar las reglas del firewall.
Julie Pelletier
Sí, lo sé. pero quiero borrar todas las prohibiciones sin decirle una dirección ip
Patrick

Respuestas:

26

Respuesta actualizada

A partir de la versión 0.10.0 fail2ban-clientpresenta el unbancomando que se puede usar de dos maneras:

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

Además, los comandos restart <JAIL>, reload <JAIL>y reloadahora también tienen la --unbanopción.

Vieja respuesta

fail2ban utiliza iptablespara bloquear el tráfico. Si desea ver las direcciones IP que están bloqueadas actualmente, escriba

iptables -L -n

y busque las diversas cadenas nombradas fail2ban-something, donde somethingapunta a la cárcel fail2ban (por ejemplo, se Chain f2b-sshdrefiere a la cárcel sshd). Si solo desea eliminar el bloqueo de una sola dirección IP <IP>para una cárcel determinada <JAIL>, fail2ban ofrece su propio cliente:

fail2ban-client set <JAIL> unbanip <IP>

Alternativamente, puede usar números de línea. Primero, enumere las iptablesreglas con números de línea:

iptables -L -n --line-numbers

Luego puedes usar

iptables -D fail2ban-somejail <linenumber> 

para eliminar una sola línea de la tabla. Hasta donde sé, no hay una opción para seleccionar un rango de números de línea, así que supongo que tendrías que ajustar este comando en un bucle for:

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

Aquí hice el número 200. Verifique su propia salida del comando con --line-numbersy tenga en cuenta que la última línea (con RETURN) debe permanecer. Vea el comentario de @ roaima a continuación para ver el razonamiento detrás de la cuenta regresiva.

ph0t0nix
fuente
Gracias @roaima! Actualizaré la respuesta en consecuencia.
ph0t0nix
1
@roaima Sí lo es (al menos en zsh y bash): echo {5..1}resultará en 5 4 3 2 1.
ph0t0nix
Me salvaste. Muchas gracias. Agregue un comando completo porque tuve que descubrir que necesito fail2ban-client delante de su comando. (Porque soy un novato)
sebastian.roibu
La vieja respuesta todavía está en caché en DuckDuckGo, llegó a decir lo mismo que @roaima - snipboard.io/0oZkXy.jpg
Ari
15

La mejor manera de deshacer todas las IP es establecer el tiempo de espera en 1 segundo, luego toda la IP se liberará de inmediato.

fail2ban-client set JailName bantime 1

Después de eso, puede restablecer el tiempo de prohibición adecuado.

Es mejor dejar que fail2ban haga el unban por usted. No edite manualmente iptables usted mismo.

Philip
fuente
1
Esta es la única respuesta correcta aquí. Fail2ban mantiene su propia base de datos de prohibición que debe borrarse de forma independiente. Cada respuesta que habla sobre la eliminación de las reglas de iptables ignora que en el momento en que se vuelva a iniciar fail2ban, volverá a agregar las reglas que acaba de eliminar a iptables. Además, no todas las configuraciones de fail2ban usan iptables para implementar prohibiciones.
Cliff Armstrong
3
encontrar todas las cárceles confail2ban-client status
Flion
Acabo de emitir este comando y veo que la cantidad de IP en mi cárcel disminuye hacia cero a medida que fail2ban procesa la cárcel. No sucede muy, muy rápido, pero está bien, había más de cinco mil entradas en la cárcel. ¡Buena respuesta!
Eric M
5

El último fail2ban-client(0.10) tiene un unban -allcomando. Las cárceles también se pueden "reiniciar" individualmente, eliminando efectivamente las prohibiciones.

Si tiene una versión anterior, este truco podría funcionar para las prohibiciones temporales automáticas: elimine la cárcel que contiene la prohibición y luego reinicie fail2ban para que se vuelva a crear la cárcel (ahora vacía).

$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Rolf
fuente
-todos o -todos? O ... ¿todos?
Comodín el
3

Guardar la configuración de iptable en el archivo

$ iptables-save > iptables.conf

Edítelo con cualquier editor que desee. Luego, cargue la configuración de nuevo en iptables

$ iptables-restore < iptables.conf

No olvides almacenar la configuración dentro de iptables para que se recoja al reiniciar

$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
Subdigger
fuente
Esta es una de las formas en que uno podría hacer esto. Gracias.
User9102d82
3

1. detener el servicio limpiará todas las reglas agregadas por fail2ban

service fail2ban stop

2. si no tiene otras reglas de iptables, puede eliminarlo

iptables -F

tenga cuidado: esto borrará cualquier otra regla en sus iptables.

RASG
fuente
3

Heres un simple oneliner para deshacer toda la cárcel de fail2ban de la manera correcta:

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: el comando iptables toma el prefijo "f2b-" antes del nombre de la cárcel mientras que "fail2ban-client" el nombre real de la cárcel

Vedran B
fuente
Esta es la mejor respuesta para las versiones fail2ban debajo de 0.10. Puede ir más allá creando un alias en .bashrc como fail2ban-purge con un parámetro para purgar toda una cárcel. Simplemente reemplace la palabra retribuida anterior con $ 1 y use el alias como fail2ban-purge <JAIL_NAME>.
ADDISON74
2

Debido a la forma en que fail2banfunciona, solo hay dos soluciones posibles:

  • Cree un script de configuración de firewall que incluya fail2bancárceles y reinicie el firewall.
  • Elimine las reglas de firewall que bloquean las IP que desea desangrar.
Julie Pelletier
fuente
2

Este es el script que estoy usando para desbancar todas las direcciones IP de una cárcel ssh (simplemente reemplace la aparición de sshd con el nombre de la cárcel que necesita ... por ejemplo, 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
fuente