Instalar y configurar Fail2ban en Debian

[notice]Desde que este post fue creado han pasado 12 años así que puede que hayan cambiado cosas.[/notice]

Cuando hemos montado un servidor con Linux y queremos manejarlo desde internet mediante control remoto SSH puede pasar que comencemos a recibir ataques con el objetivo de entrar al sistema y poder controlarlo para sus fines. Estos ataques suelen ser realizado por programas informáticos (bots) que durante mucho tiempo intentan acceder al sistema mediante la fuerza bruta.

El otro día revisando los gráficos que proporciona Monitorix sobre el estado del servidor me encontré que el servicio SSH había tenido demasiada actividad y en unos días en los cuales precisamente yo no me habia intentado conectar. Como se puede ver, durante una hora y media, el servicio SSH tuvo una actividad muy inusual.

Fail2ban_ssh_graph

Esto me hizo acordarme de Fail2ban. Su función es banear al cabo de cinco intentos (o los que nosotros le configuremos) la ip que ha intentado acceder a un servicio y no lo ha conseguido, evitando así que se saturen los servicios que hay instalados en el servidor.

 

Instalando Fail2ban

La instalación la podemos realizar desde apt directamente. Primero actualizamos el sistema y luego instalamos Fail2ban

apt-get update && apt-get -y upgrade

apt-get install fail2ban

 

Configurando Fail2ban

Ahora procederemos a editar el archivo de configuración de Fail2ban para establecer ciertos parámetros como el tiempo de baneo, los máximos intentos fallidos… La configuración no es muy difícil ya que ya viene configurado para la mayoría de servicios estándar que tienen los servidores Linux (web, ssh …)

Copiamos el archvo de configuracion por defecto de fail2ban como jail.local que sera ejecutado y nos sobreescribira las configuraciones que tengamos en jail.conf

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Abrimos el archivo con el editor.

nano /etc/fail2ban/jail.local

Y modificamos los parametros de SSH (o otros servicios) que deseemos. Los mas comunes son los siguientes.

 

Sección [Default]

ignoreip

Aquí hemos de poner las ips que queremos que fail2ban no banee bajo ningún concepto, por ejemplo las de la empresa o red local donde esta alojado el servidor Linux. Por defecto nos trae la 127.0.0.1 que es la interfaz lo del servidor Linux (para evitar banearse a si mismo). Añadimos la ip o red que queramos.

ignoreip = 127.0.0.1 192.168.1.0/24

 

bantime

Como el nombre mismo dice, es el tiempo que queremos que banee la ip que ha intentado acceder erroneamente. El tiempo esta en segundos, por lo que si queremos banear 24h esa ip, 24h * 60 * 60 = 86400 segundos.

bantime = 86400

 

maxretry

Es el numero máximo de intentos que queremos que fail2ban pase por alto, lo normal es dar un poco de margen y poner 5 fallos como máximo, pero esto siempre va a gustos.

maxretry = 5

 

Sección [ssh-iptables]

 

enabled = true

filter = sshd

action = iptables[name=SSH, port=22, protocol=tcp]

logpath = /var/log/auth.log

maxretry = 5

Aquí podemos configurar si esta activo para el servicio SSH, que nos envie un email al banear una ip etc… En mi caso también lo he activado para el servicio proftpd.

Una vez hayamos terminado de configurar el archivo de fail2ban a nuestro gusto, reiniciamos el servicio.

service fail2ban restart

Y comprobamos si el funcionamiento es correcto como solemos hacer con todos los servicios

service fail2ban status

O bien lo podemos comprobar con el cliente

fail2ban-client ping

A lo que el servidor nos responderá «pong»

 

Ya hemos terminado la instalación de Fail2ban y su configuración para evitar que nos realicen ataques a los servicios que tenemos instalados por el método de fuerza bruta. Ahora recuerda que has de poner una contraseña un poquito difícil para que no pueda sacarlas con los primeros cinco intentos (evita 1234, admin, 0000, …). Una buena opción es usar una contraseña que tenga mayúsculas, minúsculas y algún numero.

5 comentarios

1 ping

Saltar al formulario de comentarios

    • Henry Mora el 26/04/2013 a las 21:26
    • Responder

    Muchas gracias es muy precisa la explicacion. Excelente por su sencillez y claridad.

  1. Enhorabuena por lo didactico de la explicación !!!!

    1. Para eso está este blog, espero que te haya servido de ayuda!

  2. Muchas gracias por tu explicación. Me has quitado muchos problemas. Gracias.

  3. Os paso una entrada que os puede servir para ampliar este gran tutorial. He trabajado en un script que registra los ataques de fail2ban en una base de datos, donde también queda la ubicación geográfica de las IPs bloqueadas. Os invito a que le echéis un vistazo y me comenten que les parece. Me gustaría mucho mejorarlo y todas las aportaciones son muy bien recibidas.
    https://elayo.mx/registrar-ataques-fail2ban-con-geolocalizacion-en-mysql/

  1. […] -http://www.driverlandia.com/instalar-y-configurar-fail2ban-en-debian/ Configuración del fail2ban para banear usuarios que intentaban acceder un determinado numero de veces con una contraseña incorrecta. […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.