Cómo mitigar los ataques de Slowloris

Cómo mitigar los ataques de Slowloris


Última modificación: 29 de septiembre de 2020

Visión general

El ataque Slowloris intenta abrir una gran cantidad de conexiones con un servidor web. Luego, el atacante mantiene abiertas esas conexiones durante el mayor tiempo posible. Un servidor web solo puede proporcionar servicio a un número finito de clientes. Después de que el ataque de Slowloris consume todas las conexiones disponibles en un servidor, otros clientes no pueden llegar a sus sitios.

Para lograr esto, el programa Slowloris abre una conexión al servidor web y envía una solicitud parcial. Luego, envía encabezados HTTP adicionales para agregar a esas solicitudes, pero no completarlas. Este proceso eventualmente llena el número máximo de conexiones simultáneas, lo que negará conexiones adicionales de otros clientes.

Este documento proporciona varios métodos para mitigar el impacto de los ataques de Slowloris.

Para obtener más información sobre los ataques de Slowloris, lea Artículo de Wikipedia Slowloris.

Nota:

  • los mod_reqtimeout El módulo está disponible para la versión 2.2 de Apache.
  • En sistemas que ejecutan EasyApache 3, puede instalar el mod_reqtimeout módulo como un mod opcional.

Coloque las configuraciones que desee utilizar mod_reqtimeout módulo en el /usr/local/apache/conf/includes/pre_main_global.conf expediente.

La siguiente configuración de ejemplo demuestra cómo puede utilizar el mod_reqtimeout módulo:

1
2
3
<IfModule mod_reqtimeout.c>
   RequestReadTimeout header=20-40,MinRate=500 body=20-40,MinRate=500
</IfModule>

Esta configuración esperará hasta 20 segundos para los datos del encabezado. Siempre que el cliente envíe datos de encabezado a una velocidad de 500 bytes por segundo, el servidor esperará hasta 40 segundos para que se completen los encabezados.

Esta configuración también esperará hasta 20 segundos por los datos corporales. Siempre que el cliente envíe datos de encabezado a una velocidad de 500 bytes por segundo, el servidor esperará hasta 40 segundos para que se complete el cuerpo de la solicitud.

Para obtener más información, lea Documentación de ModReqtimeout de Apache.

El segundo metodo

Nota:

  • los mod_qos.c el módulo es solamente disponible para sistemas que ejecutan EasyApache 3. Ya no admitimos EasyApache 3 a partir del 31 de diciembre de 2018. fuertemente le recomendamos que actualice a EasyApache 4.
  • los mod_qos.c El módulo está disponible para la versión 2.0 de Apache y posterior, pero le recomendamos que utilice la versión 2.2 de Apache o posterior.

El siguiente ejemplo demuestra cómo configurar el mod_qos.c módulo para mitigar los ataques de Slowloris:

1
2
<IfModule mod_qos.c> # handles connections from up to 100000 different IPs QS_ClientEntries 100000 # will allow only 50 connections per IP QS_SrvMaxConnPerIP 50 # maximum number of active TCP connections is limited to 256 MaxClients 256 # disables keep-alive when 70% of the TCP connections are occupied: QS_SrvMaxConnClose 180 # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything): QS_SrvMinDataRate 150 1200 # and limit request header and body (careful, that limits uploads and post requests too): # LimitRequestFields 30 # QS_LimitRequestBody 102400
</IfModule>

Esta configuración de ejemplo aplicará el siguiente comportamiento:

  • MaxClients – Esta configuración limita el número máximo de conexiones a 256.
  • QS_ClientEntries – Esta configuración rastrea hasta 100,000 conexiones.
  • QS_SrvMaxConnPerIP – Esta configuración limita cada dirección IP a un número máximo de 50 conexiones.
  • QS_SrvMaxConnClose – Esta configuración desactiva la Mantener viva funcionar cuando existan al menos 180 conexiones.
  • QS_SrvMinDataRate – Esta configuración requiere un mínimo de 150 bytes por segundo por conexión y limita la conexión a 1200 bytes por segundo cuando el servidor alcanza la MaxClients límite.

Deja una respuesta

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