
Sistema operativo: Servidor Ubuntu 18.04
Fail2ban: v0.10.2
Estoy tratando de comprender un error en mi instalación de Fail2ban (creo que es obra mía). Tengo un trabajo cron que llena iptables con una lista predefinida usando:
iptables -A INPUT -s <ip address> -j DROP
iptables -A INPUT -s <ip address> -j DROP
etc
etc
Al comienzo de este script, se ejecuta:
iptables -F INPUT
para limpiar la cadena de ENTRADA. Este trabajo cron estaba presente en el servidor antes de que instalara Fail2ban para prohibir dinámicamente a los malos actores. Sin embargo, noté que comencé a recibir muchos avisos que indicaban que una IP en particular era already banned
. Cuando detuve la ejecución del trabajo cron de iptables, este error desapareció y se ha estado ejecutando sin ningún problema.
Mi pregunta es: ¿Qué tipo de conflicto estoy creando al ejecutar iptables -F INPUT
mientras Fail2ban todavía se está ejecutando? ¿No debería estar bien este comando ya que las IP prohibidas se colocan en sus respectivas f2b-<jail>
cadenas, o estoy entendiendo mal? Si es necesario ejecutar este script de iptables, ¿debería hacer también algo con la base de datos Fail2ban (purgar, etc.)?
Gracias.
Respuesta1
Fail2ban también debe colocar reglas en la cadena INPUT para llamar a las cadenas que define para cada cárcel individual. Al eliminarlos, estás provocando que esas reglas no se apliquen, y las direcciones IP que deberían prohibirse aún se transmiten, y fail2ban te advierte sobre esto diciéndole que ya estaban prohibidas.
No debería tener ningún motivo para vaciar la cadena INPUT de esta manera. En lugar de eso, su trabajo cron debería crear su propia cadena definida por el usuario y solo agregar a la cadena INPUT una regla para llamar a esa cadena definida por el usuario. Mejor aún, deberías usar un ipset, que tiene mejor rendimiento y también puede intercambiarse atómicamente cuando quieras cambiarlo. (Y por esa misma razón, fail2ban también debería usar ipsets).