Instalación Fail2Ban (anti ataques por fuerza bruta)
Fail2Ban es una aplicación que se encarga de monitorizar archivos log y banear aquellas IP que comentan demasiados errores de autentificación. Su funcionamiento es muy sencillo: un demonio vigila un archivo log (por ejemplo
/var/log/auth.log); si las entradas que se producen en ese archivo coinciden y se repiten un número de veces dado con alguno de los patrones (filtros), se ejecuta una acción determinada.
Todos los pasos explicados acá están basados en la Release 2 de OVH y han sido probados tanto con configuraciones de 32-bit como de 64-bit. También se han realizado conectado al servidor por ssh con el usuario root.
Primero hay que instalar Fail2Ban. Creará un archivo para iniciar o parar el demonio en
/etc/init.d/fail2ban, y los archivos que permiten configurarlo en
/etc/fail2ban/
nsxxxxxx~ # emerge fail2ban
Para que arranque al reiniciar el servidor, hay que hacer lo siguiente:
nsxxxxxx~ # rc-update add fail2ban default
Ahora toca configurarlo. Se edita el archivo
/etc/fail2ban/fail2ban.conf
nsxxxxxx~ # nano /etc/fail2ban/fail2ban.conf
En principio, con poner en
logtarget la dirección del archivo log para fail2ban es suficiente (
/var/log/fail2ban.log). El resto se deja como viene por defecto. Ahora hay que editar el archivo de las cárceles, situado en
/etc/fail2ban/jail.conf
nsxxxxxx~ # nano /etc/fail2ban/jail.conf
Dentro de este archivo,
bantime establece el tiempo de baneo (por ejemplo poner 21600 segundos, que son 6 horas),
findtime indica en qué intervalo de tiempo deben buscarse los fallos (por ejemplo 900 segundos), y
maxretry es el número máximo de fallos permitidos en ese intervalo (por ejemplo 3). El
backend hay que dejarlo en automático.
Además de estas variables globales, existen una serie de cárceles. Cada cárcel tiene una serie de parámetros. Un ejemplo:
-
[ssh-iptables]: nombre de la cárcel.
-
enabled: debe estar en
true para activarla, en caso contrario
false.
-
filter: filtro que se usará para buscar los fallos. Es el nombre de uno de los archivos
.conf situados en
/etc/fail2ban/filter.d/
-
action: indica la acción o acciones que se llevarán a cabo en caso de darse el filtro. Es el nombre de uno o varios de los archivos
.conf situados en
/etc/fail2ban/action.d/ En las acciones de email, hay que poner el email en que se quieren recibir los avisos.
-
logpath: nombre del archivo o archivos log a monitorizar por la cárcel.
-
maxretry y
bantime: similares a las variables globales, pero permite cambiar el valor para una cárcel determinada.
Por defecto el archivo ya trae algunas cárceles predefinidas, de las que son de utilidad las de SSH y ProFTPd (para detectar fallos de autentificación por SSH y por FTP).
Los filtros se pueden editar en la carpeta
/etc/fail2ban/filter.d/, aunque en principio no es necesario cambiar nada. Ahí están las expresiones regulares que se buscarán en los logs. Las acciones también se pueden editar en la carpeta
/etc/fail2ban/action.d/, pero tampoco es necesario cambiarlas.
A continuación un ejemplo de cómo quedan las cárceles para banear IP atacantes a los puertos de FTP y SSH (que son las que recomiendo tener siempre activadas):
Código:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois[name=SSH, dest=email@dominio.com]
logpath = /var/log/auth.log
maxretry = 3
[proftpd-iptables]
enabled = true
filter = proftpd
action = iptables[name=ProFTPD, port=ftp, protocol=tcp]
mail-whois[name=ProFTPD, dest=email@dominio.com]
logpath = /var/log/auth.log
maxretry = 3