Setting Up Fail2ban to Protect Apache From DDOS Attack

Configuración de Fail2ban para proteger Apache del ataque DDOS

Apache es uno de los servidores web más utilizados y populares del mundo, por lo que es importante proteger su sitio web y a los usuarios de los ataques de fuerza bruta. Fail2ban es un software de prevención de intrusiones de código abierto escrito en Python. Fail2Ban analiza continuamente los archivos de registro de varios servicios (como Apache, ssh, postfix…), y si detecta ataques maliciosos, crea reglas en el firewall para bloquear las direcciones IP de los piratas informáticos durante un período de tiempo específico. Fail2Ban también informa a un administrador del sistema con un correo electrónico de su actividad.

En este artículo, explicaré cómo instalar fail2ban y configurarlo para monitorear sus registros de Apache en busca de intentos de falla de autenticación maliciosos.

Requisitos

  • Servidor Ubuntu 14.04 con Apache instalado
  • Apache configurado con autenticación de contraseña

Instalación de Fail2Ban

Primero, asegúrese de que el servidor Apache se esté ejecutando y que la autenticación de contraseña esté habilitada.

A continuación, puede instalar Fail2ban ejecutando:

sudo apt-get update
sudo apt-get install fail2ban

Configurar fail2ban para Apache

El fail2ban mantiene su archivo de configuración “jail.conf” en el directorio “/etc/fail2ban/”. Contiene un conjunto de filtros predefinidos para varios servicios y se recomienda que no edite este archivo. Debe habilitar las cárceles de Apache predefinidas creando un archivo «/etc/fail2ban/jail.local»:

Para crear un nuevo archivo «jail.local», ejecute:

sudo nano /etc/fail2ban/jail.local

Agrega el siguiente contenido:

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache2/*error.log
maxretry = 3
findtime = 600
ignoreip = 192.168.1.227
 
[apache-noscript]
enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/apache2/*error.log
maxretry = 3
findtime = 600
ignoreip = 192.168.1.227
 
[apache-overflows]
enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/apache2/*error.log
maxretry = 2
findtime = 600
ignoreip = 192.168.1.227
 
[apache-badbots]
enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/apache2/*error.log
maxretry = 2
findtime = 600
ignoreip = 192.168.1.227

Guarde y cierre el archivo, luego reinicie fail2ban para que los cambios surtan efecto.

sudo /etc/init.d/fail2ban restart

Puede verificar las reglas que Fail2Ban agregó en iptables usando el siguiente comando:

La salida se verá algo como esto:

apache_fail2ban_iptables

Nota : Puede encontrar los detalles de cada cárcel descritos a continuación:

  • [apache] : esta cárcel se utiliza para bloquear los intentos fallidos de inicio de sesión.
  • [apache-noscript] : esta cárcel se utiliza para bloquear clientes remotos que buscan scripts en el sitio web para ejecutar.
  • [apache-overflows] : esta cárcel se utiliza para bloquear clientes que intentan solicitar URL sospechosas.
  • [apache-noscript] : esta cárcel se usa para bloquear clientes remotos que buscan scripts en el sitio web para ejecutar.
  • [apache-badbots] : esta cárcel se usa para bloquear solicitudes de bots maliciosos.

Nota : Puede encontrar los detalles de cada regla descrita a continuación.

  • enabled : esta opción significa que la protección de Apache está activada.
  • port : esta opción especifica los servicios que monitorea fail2ban.
  • filter : esta opción hace referencia al archivo de configuración ubicado en el /etc/fail2ban/filter.d/ directorio.
  • logpath : esta opción especifica la ubicación del archivo de registro.
  • bantime : esta opción especifica el número de segundos que un host remoto estará bloqueado del servidor.
  • maxretry : esta opción especifica el número de intentos de inicio de sesión fallidos antes de que se bloquee un host remoto durante el tiempo de prohibición.
  • ignoreip : esta opción le permite incluir en la lista blanca ciertas direcciones IP para que no sean bloqueadas.

Verifique el estado de prohibición de Fail2ban

Una vez que se activan las cárceles, puede verificar fail2ban usando el fail2ban-client dominio:

sudo fail2ban-client status

Puede ver una lista de todas las cárceles que habilitó.

apache_fail2ban_client_status

Para ver el estado de una cárcel en particular como apache, apache-badbots ejecutando los siguientes comandos:

sudo fail2ban-client status apache

La salida se ve así:

apache_fail2ban_client_status_apache

También puede configurar manualmente la prohibición o la cancelación de las direcciones IP.

Por ejemplo, para prohibir una dirección IP (192.168.1.20) con apache jail:

sudo fail2ban-client set apache banip 192.168.1.20

Para desbanear una dirección IP (192.168.1.21) con apache jail:

sudo fail2ban-client set apache unbanip 192.168.1.21

Probando Fail2Ban

Es importante probar su fail2ban si está funcionando como se esperaba o no. Ahora, en una máquina remota, abra su navegador web y escriba la URL de su dominio (o la dirección IP de su servidor). Cuando Apache solicite la autenticación, proporcione un nombre de usuario y una contraseña incorrectos repetidamente. Una vez que haya alcanzado el límite, debe ser bloqueado y no podrá acceder al sitio.

apache_fail2ban_block_sitio

Compruebe el estado con el fail2ban-client dominio:

sudo fail2ban-client status apache

Verá que su dirección IP está bloqueada en el sitio.

apache_fail2ban_client_ban_status

Conclusión

Ahora, tiene suficiente conocimiento para configurar fail2ban. Usar fail2ban es una manera buena y fácil de detener las inundaciones (ataques de fuerza bruta). También es una buena manera de limitar la cantidad de solicitudes incorrectas que recibe en su servidor web Apache.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas