LinuxParty
Hola Comunidad, después de un corto tiempo de inactividad les hablaré sobre el módulo de mod_security y el módulo mod_evasive para el servicio de apache (servicio web)en GNU/Linux CentOS y prevenir así los ataques de tipo DDOS.
Antes de todo instale el servidor web Apache;
yum -y install httpd
Posteriormente configure para que el servicio para que se inicie en el momento de arrancar el servidor;
chkconfig httpd on
Se inicia el servicio Web;
service httpd start
Por ahora solo tiene el servicio web Apache iniciado.
Si algunos de los módulos mencionados no estuviera, deberían de utilizar el repositorio EPEL.
Aquí indicamos como se instala.
Una vez realizado esto, procedemos a instalar:
yum -y install mod_security
Para su configuración ingrese en el directorio /etc/http/modsecurity.d/ y edita el archivo de nombre modsecurity_crs_10_config.conf (o algo parecido) 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;
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)
#!/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.0"; $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 archivo.pl
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.
Bueno espero les haya servido de algo este pequeño tutorial.
Puede contratar ExtreHost para temas profesionales con sus servidores. No lo dude, contáctenos.
-
Seguridad
- Drones, vigilancia y reconocimiento facial: una startup llamada 'Sauron' presenta un sistema de seguridad para el hogar de estilo militar
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- ¿Olvidó su contraseña? Cinco razones por las que necesita un administrador de contraseñas
- Cómo limitar las conexiones SSH (puerto TCP 22) con ufw en Ubuntu Linux
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
Comentarios