Bueno, hacer un par de semanas me mude a centos, despues de pasar por varias distros GNU/LINUX, lo primero que hize fue montarme mi servidor web Apache, todo andaba de 10 hasta que llegamos a la parte de la seguridad, e aqui un problema, el servidor apache es facilmente derribado, ademas de un par de reglas iptables que en internet son facilmente encontradas y si no podemos leer un poco sobre configuraciones iptables (
http://underc0de.org/foro/almacen-de-manuales/manual-iptables/msg57988/#msg57988 ), ya con mod security y evasive no era suficiente para un ataque de el poderoso Slowloris, de el cual ya apache desde el año 2009 es victima y lo sige siendo hasta el dia de hoy, ya que no se ha encontrado una solucion concreta al problema.
En la busqueda 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), instalacion:
para instalarnos este mod instalaremos lo siguiente
yum install openssl-devel.x86_64
yum install pcre-devel.x86_64
yum install httpd-devel.x86_64
Descargamos el mod
clickeando acaDescomprimimos:
tar -zxvf mod_qos-10.15.tar.gz
Directorio
Se ingresa al directorio apache2
Se ejecuta la compilación, y se obtendrá una salida como la siguiente:
Se edita el archivo de configuración de apache;
vim /etc/httpd/conf/httpd.conf
Y se inserta la siguiente línea para el módulo del mod_qos:
LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so
Se crea el archivo de configuración de nombre mod_qos.conf:
touch /etc/httpd/conf.d/qos.conf
Se inserta las siguientes líneas en el archivo de configuración recién creado:
vim /etc/httpd/conf.d/qos.conf
## QoS Configuracion
<IfModule mod_qos.c>
#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
</IfModule>
ademas de eso me agrege esta regla iptables:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
Saludos y disfruten
NOTA: las pruebas de ataques fueron realizadas en un servidor vps el cual alcanza una velocidad considerable:
y mi pc 1 mb de velocidad...