
Tener un servidor Linux expuesto a la red es, básicamente, poner un imán para los bots. Si no has configurado ninguna medida de seguridad, es muy probable que ya tengas miles de intentos de acceso fallidos en tus registros; hay máquinas automatizadas que no paran de probar combinaciones de usuarios y claves para intentar tomar el control de tu máquina mediante ataques de força bruta.
Aquí es donde entra en juego Fail2ban, una herramienta que actúa como un vigilante incansable. No es un firewall en el sentido estricto, sino que analiza los logs del sistema y, cuando detecta que alguien está intentando entrar a la fuerza, le cierra la puerta en la cara bloqueando su dirección IP a través de herramientas como iptables o nftables. Vamos a ver cómo ponerlo a punto para que tu servidor sea un hueso duro de roer.
¿Qué es exactamente Fail2ban y cómo funciona?
Para entenderlo fácil, Fail2ban es un demonio que monitoriza continuamente los archivos de registro (logs) de tus servicios. Cuando encuentra patrones sospechosos que coinciden con reglas predefinidas, llamadas filtros, comienza a contar los fallos. Si una IP alcanza el límite de intentos permitidos en un tiempo determinado, el programa ejecuta una açao, que normalmente consiste en añadir esa IP a la lista negra del firewall.
Estas configuraciones se organizan en lo que se denominan jails o cárceles. Una cárcel es básicamente un conjunto de reglas aplicadas a un servicio concreto (como SSH, Apache o MySQL). De esta forma, puedes tener una política muy estricta para el acceso remoto y otra más permisiva para el servidor web, asegurando que los intrusos sean bloqueados automáticamente sin que tengas que estar revisando los logs a mano cada cinco minutos.

Instalación según tu distribución de Linux
Dependiendo de qué sistema estés usando, el comando para instalarlo varía un poco, pero en general está disponible en casi todos los repositorios oficiales.
- En Ubuntu y Debian: Es muy sencillo, solo tienes que ejecutar
sudo apt updateseguido desudo apt install fail2ban. - En Rocky Linux o AlmaLinux: Al ser distribuciones Enterprise, primero debes habilitar el repositorio EPEL con
sudo dnf install epel-releasey luego instalar el paquete consudo dnf install fail2ban fail2ban-firewalld. - En Alpine Linux: Utiliza el gestor apk con
sudo apk add fail2bany, como usa OpenRC, debes habilitarlo consudo rc-update add fail2ban defaulty arrancarlo consudo rc-service fail2ban start.

Configuración maestra: El secreto del archivo .local
Un error muy común es editar directamente el archivo jail.conf. ¡No lo hagas! Ese archivo se puede sobrescribir cuando actualices el sistema. La regla de oro es crear una copia llamada prisão.local. Cualquier parámetro que pongas en este segundo archivo tendrá prioridad sobre el original y tus cambios estarán a salvo de las actualizaciones.
Para empezar, puedes clonar el archivo original con sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local y luego abrirlo con tu editor favorito, como nano o vim. En la sección [PADRÃO] es donde defines el comportamiento global del sistema:
- tempo de proibição: El tiempo que la IP maliciosa se quedará en el congelador. Puede ser en segundos o usando ‘m’ para minutos (ej. 10m).
- encontrar tempo: El intervalo de tiempo en el que Fail2ban busca los fallos. Si alguien falla 5 veces en una hora pero el findtime es de 10 minutos, no será baneado.
- maxretry: El número de intentos fallidos permitidos antes de que el sistema diga basta y bloquee la IP.
- ignoreip: Fundamental para no banearte a ti mismo. Aquí debes poner tu endereço IP público o el rango de tu VPN.
Protegiendo servicios específicos paso a paso
Una vez configurado el apartado general, toca activar las cárceles para los servicios que más te preocupen. Para que una protección funcione, debes poner enabled = true en su respectiva sección dentro de jail.local.
Acceso SSH (El punto más crítico)
El puerto 22 es el objetivo número uno. Una configuración robusta sería definir maxretry = 3 e um bantime = 3600 (una hora). Fail2ban leerá el archivo /var/log/auth.log (en Debian/Ubuntu) o / var / log / secure (en CentOS/RHEL) para detectar los fallos de autenticación y cerrar el acceso al atacante.
Servidores Web (Apache y Nginx)
Si tienes una web o tienda online, los bots intentarán acceder a rutas sensibles como /wp-admin o /login.php. Puedes crear filtros personalizados en /etc/fail2ban/filter.d/ para detectar estos patrones. Por ejemplo, para proteger WordPress, se monitorizan los errores 403 o intentos fallidos en wp-login.php, bloqueando la IP si excede los límites establecidos en la cárcel de Apache o Nginx.
Bases de Datos y FTP
Para MySQL, se puede monitorizar el log de errores en busca de la frase Access denied for user. En el caso de FTP (como ProFTPD), es vital asegurarse de que el logpath coincida con la ruta real de tus registros, ya que si Fail2ban no encuentra el archivo de log, la protección simplemente no funcionará.
Gestión avanzada con fail2ban-client
No siempre tienes que editar archivos y reiniciar el servicio para hacer cambios rápidos. El comando fail2ban-client te permite gestionar el sistema en caliente desde la consola.
Para ver qué cárceles están activas y cuántas IPs hay bloqueadas, usa sudo fail2ban-client status. Si quieres profundizar en un servicio, como SSH, ejecuta sudo fail2ban-client status sshd. Además, si por error has bloqueado a un compañero o a ti mismo, puedes liberar la IP rápidamente con el comando sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Manutenção e resolução de problemas
Si notas que Fail2ban no está bloqueando como debería, el primer lugar donde mirar es el archivo de registro propio de la herramienta en /var/log/fail2ban.log. usando tail -f puedes ver en tiempo real quién está siendo baneado y por qué.
Recuerda que Fail2ban guarda el estado de los bloqueos en una base de datos SQLite en /var/lib/fail2ban/fail2ban.sqlite3, por lo que si reinicias el servidor, las IPs que estaban baneadas seguirán bloqueadas hasta que expire su tiempo de castigo. Siempre que hagas cambios en los archivos de configuración, no olvides aplicar los cambios con sudo systemctl restart fail2ban.
Implementar esta herramienta transforma tu servidor de una diana fácil en una fortaleza automatizada, reduciendo la carga de CPU al descartar tráfico malicioso en la capa de red y permitiéndote dormir tranquilo sabiendo que los bots no podrán entrar por fuerza bruta. Al combinar el uso de archivos .local, la gestión de jails específicas y el monitoreo constante de los logs, logras una defesa em profundidade esencial para cualquier administrador de sistemas Linux.
