Cómo configurar Fail2ban para proteger tu servidor Linux

Последње ажурирање: КСНУМКС Септембер оф КСНУМКС

Profesional de IT trabajando con un portátil en un centro de datos moderno, ideal para introducir la seguridad de servidores.

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 напади грубе силе.

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 Филтери, comienza a contar los fallos. Si una IP alcanza el límite de intentos permitidos en un tiempo determinado, el programa ejecuta una акција, 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.

  Најбољи веб ресурси за Линук: Комплетан водич

Símbolo de ciberataque con una persona sosteniendo una máscara de hacker junto a racks de servidores Linux.

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 update сегуидо де sudo apt install fail2ban.
  • En Rocky Linux o AlmaLinux: Al ser distribuciones Enterprise, primero debes habilitar el repositorio EPEL con sudo dnf install epel-release y luego instalar el paquete con sudo dnf install fail2ban fail2ban-firewalld.
  • En Alpine Linux: Utiliza el gestor apk con sudo apk add fail2ban y, como usa OpenRC, debes habilitarlo con sudo rc-update add fail2ban default y arrancarlo con sudo rc-service fail2ban start.

Detalle profesional de racks de servidores en un centro de datos con iluminación azul, representando la infraestructura del servidor.

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 затвор.локални. 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 [УОБИЧАЈЕНО] es donde defines el comportamiento global del sistema:

  • време забране: El tiempo que la IP maliciosa se quedará en el congelador. Puede ser en segundos o usando ‘m’ para minutos (ej. 10m).
  • пронађи време: 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.
  • макс. поновни покушај: El número de intentos fallidos permitidos antes de que el sistema diga basta y bloquee la IP.
  • игноришите ip: Fundamental para no banearte a ti mismo. Aquí debes poner tu јавна ИП адреса o el rango de tu VPN.
  Акредитиви и сертификати: комплетан водич за побољшање вашег профила

Primer plano de cables de red de fibra óptica conectados a un servidor empresarial, ilustrando la conectividad y seguridad de red.

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 и а bantime = 3600 (una hora). Fail2ban leerá el archivo /вар/лог/аутх.лог (en Debian/Ubuntu) o / вар / лог / сецуре (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 Приступ одбијен за корисника. 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.

Одржавање и решавање проблема

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. Усандо 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 одбрану по дубини esencial para cualquier administrador de sistemas Linux.