Seguridad en CentOS (Apache) [Mod_qos]
En la busqueda de una posible solucion, me encontre con un mod muy interesante y el cual "mitigo" en gran magnitud un ataque de Slowloris a mi servidor Apache, este mod se llama "MOD_QOS, y a continuación voy a detallar los pasos para instalarlo:
yum install openssl-devel.x86_64 yum install pcre-devel.x86_64 yum install httpd-devel.x86_64Descargamos el mod desde acá y una vez descargado, lo descomprimimos:
tar -zxvf mod_qos-10.15.tar.gzY luego vamos a su contenido escribiendo lo siguiente:
cd mod_qos-10.5Luego ingresamos al directorio de apache
cd apache2Ejecutamos la compilación
apxs -i -c mod_qos.c
Ahora editamos el archivo de configuracion de Apache
vim /etc/httpd/conf/httpd.confY se inserta la siguiente línea para el módulo del mod_qos:
LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.soCreamos un archivo de configuración de nombre mod_qos.conf:
touch /etc/httpd/conf.d/qos.confInsertamos las siguientes líneas en el archivo de configuración recién creado:
vim /etc/httpd/conf.d/qos.conf
## QoS ConfiguracionFinalmente reiniciamos el servicio con el siguiente comando:#Manejo de conexiones hasta 100000 IPs diferentes QS_ClientEntries 100000 # Se permite solamente 50 connexiones por IP QS_SrvMaxConnPerIP 50 # Maximo numero de conexiones TCP activas 256 MaxClients 256 # Desactivar la directiva keep-alive cuando el 70% de las conexiones TCP estan ocupadas: QS_SrvMaxConnClose 70% # Minimo de velocidad para peticiones / respuestas (niega a los clientes lentos que bloquean el servidor , #Ejemplo; el script slowloris mantiene las peticiones HTTP : QS_SrvMinDataRate 150 1200 # Limite de peticiones de encabezados y cuerpo (con cuidado, limita las cargas y las peticiones POST): # LimitRequestFields 30 # QS_LimitRequestBody 102400
service httpd restartA demás vamos a agregar esta regla iptables:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROPCon esto podremos disminuir considerablemente los ataques que se reciban al servidor. Este labs fue montado en una VPS con la siguiente velocidad:
Este post fue realizado por ZanGetsu