WINTXCODERS Terminal
[visitante@wintxcoders-pc ~]:$ Bienvenido a la comunidad
Recuerda que puedes participar en nuestra comunidad registrándote

Instalando mod_evasive para dificultar ataques DoS.

Iniciado por PAYASAKX, Abril 01, 2015, 02:08:03 PM

« anterior - próximo »

PAYASAKX

Maestro

  • Desconectado
  • Hola buenas gente de Wintxcoders, esta mañana leyendo un post de ANTRAX sobre los famosos ataques DoS & DDoS, he visto que hay un mod para Apache llamado "mod_evasive" que dificulta los ataques DoS y me he informado sobre ello y quería comentarlo y compartirlo con todos vosotros.


    ¿Cómo funciona mod_evasive?
    Básicamente lo que hace es mantener una tabla dinámica con las URIs accedidas por las distintas IPs de los clientes del Apache, y permite ejecutar algunas acciones cuando una misma IP solicita un mismo recurso (una misma URI o elementos de un mismo sitio) más de n veces en m segundos. La acción por default que ejecuta el mod_evasive es, una vez superado el máximo de requests por segundo permitidos, bloquear durante una cantidad de segundos al cliente (la IP) devolviendo un error 403 (Forbidden) a la petición HTTP. Pero lo interesante es que también permite ejecutar un comando de sistema al registrarse un intento de ataque, con lo cual se puede agregar una regla al iptables para bloquear la IP del cliente.

    Ahora.. Vayamos a la Instalación
    La instalación es muy sencilla. Hay que descargar el tar, descomprimirlo, compilarlo con apxs y habilitarlo en el httpd.conf.
    Citar# cd /usr/src
    # wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
    # tar zxvf mod_evasive_1.10.1.tar.gz
    # cd mod_evasive
    # apxs -cia mod_evasive20.c # para Apache 1.3 el comando sería apxs -cia mod_evasive.c
    # vi /etc/httpd/conf/httpd.conf # editamos la configuracion
    # service httpd restart # reiniciamos el Apache

    En el httpd.conf habría que agregar las siguientes líneas.
    Citar<IfModule mod_evasive20.c>
    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 300
    </IfModule>

    A continuación transcribo la descripción de las distintas opciones de configuración
    DOSHashTableSize <valor> – Establece el número de nodos a almacenar para cada proceso de peticiones de la tabla hash (contenedor asociativo de recuperación de peticiones por medio de claves que agiliza las respuestas del servidor). Si aplicamos un número alto a este parámetro obtendremos un rendimiento mayor, ya que las iteraciones necesarias para obtener un registro de la tabla son menores.
    DOSPageCount <valor> – Indica el valor del umbral para el número de peticiones de una misma página (o URI) dentro del intervalo definido en DOSPageInterval. Cuando el valor del parámetro es excedido, la IP del cliente se añade a la lista de bloqueos.
    DOSSiteCount <valor> – Cuenta cuántas peticiones de cualquier tipo puede hacer un cliente dentro del intervalo definido en DOSSiteInterval. Si se excede dicho valor, el cliente queda añadido a la lista de bloqueos.
    DOSPageInterval <valor> – El intervalo, en segundos, para el umbral de petición de páginas.
    DOSSiteInterval <valor> – El intervalo, en segundos, para el umbral de petición de objetos de cualquier tipo.
    DOSBlockingPeriod <valor> – Establece el tiempo, en segundos, que un cliente queda bloqueado una vez que ha sido añadido a la lista de bloqueos. Como ya se indicó unas líneas atrás, todo cliente bloqueado recibirá una respuesta del tipo 403 (Forbidden) a cualquier petición que realice durante este periodo.
    DOSEmailNotify <e-mail> – Un e-mail será enviado a la dirección especificada cuando una dirección IP quede bloqueada. La configuración del proceso de envío se establece en el fichero mod_evasive.c de la forma /bin/mail -t %s, siendo %s el parámetro que queda configurado en este parámetro. Será necesario cambiar el proceso si usamos un método diferente de envío de e-mails y volver a compilar el módulo con apxs (por ejemplo, la opción t ha quedado obsoleta en las últimas versiones del comando).
    DOSSystemCommand <comando> – El comando reflejado se ejecutará cuando una dirección IP quede bloqueada. Se hace muy útil en llamadas a herramientas de filtrado o firewalls. Usaremos %s para especificar la dirección IP implicada. Por ejemplo, podemos establecer su uso con iptables de la forma siguiente:
    CitarDOSSystemCommand "/sbin/iptables –I INPUT –p tcp –dport 80 –s %s –j DROP"

    DOSLogDir <ruta> – Establece una ruta para el directorio temporal. Por defecto, dicha ruta queda establecida en /tmp, lo cual puede originar algunos agujeros de seguridad si el sistema resulta violado.
    DOSWhitelist <IP> – La dirección IP indicada como valor del parámetro no será tenida en cuenta por el módulo en ningún caso. Para cada dirección IP a excluir ha de añadirse una nueva línea con el parámetro. Por ejemplo, dejaremos fuera del chequeo del módulo a un posible bot que use los siguientes rangos de direcciones:
    CitarDOSWhitelist 66.249.65.*
    DOSWhitelist 66.249.66.*

    ¿Y cómo sé si está funcionando?
    mod_evasive viene con un pequeño script en perl para probar el funcionamiento del módulo. Para eso vamos al directorio de mod_evasive y ejecutamos el script test.pl:
    Citar# cd /usr/src/mod_evasive
    # perl test.pl
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden

    Y si pusimos la directiva para bloquear la IP por iptables podemos verlo con:
    Citar# iptables -L
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp --  anywhere tcp dpt:http


    Fuente: Agcapa.es

    PAYASAKX

    Maestro

  • Desconectado
  • Cita de: #i[J]0SEE en Abril 02, 2015, 09:06:37 PM
    Menos no se puede currar un post, yo personalmente no uso este tipo de "protección" porque consume muchos recursos seguramente, ademas solo protege el Apache es decir que si te atacan por otro lado la cagas.
    Mod_evasive está echo para Dificultar ataques DoS en apache, no en general.  Por algo es un módulo de apache, porque sirve para dificultar ataques DoS en apache. -.-

    Ruler

    Visitante

  • Desconectado
  • Esto es consumo en bano, ya que solo los manda a un error 403 sin embargo las peticiones siguen llegando, almacenandose en background, a esto se le llama trashing, hacen que si tu So. del hosting no está bien compilado, el kernel mande un modulo a background y tu sistema se congele al ya no aguantar tantas peticiones en espera y se apaga, al iniciar no sabe en donde está dicho modulo de kernel por que lo elimino para borrar espacio..