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

Como bloquera archivos adjuntos que son virus en postfix o plesk

   Como bloquear adjuntos del correo en Plesk/Postfix   1- edita el archivo  /etc/postfix/main.cf   2- busca el parametro mime_header_checks...