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.
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.
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.
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.
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.
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
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.
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:
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.
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).
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.
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.
El primer paso de un negocio en Internet es contar con un dominio. ¡Regístralo!
Protege tu web, gana posiciones en Google y aumenta tus ventas y clientes.
Continúa con tu compra
¿Es la primera vez que compras?
Si ya eres cliente de Axarnet