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.
Indice de Contenidos
¿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.
Deja un Comentario
Debes de estar logueado para comentar.