Como prevenir ataques de fuerza bruta con fail2ban
En este artículo mostraré como realizar la instalción y la configuración de fail2ban en ubuntu o debian.
Fail2Ban es una herramienta que nos permite capturar los intentos de acceso a varios servicios como ssh, ftp, smtp, apache, entre otros. Si se realizan sucesivos intentos fallidos de acceso al servicio, fail2ban bloque la dirección de la ip por un tiempo determinado mediante parámetros en iptables.
1. Instalar Fail2Ban
Para instalar fail2ban en nuestro servidor ingresamos por consola:
sudo apt-get install fail2ban
Aceptamos la instalación (Y) y esperamos a que el proceso termine. Esto nos creará un proceso demonio en /etc/init.d/fail2ban
2. Configuracion
Por defecto el archivo de configuración de fail2ban se encuentra en /etc/fail2ban/jail.conf.
Para modificarlo usamos nuestro editor de texto preferido como vi o nano.
Para abrir el archivo de configuración se escribe:
vi /etc/fail2ban/jail.conf
Este archivo esta dividido por secciones. La sección [DEFAULT] se aplica para todas las otras secciones a no ser que estas secciones los parámetros se sobrescriban. Esta seccion nos permitira definir los mecanismos globales a seguir cuando se presente un ataque.
Algunos de los parámetro posibles para las secciones son:
- ignoreip: Es una lista separada por espacios de direcciones IP que no pueden ser bloqueada por fail2ban, util si tenemos direcciones estaticas seguras.
- bantime: Tiempo que se bloqueará un host para evitar intentos de acceso
- maxretry: Máximo número de intentos fallidos permitidos de acceso
- filter: Se refiere al archivo de filtación apropiado en /etc/fail2ban/filter.d
- action: Se refiere al archivo de acciones apropiado en /etc/fail2ban/action.d
- logpath: El archivo indicado para revisar los intentos fallidos de acceso.
La identificación de la secciones en el archivo se reconoce por seguir el siguiente patrón [NOMBRE]
Por defecto la mayoría de modulos vienen desactivados, para activar los que requerimos cambiamos la linea de la sección
enable = false
por
enable = true
Por ejemplo para activar el filtro de ftp que funciona con vsftpd modificamos
[vsftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
maxretry = 6
Modificándolo a:
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
maxretry = 10
Esto quiere decir que la filtración de vsftpd está activada, que el registro del archivo se encuentra en /var/log/vsftpd.log y que se permitirá máximo 10 intentos fallidos.
El último paso será reiniciar nuestro demonio fail2ban con el comando
sudo /etc/init.d/fail2ban restart
Basado en:
http://www.howtoforge.com/fail2ban_opensuse10.3
Aunque el título facilmente podría ser el nombre de un capítulo de The Big Bang Theory, no es así. Ya hablamos en el artículo la historia de linux, el debate que se g