GNU/Linux >> Tutoriales Linux >  >> Linux

Limitar la cantidad de clientes conectados en un VirtualHost en Apache

Problema:
Cuando un ataque DDOS o una ráfaga de solicitudes llegan al mismo tiempo a mi servidor web Apache2, todo el servidor puede quedarse sin RAM y colapsar.

Posible solución:
Limite el número de conexiones simultáneas a su servidor Web por VirtualHost

Método: Un método simple y efectivo realizado directamente en el servidor web Apache es usar los módulos:mod_bw (mod_ancho de banda) y mod_vhost_limit . Prefiero el mod_vhost_limit ya que es mucho más fácil de configurar y ha demostrado ser más efectivo según mis pruebas.

Entorno:
Compatible con Apache 2.2 xx y Apache 2.4.xx.
Nota: Para Apache 2.4.xx, se debe realizar un "Parcheo" del código fuente original antes de compilar el módulo.

Pasos:
Instalar las herramientas del entorno de compilación:
apt-get install build-essential apache2-dev
Descargue las fuentes del módulo y extráigalo.
wget http://apache.ivn.cl/files/source/mod_vhost_limit-0.2.tgz
tar fvxz mod_vhost_limit-0.2.tgz

SOLO PARA Apache 2.4.xx
Obtención del parche y parcheo de la fuente original.
Ref:https://github.com/pld-linux/apache-mod_vhost_limit
wget https://github.com/pld-linux/apache-mod_vhost_limit/archive/master.zip
unzip master.zip
cp apache-mod_vhost_limit-master/* mod_vhost_limit-0.2/
cd mod_vhost_limit-0.2/
patch mod_vhost_limit.c < mod_vhost_limit-apache24.patch
cd ..

PARA AMBOS Apache 2.2..xx y Apache 2.4.xx
Compila, instala y habilita el módulo:
cd mod_vhost_limit-0.2
/usr/bin/apxs2 -i -a -c mod_vhost_limit.c
service apache2 restart

Utilice el módulo en una configuración de VirtualHost:
<VirtualHost ......>
...........
# Limits the concurrent requests to 1000 for this vhost
<IfModule vhost_limit_module>
MaxVhostClients 1000
</IfModule>
...........
</VirtualHost>


Linux
  1. ¿Límite práctico en el número de instantáneas Btrfs?

  2. Cómo instalar el servidor web Apache en Ubuntu

  3. Configuración de la umask del usuario de Apache

  4. Contando el número de archivos en un directorio usando C

  5. ¿Cómo obtener la lista de clientes conectados a un servidor NFS dentro de una red local?

Configurar Apache VirtualHost en Fedora

NGINX vs Apache:elegir el mejor servidor web en 2022

Cómo encontrar el número de puerto de un servicio en Linux

5 formas de contar el número de líneas en un archivo

Cómo obtener la cantidad de procesadores/núcleos en Linux

¿Cómo obtener una lista de los clientes wifi conectados en OpenWrt 10.03?