GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Defiéndase contra DoS y DDoS en Apache con mod_evasive

Introducción

El módulo mod_evasive es un módulo de servicios web de Apache que ayuda a que su servidor siga funcionando en caso de un ataque. Un tipo común de ciberataque se presenta en forma de denegación de servicio (DoS), denegación de servicio distribuida (DDoS) o fuerza bruta que intenta abrumar su seguridad.

La naturaleza de estos ataques es utilizar varias computadoras diferentes para realizar solicitudes repetidas contra su servidor. Esto hace que el servidor se quede sin potencia de procesamiento, memoria, ancho de banda de red y deje de responder.

Esta guía lo guiará a través de la configuración e instalación de mod_evasive para protegerse contra DoS y DDoS.

Requisitos previos

  • La pila LAMP (Linux, Apache, MySQL, PHP) instalada y configurada
  • Acceso a una cuenta de usuario con sudo o privilegios de root
  • Un servidor de correo en funcionamiento (para alertas por correo electrónico)

¿Cómo funciona Apache mod_evasive?

El mod_evasive Apache La utilidad funciona monitoreando las solicitudes entrantes del servidor. La herramienta también detecta actividad sospechosa de una IP, como:

  • Varias solicitudes para la misma página en un segundo.
  • Más de 50 solicitudes simultáneas por segundo.
  • Solicitudes realizadas mientras la IP está temporalmente en la lista negra.

El módulo envía un error 403 si ocurre alguna de estas cosas. De forma predeterminada, esto también incluye un período de espera de 10 segundos en la lista negra. Si la dirección IP que realiza la solicitud vuelve a intentarlo en esa ventana de 10 segundos, el tiempo de espera aumenta.

mod_evasivo lo ayuda a defenderse contra este tipo de ataques a través de la detección y administración de redes.

Pasos para instalar la utilidad Apache mod_evasive

Paso 1:Instale la utilidad del servidor web Apache

Antes de instalar la utilidad, actualice el repositorio de paquetes con el comando para su distribución de Linux:

Debian / Ubuntu :

sudo apt update

RedHat / Cent OS :

sudo yum update

Permita que el sistema actualice sus listados de software.

Luego, instale una utilidad auxiliar:

Debian/Ubuntu :

sudo apt install apache2-utils

RedHat / CentOS :

sudo yum install httpd-devel

La sección final de la salida se ve así:

Esta utilidad es necesaria para la instalación de mod_evasive .

Paso 2:Instalar mod_evasive

Debian/Ubuntu

Para instalar el mod_evasive módulo en Debian/Ubuntu, ingrese lo siguiente:

sudo apt install libapache2-mod-evasive

Cuando reciba un aviso, seleccione Aceptar. y elige tu configuración.

Si no está seguro, seleccione Sin configuración. o Solo local.

CentOS/RedHat

Para instalar el módulo mod_evasive en RedHat / CentOS:

Agregue el repositorio EPEL:

sudo yum install epel-release

Y luego, ingrese:

sudo yum install mod_evasive

Permita que el proceso se complete.

Paso 3:Configurar mod_evasivo

Como la mayoría de los paquetes de software de Linux, mod_evasive está controlado por un archivo de configuración. Realice los siguientes cambios en el archivo de configuración como primer paso para prevenir ataques DDoS:

1. Utilice un editor de texto de su elección con los siguientes comandos:

Debian / Ubuntu :

sudo nano /etc/apache2/mods-enabled/evasive.conf

RedHat / Cent OS :

sudo nano /etc/httpd/conf.d/mod_evasive.conf

2. Busque la siguiente entrada:

#DOSEmailNotify        [email protected]

Eliminar el # firme, luego reemplace [email protected] con su dirección de correo electrónico real. Use un correo electrónico que revise regularmente:aquí es donde la herramienta enviará alertas.

3. Elimine la etiqueta de comentario de las siguientes entradas, para que el archivo de registro tenga el siguiente aspecto:

DOSHashTableSize 3097

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

DOSEmailNotify [email protected]

DOSLogDir "/var/log/apache2/"

4. Guarde el archivo y salga. Vuelva a cargar el servicio de Apache ingresando lo siguiente:

Debian / Ubuntu :

sudo systemctl reload apache2

RedHat / Cent OS :

sudo systemctl restart httpd.service

Prueba mod_evasivo

Ahora, verifiquemos que el módulo funcione correctamente.

En este ejemplo, use test.pl script para probar mod_evasive.

