Buscador

Loading

lunes, 21 de mayo de 2012

mod_qos mejorando apache y previniendo ataques DDOS


mod_qos  (quality of service) es un modulo para apache por medio del cual nos es posible controlar la cantidad de accesos y trafico para optimizar la calidad del servicio, y así evitar que un ataque, usuarios traviesos o simplemente un exceso de visitas nos hagan pasar mal el rato.

Instalación en CentOS (aunque similar en las demás distribuciones),  antes que nada instalar las librerias necesarias ejecutando:


# yum install openssl-devel.x86_64


# yum install pcre-devel.x86_64


# yum install httpd-devel.x86_64

una vez instaladas descargar mod_qos desde http://sourceforge.net/projects/mod-qos/ o desde el sitio oficial http://opensource.adnovum.ch/mod_qos/ en donde encontraremos documentación adicional para personalizar la configuracion

y ejecutamos


# tar -xfz mod_qos-10.5.tar.gz
# mod_qos-10.5
# cd apache2
# apxs -i -c  mod_qos.c

si no salen mensajes de error  la ultima linea menciona que se genero el archivo

/usr/lib64/httpd/modules/mod_qos.so 


ahora creamos un archivo en nuestra configuración de apache /etc/httpd/conf.d/qos.conf  y agregamos:


LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so
## QoS Configuracion
<IfModule mod_qos.c>
        #Manejo de conexiones hasta 20000 IPs diferentes
        QS_ClientEntries 20000


        # Se permite solamente 20 conexiones por IP
        QS_SrvMaxConnPerIP 20


        # Maximo numero de conexiones TCP activas 156
        MaxClients              156


        # 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>

reiniciamos apache  y listo...


Funcionando más que sobrado en un XEON 8 cores con mas de 300mil visualizaciones diarias a sitios con php/mysql  aun en hora pico, claro que también cuenta con APC Cache del cual hablare luego


CPU Usage: u20.77 s4.02 cu0 cs0 - .462% CPU load
16.9 requests/sec - 185.6 kB/second - 11.0 kB/request
3 requests currently being processed, 8 idle workers
__.W__.C_C._._.._...............................................
................................................................
......................


ACTUALIZACIÓN 6 Junio 2012

Si muestra el error "undefined symbol: EVP_DecryptFinal" la solución  es

Intenta instalar y después re compilar

# yum install libtool openssl*

Si persiste la falla busca en /etc/http/conf.d/


# LoadModule ssl_module modules/mod_ssl.so

colócalo como comentario y ahora agrégalo arriba de mod_qos  quedando :


LoadModule ssl_module modules/mod_ssl.so
LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so



y listo...










No hay comentarios:

Publicar un comentario

Generar número aleatorio en java script con rango de valores

Número aleatorio en java script con rango de valores Les comparto esta funcion para  generar un número aleatorio en javascript, y este num...