mod_security y mod_evasive en GNU/Linux CentOS (para detener ataques DDOS).

Iniciado por july, Noviembre 20, 2012, 12:03:39 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola amigos de underc0de,vamos a ver como se instala estos dos modulos de seguridad para apache
y protegernos de ataques DDOS(en centos)

Antes de todo se instala el Apache;

Código: bash
yum -y install httpd


Código: bash
yum -y install httpd-devel


Posteriormente se configura para que el servicio inicie al momento de arrancar el servidor;

Código: bash
chkconfig httpd on


Se inicia el servicio Web;

Código: bash
service httpd start


Por ahora solo se tiene el servicio web Apache arriba. Se descargan e instalan los repositorios adecuados, rpmforge y el repositorio de jasonlitka

Actualizar el paquete rpmforge (y por si ya existe);

Código: bash
rpm -Uvh paquete.rpm


Y  el repositorio de jasonlitka;

Código: bash
cd /etc/yum.repos.d


Código: bash
vim CentOS-Base.repo


y por ultimo se agrega el contenido del repositorio;

[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
enabled=1
gpgcheck=1
gpgkey=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ahora se instala y configura el modulo mod_security;

Código: bash
yum -y install mod_security


Para su configuración se ingresa al directorio /etc/http/modsecurity.d/ y  se edita el archivo de nombre modsecurity_crs_10_config.conf que es el que contiene la configuración básica del modsecurity.

Entre sus principales parámetros  se encuentran;

    SecRuleEngine: Directiva que controla si se procesan las reglas que controlan el comportamiento de mod_security ante peticiones. Se debe poner en On si la versión del mod instalada no lo hiciera ya por defecto
    SecDataDir: Directva que establece un path donde mod_security guardará información que le es necesaria. Debe ser accesible por el servidor, de la misma manera que los logs, lo que requiere permiso de ejecución hasta la carpeta usada como almacén de datos y capacidad de escritura en la misma.
    SecDefaultAction: El conjunto de acciones por defecto que el mod usará en caso de que una de las reglas de seguridad case con una petición. Son una serie de acciones que se toman en orden y que mod_security usará en caso de que la regla en si no establezca una concreta
    Includes: Algunas distribuciones tienen un bug que hace que no se lean todos los archivos .conf existentes en la localización que se dio en el archivo que creamos anteriormente. Esto quiere decir que aunque se lea el .conf primario, no se accederán a los subdirectorios para ver si poseen más archivos .conf. Para solucionar este problema, en caso de sospechar que no se están procesando las reglas, hay que incluir las rutas explicitas a los subdirectorios de la localización de las reglas (/rules), como se ve en la imagen. NOTA: La versión de las core rules actual tiene un error de sintaxis en un archivo de la carpeta optional_rules que impide que las reglas de la misma se procesen, así que permanece desactivado en el fichero mostrado.

Se reinicia el servicio apache para actualizar los cambios;

service httpd restart

Se verifica que el modulo del mod_security este activo;

httpd -M

Debe mostrar como salida;

security2_module (shared)

Listo, tienen su modulo de seguridad activado y corriendo, si desean conocer todos los parámetros y reglas del modulo recuerden visitar el sitio web oficial. :)

El modulo del mod_evasive permite denegar ataques de tipo DDOS, para instalarse se ejecuta la siguiente sintaxis;

Código: bash
yum -y install mod_evasive


Para configurar las reglas se edita el archivo /etc/httpd/conf.d/mod_evasive.conf , el cual ya viene por defecto con los parámetros recomendados y entre los cuales se encuentran;

    DOSHashTableSize

Cuanto más grande sea el tamaño de la tabla de Hash, más memoria requerirá, pero el rastreo de Ips será más rápido. Es útil aumentar su tamaño si nuestro servidor recibe una gran cantidad de peticiones, pero así mismo la memoria del servidor deberá ser también mayor.

    DOSPageCount

Número de peticiones a una misma página para que una IP sea añadida a la lista de bloqueo, dentro del intervalo de bloqueo en segundos especificado en el parámetro DOSPageInterval

    DOSSiteCount

Igual que 'DOSPageCount', pero corresponde al número de peticiones al sitio en general, usa el intervalo de segundos especificado en 'DOSSiteInterval'.

    DOSPageInterval

Intervalo en segundos para el parámetro umbral de DOSPageCount.

    DOSSiteInterval

Intervalo en segundos para el parámetro umbral DOSSiteCount.

    DOSBlockingPeriod

Periodo de bloqueo para una IP si se supera alguno de los umbrales anteriores.El usuario recibirá un error403 (Forbidden) cuando sea bloqueado, si el atacante lo sigue intentando, este contador se reseteará automáticamente, haciendo que siga más tiempo bloqueada la IP.

    DOSEmailNotify

Dirección de correo electrónico que recibirá información sobre los ataques.

    DosWhitelist

Podemos especificar una IP o rango que será excluido del rastreo por mod_evasive.

Para terminar finalizar se comprueba si cargo el modulo correctamente con el comando httpd -M , que enviara como salida;

evasive20_module (shared)

Así mismo se ejecuta el siguiente script creado en perl para conocer si envía el mensaje Forbidden (403) :)

Código: perl
#!/usr/bin/perl

# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..100) {
  my($response);
  my($SOCKET) = new IO::Socket::INET( Proto   => "tcp",
                                      PeerAddr=> "DireccionIP:80");
  if (! defined $SOCKET) { die $!; }
  print $SOCKET "GET /?$_ HTTP/1.0nn";
  $response = <$SOCKET>;
  print $response;
  close($SOCKET);
}


Recuerden que para ejecutar el archivo , primeramente se edita con la dirección IP objeto de prueba , así mismo se guarda con la extensión .pl y se ejecuta con el comando perl , así;

perl No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si como respuesta ante el ataque se recibe la pagina FORBIDDEN 403 significa que el modulo esta funcionando correctamente.Por ultimo debido a la configuración que viene por defecto en el mod_evasive su dirección IP queda bloqueada por 10 segundos debido al ataque al sitio web, parámetro que también se puede editar agregándola a la DOSWhitelist, sera cuestión de seguir leyendo

info obtenida en centosni


Entonces con estas medidas de seguridad, podrias prevenir o detener una ataque DDos?
Pd: Excelente material, ya mismo lo implementare

nada es 100% confiable pero todo ayuda a proteger nuestros servers
hay muchas cosas mas que se pueden hacer deapoco voy poniendo material

muy buen tutorial, aunque prefiero csf en vez de evasive, ambos son muy recomendados.


Existen muchas más medidas de seguridad en servidores web apache.
Actualmente me encuentro redactando algunas entradas en mi blog sobre seguridad en servidores web apache, voy por la parte 15 (o algo así), por si os interesa, comienzan aquí:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

"Nunca discutas con un idiota, podria no notarse la diferencia"
Kant.