Seguridad Amateur: Fail2Ban

fail2ban-logoFuera de lo que significa la seguridad corporativa, a muchos de nosotros nos gusta tener nuestros propios juguetes a nivel doméstico para el “cacharreo”, y uno de los más populares y con más éxito es nuestra amiga la Raspberry Pi. De nada sirve ser exhaustivos en nuestra vida laboral si no aplicamos parte de lo que sabemos en el día a día personal.

Dado que el mayor riesgo a día de hoy surge al exponer un host (o mejor dicho, un servicio) a esa jungla digital de depredadores que es Internet, es necesario tomar medidas preventivas que nos aseguren, en la medida de lo posible, cierta seguridad añadida a la que por defecto (y por sentido común, sino que se lo pregunten a SHODAN) deberíamos tener ya en nuestro sistema.

Dentro de sus infinitas posibilidades, de lo que hoy quiero hablar es de Fail2Ban.

Fail2Ban es una aplicación escrita en Python para sistemas Unix, bajo licencia GPL v2, que permite establecer filtros para evitar ataques del tipo “brute force”, Overflow o DDOS para determinadas aplicaciones como Apache, SSH, Vsftpd, etc. Para ello, fail2ban analiza ficheros de log en busca de patrones correspondientes a fallos de inicio de sesión u otra expresión de interés para nuestro propósito y establece bloqueos (reglas en nuestro IPtables) frente a un nº máximo de intentos que nosotros definamos.

A continuación establecemos como ejemplo la protección del servicio SSH frente a un nº máximo de 3 intentos de autenticación, baneando la IP de origen de las peticiones durante 1 hora.

Lo primero que debemos hacer es descargar el software. En mi caso y dado que mi distribución es “Raspbian” usaremos “Aptitude” para descargar el paquete. Por tanto, después de hacer un “update” y un “upgrade” de nuestro sistema:

fb0

Una vez instalado editaremos su configuración desde:

fb1

Para comenzar nos fijaremos en el campo “ignoreip”:

fb2

Con esto lo que haremos será establecer una “whitelist” desde la cual podremos fallar todas las veces que queramos, ya que se supone que son direcciones de red de confianza. En este caso hemos definido que tanto el localhost como la red 192.168.0.0/24 sean excluidas de los baneos.

El siguiente apartado que debemos configurar serán los “JAILS” y en concreto el del SSH.

fb3

Como vemos en la imagen hemos cambiado el valor de “enabled” a “true” para activar el filtro. También podremos definir el puerto por el que escucha el servicio (sería recomendable cambiarlo), el “filter” que define las reglas que fail2ban usa para encontrar coincidencias en log de la aplicación (en este caso el fichero será el auth.log), el “logpath” que es la ruta del fichero .log del servicio SSH y “maxretry” que equivaldrá al nº de máximo de intentos que un host puede intentar acceder.

Una vez salvada la configuración tan solo tendremos que reiniciar el servicio para aplicar los cambios:

fb4

Con esto ya tendremos una mínima seguridad aplicada sobre el protocolo SSH.

Si realizamos una prueba e intentamos varios intentos fallidos podremos observar la nueva cadena creada dentro de nuestro firewall Iptables:

fb5

El bloqueo se mantendrá el tiempo que hemos definido en la configuración pero si por algún motivo quisiésemos desbanear las IP incluidas tan sólo tendríamos que hacer un reinicio del servicio.

Este es tan sólo un pequeño ejemplo de las posibilidades que ofrece Fail2ban. Con solo echar un vistazo al fichero de configuración, podréis comprobar que además de los múltiples servicios que permite filtrar, incluye también la gestión de alertas por email.

Comments

  1. Fail2Ban me parece una herramienta muy buena, lo uso en servidores Linux pero me gustaría saber si existe algo parecido para servidores Windows.
    Puesto que Fail2Ban me parece una herramienta fácil de configurar, personalizable y no carga demasiado la máquina.
    ¿Cuales son las alternativas en un servidor Windows?