El script se encuentra en:/usr/share/doc/libapache2-mod-evasive/examples/test.pl .

Use el siguiente comando para ejecutar el script:

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

La salida debería devolver este mensaje:

Parámetros y configuraciones

Hay muchos parámetros mod_evasive que puede configurar:

  • DOSSystemCommand : En primer lugar, es posible que haya notado que esta opción se dejó deshabilitada como comentario. Este comando le permite especificar un comando del sistema que se ejecutará cuando se agregue una dirección IP a la lista negra. Puede usar esto para ejecutar un comando para agregar una dirección IP a un firewall o filtro de IP.
  • DOSHashTableSize : Aumente esto para servidores web más ocupados. Esta configuración asigna espacio para ejecutar las operaciones de búsqueda. Aumentar el tamaño mejora la velocidad a costa de la memoria.
  • DOSPageCount : El número de solicitudes de una página individual que desencadena la inclusión en la lista negra. Se establece en 2, que es bajo (y agresivo); aumente este valor para reducir los falsos positivos.
  • DOSSiteCount : El número total de solicitudes para el mismo sitio por la misma dirección IP. De forma predeterminada, se establece en 50. Puede aumentar a 100 para reducir los falsos positivos.
  • DOSPageInterval : Número de segundos para DOSPageCount . De forma predeterminada, se establece en 1 segundo. Eso significa que si no lo cambia, solicitar 2 páginas en 1 segundo incluirá temporalmente una dirección IP en la lista negra.
  • DOSSiteInterval : Similar a DOSPageInterval , esta opción especifica el número de segundos que DOSSiteCount monitores De forma predeterminada, se establece en 1 segundo. Eso significa que si una sola dirección IP solicita 50 recursos en el mismo sitio web en un solo segundo, se incluirá temporalmente en la lista negra.
  • DOSBlockingPeriod : La cantidad de tiempo que una dirección IP permanece en la lista negra. Establecido en 10 segundos de forma predeterminada, puede cambiarlo a cualquier valor que desee. Aumente este valor para mantener las direcciones IP bloqueadas en tiempo de espera durante un período más prolongado.
  • DOSLogDir : De forma predeterminada, está configurado para escribir registros en /var/log/mod_evasive. Estos registros se pueden revisar más tarde para evaluar el comportamiento del cliente.

Puede crear un nuevo directorio para guardar estos registros de acceso de Apache; asegúrese de cambiar el propietario a Apache, luego actualice la ubicación en esta entrada:

sudo mkdir /var/log/apache/mod_evasive
sudo chown -R apache:apache /var/log/apache/mod_evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSLogDir "/var/log/apache/mod_evasive"

Incluir direcciones IP en la lista blanca: Esta opción no está incluida en evasive.conf f archivo por defecto.

Abra el archivo nuevamente para editarlo, luego agregue la siguiente línea:

DOSWhitelist 192.168.0.13

DOSWhitelist 192.168.0.*

Sustituya la dirección IP por la que desea incluir en la lista blanca. Además, debe enumerar solo una entrada por línea . Por lo general, esto se usa con un cliente confiable que intercambia una gran cantidad de datos con su sitio web.

Esta herramienta es buena para detectar bots y scripts. Si hay bots o secuencias de comandos que desea permitir, puede incluirlos en la lista blanca para evitar que estos bots y secuencias de comandos activen una acción de lista negra.

Asegúrese de guardar el archivo y salir. Luego, vuelva a cargar su servicio Apache antes de probar cualquiera de estas opciones.


Ubuntu
  1. Defiéndase contra DoS y DDoS en Apache con mod_evasive

  2. Asegure Apache con Lets Encrypt en Ubuntu 18.04

  3. Cómo instalar y configurar Nextcloud con Apache en Ubuntu 18.04

  4. Cómo instalar Joomla con Apache en Ubuntu 18.04

  5. Configuración de Apache 2.4 con Fastcgi en Ubuntu 16.04:¿qué debo hacer con Php7.0-fpm.conf?

Instale WordPress en Ubuntu 20.04 con Apache, MariaDB, PHP7.4 (LAMP)

Cómo instalar WordPress 4.7 en Ubuntu 16.04 con Apache, MariaDB, PHP7

Cómo instalar varias versiones de PHP con Apache en Ubuntu 18.04 y 16.04

Cómo instalar Apache con Let's Encrypt SSL en Ubuntu 20.04 LTS

Cómo instalar Apache con PHP-FPM en CentOS 8

Cómo proteger Apache con Let's Encrypt en Ubuntu 20.04