jueves, 22 de octubre de 2015

PROTEGER NUESTRA RASPBERRY CON JAIL2BAN Pt.1

Uno de los principales problemas al exponer nuestra Raspberry al exterior es la vulnerabilidad a través de los puertos de comunicación. Los ataques de fuerza bruta actúan contra los servicios de un servidor (ssh, ftp,..), y pueden ocasionar que un hacker pueda acceder a nuestras credenciales (nombre/password), probando todas las combinaciones posibles. 
Por eso es importante restringir el número de intentos de acceso fallidos a un servicio desde cualquier dispositivo.

"FAIL2BAN" es un programa que nos ayudará a prevenir estos ataques de forma sencilla. Su misión consiste en filtrar un archivo de registro con una expresión regular el cual notificó una prohibición de acceso a cierto servicio del sistema. Dependiendo del número de intentos fallidos, el programa creará una regla en "iptables" denegando el acceso a esa ip por el puerto del servicio afectado. Una vez transcurrido el tiempo de baneo indicado, "FAIL2BAN" eliminara esta regla "iptables".

Lo primero será instalar el programa:

$ sudo apt-get install fail2ban

Cuando la instalación haya terminado, Nos tocará editar los diferentes archivos de configuración:

  • /etc/fail2ban/jail2ban.conf: Archivo general donde podemos definir la ruta de los logs, configurar el socket para activar el demonio,...
  • /etc/fail2ban/jail.conf: Es el archivo más importante, ya que es aquí donde se configura las jaulas de los servicios, tiempo máximo de intentos, el tiempo de baneo,..
  • /etc/fail2ban/action.d/: Directorio están los archivos en el que se definen las acciones que se van a utilizar de forma predeterminada o en cada unos de los servicios definidos.
  • /etc/fail2ban/filter.d/: Directorio que contiene los archivos donde se definen los patrones que fail2ban buscará en el archivo log definido en cada servicio para activar las acciones.
Por defecto, al instalar "FAILBAN", éste ya cuenta con una configuración por defecto que nos servirá cómo punto de partida para ir perfilando la nuestra propia.

En nuestro primer ejemplo activaremos "FAILBAN" para el servicio "SSH".

Abriremos el archivo de configuración de las  jaulas:

$ sudo nano /etc/fail2ban/jail.conf

Modificaremos las siguientes líneas generales:


ignoreip = 127.0.0.1/8 # Ignoramos los intentos fallidos desde localhost.
bantime  = 18000 # Tiempo de baneo por defecto en segundos.
maxretry = 3 # Máximo de intentos fallidos por defecto.
action = %(action_mwl)s # acción por defecto con la opción "wl" que enviará un mail de #alerta.
destemail = usuario@gmail.com # Email al que se mandará las notificaciones de alerta.

 Dentro de las jaulas modificaremos el servicio "ssh":


[ssh] # Nombre de la jaula

enabled  = true # Activación por booleano.
port     = 22 # Puerto de escucha de "SSH".
filter   = sshd # Archivo de filtro que está ubicado en /etc/fail2ban/filter.d.
logpath  = /var/log/auth.log # Archivo log donde se aplicará el filtro.

Ya tendremos configurado "FAIL2BAN" para el servicio "SSH". Sólo nos falta reiniciar el servicio y probar su funcionamiento:

$ sudo /etc/init.d/fail2ban restart

Una vez reiniciado, monitorizamos a tiempo real el archivo log del programa:

$ sudo tail -f /var/log/fail2ban.log

Intentaremos ahora  acceder mediante cualquier dispositivo mediante "SSH" a nuestra Raspberry con credenciales erróneas.

Tras los tres intentos que hemos definido anteriormente, "FAILBAN" baneara la ip del dispositivo:






Transcurrido el tiempo que hemos especificado, el programa desbaneará la ip:






También se nos notificara por mail las acciones de baneo del dispositivo que intentado acceder, tal y como
 habíamos configurado en el archivo "jail.conf" :

















Como hemos podido observar, hemos configurado "JAILBAN" para que evitar que cualquier intruso pueda dirigir una ataque de fuerza bruta al servicio "SSH".

En el próximo tutorial integraremos el cortafuegos "UFW" con "FAILBAN", y crearemos una jaula para el servicio "OPENVPN" desde cero.

Hasta otra....

No hay comentarios:

Publicar un comentario