Guia de Fail2Ban
Thank to: https://axarnet.es
Cuando tienes un servidor conectado a Internet en todo momento, ten por seguro que serás el objeto de ataques. Por suerte, para evitar accesos no deseados, tenemos la herramienta Fail2ban, que nos protege enormemente. Vamos a ver para qué sirve Fail2ban, cómo puedes instalarlo y configurarlo en tu servidor.
Fail2Ban: para qué sirve y cómo puedes configurarlo en tu servidor
TABLA DE CONTENIDOS
- Qué es Fail2ban
- Cómo funciona Fail2ban
- Cómo instalar Fail2ban en un servidor
- Cómo configurar Fail2ban
- Cómo comprobar que Fail2ban está funcionando
- ¿Es necesario Fail2ban en mi servidor VPS?
Uno de los ataques más comunes en Internet son los ataques por fuerza bruta. Un ataque de fuerza bruta es muy básico, se trata de probar muchos accesos en poco tiempo y así intentar "adivinar" los datos de acceso, ya sean de un acceso SSH, FTP, cuenta de correo, etc. Fail2Ban nos ayuda a evitar esto. Pero, qué es exactamente Fail2Ban.
Qué es Fail2ban
Para evitar los ataques de fuerza bruta tenemos aplicaciones como Fail2ban, las cuales podemos configurar para que se encarguen de monitorizar todos los accesos a los servicios online de un servidor.
Al monitorizar todos los accesos, podemos decidir cuántas veces puede una misma dirección IP intentar un acceso a un servicio con credenciales erróneas. Después de llegar al límite establecido, Fail2ban puede banear (bloquear) la dirección IP durante un tiempo establecido, para un servicio específico.
De esta forma evitamos que una misma dirección IP pruebe constantemente el acceso a nuestro servidor o a cualquier otro servicio ya que supone un riesgo y, además, un consumo de recursos del servidor.
Cómo funciona Fail2ban
Todo lo que hacemos en Internet se realiza desde una dirección IP. Cada vez que accedemos a una página web o enviamos un email, en realidad es la dirección IP la que lo está haciendo. Como hemos dicho, Fail2ban se encarga de "vigilar" toda actividad sospechosa de cualquier dirección IP que se conecte al servidor o solicite un servicio en nuestra web.
Cuando Fail2ban detecta que una IP está solicitando un acceso de forma errónea y supera un límite preestablecido con anterioridad, por nosotros o el administrador del sistema, tomará una acción. Esta acción, también preestablecida previamente, suele ser avisar al firewall del sistema de esta acción y crear una regla con la acción deseada.
Por lo general, la acción suele ser el baneo (ban) de la dirección IP durante un tiempo al servicio al que estaba intentando acceder. Esta es la acción más habitual, pero no es la única, puede enviar un email al administrador o ejecutar un script, pero Fail2ban no es un firewall, eso hay que tenerlo claro.
El firewall será iptables o cualquier otra aplicación parecida que tengamos instalada en el servidor. Fail2ban añade la regla que hará que el firewall actúe y bloquee el acceso a la dirección IP. Por lo general, los bloqueos tendrán una duración de segundos, minutos o incluso años, pero una vez finalizado el tiempo establecido del bloqueo, Fail2ban eliminará la regla del firewall, por lo que la dirección IP volverá a tener acceso al servicio.
Cómo instalar Fail2ban en un servidor
Fail2ban es una aplicación que funciona con cualquier distribución Linux, por lo que para poder instalarlo en un servidor, es necesario que tengas un servidor VPS en el que tengas acceso root. Antes de instalar Fail2ban, es recomendable que compruebes que todo esté actualizado. En Debian seria:
sudo apt update
Para instalar Fail2ban, podemos hacerlo directamente con:
sudo apt install fail2ban
Si usas una distribución CentOS, puedes instalarlo con:
sudo yum update
sudo yum install fail2ban
Si tienes algún problema al instalarlo, puedes consultar el proyecto en su Github.
Cómo configurar Fail2Ban
Al instalar Fail2ban en nuestro servidor, se creará el directorio /etc/fail2ban y el archivo de configuración será jail.conf. Antes de editar la configuración, es recomendable evitar modificar el archivo jail.conf original, ya que con las actualizaciones puedes perder los cambios en la configuración del archivo y tener que repetirlos.
Para esto puedes copiar el archivo de forma local como jail.local en /etc/fail2ban/jail.local y hacer las modificaciones desde este archivo. Puedes hacer esto introduciendo lo siguiente en la consola:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Una vez copiado, ya puedes abrir el archivo de configuración de Fail2ban con el editor de texto que prefieras, por ejemplo:
sudo nano /etc/fail2ban/jail.local
En el archivo de jail.local, encontraremos una configuración por defecto [DEFAULT], que será el comportamiento general de los bloqueos. Esta configuración por defecto la podemos modificar si queremos. Esto son los parámetros que podemos modificar.
- ignoreip
Aquí puedes añadir direcciones IP que nunca serán baneadas por Fail2ban. Por ejemplo, nuestra propia dirección IP. - bantime
Es el tiempo en segundos que una dirección IP estará baneada (bloqueada). Por defecto nos mostrará 600 segundos, que son 10 minutos. - findtime
Es el intervalo de tiempo en el que se cuentan los intentos fallidos. Por ejemplo, 300 significa que si se realizan x nº de errores en 5 un plazo de 5 minutos, la IP será baneada. - maxretry
Este es el número máximo de intentos erróneos que se permiten en el plazo de tiempo estipulado en findtime. Por ejemplo, si findtime está configurado con 300 segundos y maxretry en 3, significa que una dirección IP hace 3 intentos erróneos en 5 minutos, será baneada.
Fail2ban viene preconfigurado con varias celdas (jails) que puedes modificar si lo ves necesario. Como ejemplo veremos la configuración celda más habitual en Fail2ban, que es el acceso SSH al servidor.
Verás que el parámetro enabled está como true, lo que significa que la celda está activada. Si quieres desactivar alguna celda, puedes cambiar este parámetro a false.
En el parámetro filter encontraremos en nombre de filtro que el servicio utiliza. Por ejemplo, sshd se referiría al archivo filter.d/sshd.conf.
En logpath podemos encontrar el archivo de registros que Fail2ban utiliza para detectar los intentos fallidos de conexión.
Y action indica qué acción realizará Fail2Ban a detectar un problema, por ejemplo, si ponemos iptables detectará la configuración que exista en el archivo iptables.conf.
Cuando termines de modificar el archivo jail.local con la configuración que quieras, debes guardar los cambios en el archivo y seguidamente reiniciar el servicio con:
sudo systemctl restart fail2ban
Cómo comprobar que Fail2Ban está funcionando
Si quieres comprobar si Fail2ban está funcionando, esto quiere decir que está bloqueando direcciones IP que intentan acceder de modo incorrecto, podemos hacerlo fácilmente. Una opción es configurar el parámetro action de la celda en cuestión, para que nos envíe un email, aunque es posible que pronto descubras que la bandeja de entrada se llena de cientos y cientos de avisos.
Otra opción es revisar las jaulas o celdas, como quieras llamarlas, para ver el número de bloqueos que se han realizado. Para hacer esto, podemos usar el siguiente comando para ver una lista de todas las celdas que tengamos configuradas en Fail2ban:
fail2ban-client status
Después sólo tenemos que seleccionar una de ellas, por ejemplo, sshd:
fail2ban-client status sshd
Esto nos mostrará la información acumulada de la celda. Fíjate en el parámetro Total failed, que son los intentos de conexión fallidos y Total banned, que son el número total de bloqueos que se han realizado:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 22024
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 587
`- Banned IP list:
Si has configurado correctamente Fail2ban, es posible que te sorprenda ver la cantidad de veces que IP's extrañas intentan conectarse a tu servidor por SSH y son baneadas.
Personalización avanzada de Fail2ban
Fail2ban es una herramienta extremadamente versátil que se puede personalizar para adaptarse a una amplia gama de escenarios de seguridad.
Más allá de las configuraciones predeterminadas, los usuarios pueden crear sus propios filtros y acciones para defenderse contra amenazas específicas o adaptarse a entornos únicos.
A continuación, te proporcionamos algunos ejemplos de cómo puedes personalizar Fail2ban para casos de uso habituales:
Filtro personalizado para ataques de fuerza bruta en WordPress
WordPress es una plataforma popular y como tal, a menudo se convierte en un objetivo para ataques de fuerza bruta, especialmente en el archivo wp-login.php
.
Para proteger tu sitio, puedes crear un filtro personalizado en Fail2ban que monitoree los intentos de inicio de sesión fallidos.
Ejemplo de Filtro:
Crea un archivo en /etc/fail2ban/filter.d/wp-login.conf
con el siguiente contenido:
[Definition]
failregex = <HOST> - - \[.*\] "POST /wp-login.php
ignoreregex =
Este filtro busca en los registros del servidor las instancias de intentos fallidos de POST a wp-login.php
, que es el formulario de inicio de sesión de WordPress, y captura la dirección IP asociada con ese intento.
Configurando una Jaula para el Filtro de WordPress
Después de crear el filtro, debes configurar una jaula en /etc/fail2ban/jail.local
que lo utilice:
[wp-login]
enabled = true
filter = wp-login
action = iptables[name=WordPress, port=http, protocol=tcp]
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 3600
Esta configuración habilita la jaula wp-login
, utiliza
el filtro que acabas de crear, define una acción que actualiza iptables
para bloquear las solicitudes, especifica la ubicación de los registros
de acceso de Apache (ajusta según tu servidor web y configuración),
establece un máximo de 5 intentos antes de bloquear la IP, y establece
el tiempo de bloqueo en 3600 segundos (1 hora).
Protegiendo contra la enumeración de usuarios en WordPress
Los atacantes a menudo intentan enumerar usuarios de WordPress como un paso preliminar para ataques de fuerza bruta.
Puedes crear un filtro personalizado para detectar este comportamiento:
Ejemplo de Filtro:
Crea un archivo en /etc/fail2ban/filter.d/wp-enum.conf
con el siguiente contenido:
[Definition]
failregex = <HOST> - - \[.*\] "GET /.*author=\d+
ignoreregex =
Este filtro busca solicitudes GET que intenten usar el parámetro author
para enumerar usuarios en WordPress.
Configurando la Jaula:
Añade una nueva jaula en /etc/fail2ban/jail.local
:
[wp-enum]
enabled = true
filter = wp-enum
action = iptables[name=WPEnum, port=http, protocol=tcp]
logpath = /var/log/apache2/access.log
maxretry = 3
bantime = 600
Esta configuración activa la jaula wp-enum
, aplica el filtro wp-enum
, y configura las acciones y parámetros correspondientes para bloquear las solicitudes sospechosas.
Estos ejemplos ilustran cómo puedes extender la funcionalidad de Fail2ban para proteger aplicaciones específicas como WordPress.
Personalizar filtros y acciones te permite adaptar Fail2ban a tus necesidades exactas, proporcionando una capa adicional de seguridad adaptada a los desafíos únicos que enfrenta tu servidor.
Recuerda probar siempre tus nuevas configuraciones en un entorno seguro antes de aplicarlas en producción para asegurarte de que funcionen como se espera y no bloqueen el tráfico legítimo.
¿Es Fail2ban necesario en mi servidor VPS?
Si estás pensando para qué sirve Fail2Ban o si es necesario instalarlo en tu servidor VPS, la respuesta corta es un tremendo ¡sí!Al estar conectado a Internet, tu VPS estará constantemente bajo distintos tipos de ataques. Es posible que ni siquiera los percibas, ya que la mayoría no son muy sofisticados, pero sin duda estarás en el objetivo de los atacantes. No es que te tengan manía o exista una campaña contra ti en particular, simplemente estás conectado a Internet en todo momento y los atacantes intentarán acceder al servidor para realizar envíos de spam, minar criptomonedas, robar información, etc. Estos ataques los realizan bots y scripts que escanean la red en busca de "víctimas", pero no es nada personal...
Usar Fail2ban o una herramienta similar, es imprescindible para mantener tu servidor VPS a salvo, además, aunque los ataques no sean fructíferos, el constante intento de acceso hace que los recursos del servidor se resientan, ya que son peticiones que el VPS tiene que atender, así que mejor banearlas con Fail2ban.
No obstante, ante cualquier duda, puedes contactar con nuestro Centro de Atención y Soporte para que te ayuden a resolver tus incidencias. Y recuerda que en Axarnet, ofrecemos tanto servidores VPS administrados como no administrados, dependiendo de cuál sea tu necesidad.
Comentarios
Publicar un comentario
Dime si la información de este blog te sirvio.