| Formulario de acceso |
|---|
| Anuncios |
|---|
|
|
| Bloquear ataques DoS con mod_evasive |
|
|
| viernes, 06 de octubre de 2006 | ||
|
Una ataque de Denegación de Servicio, por su concepción, es dificil de parar si su único objetivo es colapsar el sistema durante cierto tiempo. Sin embargo, cuando estos ataques van dirigidos contra servidores instalados en la máquina, podemos utilizar herramientas de lo más variadas para intentar paliar sus efectos. Una de esas herramientas, destinada a proteger al servidor Apache de ataques DoS, es el módulo mod_evasive. mod_evasive es un módulo de seguridad programado para cargarse con el servidor Apache y cuyo propósito no es otro que el de prevenir o anular ataques de Denegación de Servicio o de fuerza bruta basados en peticiones masivas al servidor de páginas web (HTTP DoS). A través del módulo tendremos la posibilidad de redirigir el tráfico malicioso hacia otra aplicación de control que terminará de filtrar las peticiones (firewalls, programas personalizados, enrutadores, ...). Funcionamiento mod_evasive basa su funcionamiento en la prevención de ataques mediante la comparación de la IP solicitante con una tabla dinámica que registra las páginas accedidas por dicha IP y la frecuencia de accesos. En el preciso instante en que una máquina solicita una dirección del servidor Apache, mod_evasive filtrará cualquier dirección IP que cumpla con los siguientes requisitos:
Si una IP resulta filtrada por cumplir con alguna de las condiciones anteriores, recibirá un código 403 (Forbidden) en respuesta a su petición y le será denegado el acceso durante un periodo de tiempo configurable. Instalación Podemos descargar la última versión de mod_evasive en la dirección http://www.zdziarski.com/projects/mod_evasive. La instalación y posterior activación se ha de realizar mediante los scripts apxs de Apache y, a priori, no debería ser demasiado complicado. Observemos a continuación un detalle del proceso de instalación: [root@annie ~]# cd /usr/local/src/ El comando apxs suele venir incluido en el paquete de desarrollo (devel) a partir de la versión 2 del servidor Apache, así que tendremos que instalarla si aún no lo está (por ejemplo, en Fedora Core, dicho paquete se referencia como httpd-devel). Una vez instalado el programa, habrá que reiniciar Apache para cargar el módulo con su configuración por defecto. Configuración El script de instalación ya escribe por sí mismo una línea en el fichero de configuración de Apache (httpd.conf) que se encargará de cargar el módulo la próxima vez que el servidor sea reiniciado. Aún así es recomendable que miremos en dicho fichero la siguiente ocurrencia (la ruta hacia la librería puede variar dependiendo de la distribución): LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so Esta línea se encarga de lanzar el módulo con los parámetros por defecto. Dichos parámetros son más que suficientes en condiciones "normales", aunque es muy probable que queramos controlar qué es lo que hace el módulo o tal vez necesitemos adaptar algún parámetro a una situación especial. Para ello, añadiremos la siguiente directiva al fichero httpd.conf (se indican los valores por defecto): <IfModule mod_evasive20.c> Repasemos alguno de los parámetros más importantes que podemos incluir en la directiva:
DOSSystemCommand “/sbin/iptables –I INPUT –p tcp –dport 80 –s %s –j DROP”
DOSWhitelist 66.249.65.*
El módulo mod_evasive viene acompañado de un script en lenguaje Perl llamado test.pl que nos permitrirá comprobar si el funcionamiento del módulo es todo lo correcto que debiera. El funcionamiento del script es bien sencillo: manda cien peticiones del tipo GET /?<número> HTTP/1.0 seguidas al puerto 80 de la máquina local, que deberán ser bloqueadas por el módulo si éste está bien configurado. La salida presentada al ejecutar el script debería ser algo similar a esto: [root@annie mod_evasive]# perl test.pl La respuesta 403 Forbidden aparecerá después de unas veinte peticiones y nos indicará que el funcionamiento del módulo es correcto. Si hemos establecido la ejecución de iptables siguiendo el ejemplo del apartado de conficuración, podemos ejecutar el siguiente comando y observar si la dirección IP desde la cual hemos ejecutado el script ha quedado bloqueada: [root@annie mod_evasive]# iptables -L
Sólo los usuarios registrados pueden escribir comentarios. Powered by AkoComment 2.0! |
||
| < Anterior | Siguiente > |
|---|







