• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Bitacora Linux Logo

  • Acceder
  • Curso
  • Contactar
  • Apache
  • Consola y Servidores
  • Programacion
    • PHP
    • Javascript y HTML5
  • Otros

Fail2ban o como prevenir ataques de fuerza bruta

Si estas administrando un servidor o vas a ello, te aconsejo que sigas leyendo esta entrada, donde te explico como configurar fail2ban porque seguramente te va a ahorrar muchos quebraderos de cabeza y sobretodo muchos sustos.

¿Que es fail2ban y para que sirve?

Fail2ban es un software que te ayuda a prevenir los ataques de fuerza bruta, basándose en un numero de intentos fallidos, en los servicios que le indiquemos.

Fail2ban lo que hace es leer los logs y analizandolos, detecta cuando ha habido un intento fallido de conexion y si se repite como en la configuracion que le hemos indicado procede a banearlo a traves de iptables. Puede actuar con muchos servicios, como por ejemplo:

  • Servidor ssh
  • Servidor ftp, como proftpd, vsftp, pure-ftp
  • Servidores webs, como Apache, nginx, lighttp
  • Servidores de correo como exim, courrier
  • O sobre aplicaciones como pueden ser webmin, phpmyadmin

Instalando fail2ban

Primeramente vamos a instalarlo

apt-get install fail2ban

Configuracion de fail2ban

Nos vamos al directorio de fail2ban

cd /etc/fail2ban

Una vez dentro podemos los diferentes archivos, pero el que tenemos que tener en cuenta es el jail.conf.

En jail.conf es donde podemos configurar algunos parámetros globales y donde definimos la configuración (jaulas) de los servicios, pero aquí solamente lo indicamos, no lo activamos.

Configuracion global

En la primera parte podemos configurar parámetros, como tiempo de baneo, numero máximo de intentos para el baneo y bastantes mas opciones, aunque a continuación te voy a comentar las principales a tener en cuenta.

maxretry = 5

Numero de intentos de loging antes de ser baneado. Aqui indico 5 intentos.

bantime = 10m

Tiempo de baneo, en este caso esta establecido en 10 minutos, pero podemos ponerlo en segundos (s) o en horas (h).

findtime = 10m

Este parametro va ligado a maxretry y se explica mejor con un ejemplo. Supongamos que maxretry lo tenemos en 5 y findtime en 10m (minutos),

Si el host que esta intentando acceder supera los 5 intentos de conexion en los 10 minutos, sera baneado.

ignoreip = 127.0.0.1/8

Esta opcion la podemos descomentar, si tenemos una ip fija y no queremos que actue sobre nuestro equipo.

Ahora vamos a configurar, las jaulas.

Y en este caso vamos configurarlo para el servicio ssh, que en debian es sshd.

Configuracion de jails (jaulas)

[sshd]

En la seccion sshd, nos encontramos los siguiente

[sshd]
#mode   = normal
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Con mode le estamos indicando el modo en el que actuara, por defecto, en normal o tambien ddos, extra or aggressive, que esta ultima combina todas las anteriores.

En port, le indicamos sobre que puerto actua y sera baneada la ip, que esta haciendo el ataque, por defecto viene el del ssh, pero si lo tuvieramos sobre otro puerto lo cambiamos.

En los dos siguientes parametros logpath y backend, si te fijas vienen declaradas unas variables, que no debemos tocar sino hemos cambiado los logs del servicio ssh, aunque a continuacion te explico que indican.

Con logpath, indicamos el log sobre el que fail2ban vigilara los intentos fallidos de conexion, que por defecto es /var/log/auth.log y backend, indicamos como mirara los intentos fallidos de conexion.

En esta parte podemos configurar maxretry, bantime, findtime e ignoreip de forma mas especifica para esta jaula, prevaleciendo el valor que le indiquemos. Quedaria algo como en el siguiente ejemplo.

[sshd]
#mode   = normal
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
findtime = 5m
bantime = 1h
ignoreip = 192.168.0.254

A partir de aqui, toca configurar cada servicio de forma individual.

filter.d

Dentro del directorio de fail2ban (/etc/fail2ban), tenemos otro que es filter.d, en este directorio, esta especificado como analizar los logs de todos los servicios que trae por defecto fail2ban.

Si te fijas hay un sshd.conf, ahi viene especificado que tiene buscar en el archivo de log del sshd (/var/log/auth.log), para encontrar un intento fallido de conexion.

Te aconsejo dejar este directorio tal cual esta y no tocar nada.

Activando servicios

Para activar los servicios debemos de editar el archivo /etc/fail2ban/jail.d/defaults-debian.conf y añadir la siguiente la linea para el ssh

[sshd]
enabled = true

Si quisieramos activarlos para el servidor ftp, proftpd

[proftpd]
enabled = true

Una vez que hemos indicado los servicios sobre los que queremos que actue fail2ban, lo reiniciamos

/etc/init.d/fail2ban restart

Principales comandos

Como ver cuantas jaulas tenemos activadas

fail2ban-client status

Como ver el estado de una jaula en concreto

fail2ban-client status sshd

Ver el log de fail2ban

tail /var/log/fail2ban.log

Ver los baneos que ha echo en iptables.

iptables -L -n --line-numbers
Chain f2b-sshd (1 references)
num  target     prot opt source               destination         
1    REJECT     all  --  95.127.48.126        0.0.0.0/0            reject-with icmp-port-unreachable

Si nos fijamos abajo del todo con la cadena f2b-sshd, va metiendo los baneos que ha echo.

Si queremos eliminar un baneo.

iptables -D f2b-sshd 1

Le estamos indicando que de los baneos que echo fail2ban, en el servicio sshd,(f2b-sshd), borre el primero.

Conclusion

Fail2ban es una estupenda herramienta que nos ayuda a securizar nuestro servidor, frente a los ataques de fuerza bruta. Lo mejor de todo, es que es configurable casi con cualquier servicio y con unos sencillos pasos lo tenemos andando sobre nuestro servidor.

Tambien te puede interesar

  • Configura tu IP en debian 9
  • Tipos de Redirecciones
  • Quitando el acceso a phpmyadmin
  • Configurar una ip con alias
  • Pagina oficial de fail2ban

Para cualquier duda o sugerencia, puedes contactarme a traves del fomulario de contacto.

Tambien te animo a que te suscribas a la newsletter, donde solo envio las nuevas publicaciones.

Comparte esta entrada:

Compartir en X (Twitter) Compartir en Facebook Compartir en Email Compartir en WhatsApp Compartir en Telegram

Interacciones con los lectores

Deja una respuesta

Lo siento, debes estar conectado para publicar un comentario.

sidebar

sidebar-alt

Diseño y Desarrollo por juanjomc.com

Utilizamos cookies propias y de terceros para garantizar el funcionamiento de la web, medir su uso y mejorar nuestros servicios. Puede aceptar todas las cookies, rechazar las no necesarias o configurar sus preferencias. Política de cookies

Configurar cookies

Necesarias para que la web funcione correctamente. No se pueden desactivar desde este panel.

Ayudan a medir el uso del sitio y mejorar sus contenidos.

Permiten publicidad, medición de campañas o personalización de anuncios.

Guardan preferencias o permiten contenido externo no necesario.