Detallamos los pasos para el desarrollo del laboratorio, primero
iniciaremos con la instalación y configuración del Mod Security (nuestro WAF), luego continuamos con el Mod Evasive (nuestro IPS) y por último el Mod Qos (Nuestra protección contra ataques de denegación de servicios o Slow Loris).
1. Universidad Tecnológica de Panamá
Facultad de Ingeniería de Sistemas Computacionales
Maestría en Seguridad Informática
Sistemas de Seguridad II
Laboratorio #7 – Mod Security, Mod Evasive, Mod Qos
Profesor: Leandro Espinoza
Integrantes:
Montenegro, Jesús / Céd.: 8-843-89
Moreno, José / Céd.: 8-794-402
Muñoz, Andrea / 8-850-2239
Rodríguez, Carlos / Céd.: 8-814-1930
Viernes, 9 de octubre de 2015
2. Desarrollo del laboratorio
A continuación detallamos los pasos para el desarrollo del laboratorio, primero
iniciaremos con la instalación y configuración del Mod Security (nuestro WAF), luego
continuamos con el Mod Evasive (nuestro IPS) y por último el Mod Qos (Nuestra
protección contra ataques de denegación de servicios o Slow Loris).
1- Instalamos las dependencias con el siguiente comando:
apt-get install libxml2 libxml2-dev libxml2-utils
apt-get install libaprutil1 libaprutil1-dev
3. Nos preguntará si deseamos continuar, le decimos que sí, osea presionamos la letra
Y y luego la tecla Enter.
Ahora que ya hemos instalado las dependencias necesarias, podemos iniciar la
instalación del Mod Security.
1.1 Instalación del mod_Security:
Mod security cambio a la versión dos por eso utilizamos este comando
apt-get install libapache2-mod-security2 -y
4. 2. Configuración del ModSecurity
2.1 Vamos a copiar la configuración recomendada a su correspondiente
archivo en la ubicación
cp /etc/modsecurity/modsecurity.conf-recommended
/etc/modsecurity/modsecurity.conf
2.2 Ahora procedemos a activar las reglas en el archivo de configuración
usamos el siguiente comando:
vi /etc/modsecurity/modsecurity.conf
5. 2.3 Buscamos la línea:
SecRuleEngine DetectionOnly
2.4 Procedemos a reemplazar la línea anterior, por la siguiente línea:
SecRuleEngine On
6. 2.5 Incrementamos la cantidad máxima de solicitud a 16MB
SecRequestBodyLimit 16384000
SecRequestBodyInMemoryLimit 16384000
3. Descargamos el Core Set Rule de OWASP
3.1 Vamos a descargarlo dentro de la carpeta temporal
cd /tmp
3.2 Descargamos las reglas
wget -O SpiderLabs-owasp-modsecurity-crs.tar.gz
https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
7. Nota: Prestar atención en que el archivo se descargue satisfactoriamente, pues sino
al realizar el siguiente paso nos enviará un error y no podremos continuar.
3.3 Descomprimimos
tar -xzvf SpiderLabs-owasp-modsecurity-crs.tar.gz
3.4 Copiamos las reglas al directorio del modsecurity
cp -r SpiderLabs-owasp-modsecurity-crs-c63affc/* /etc/modsecurity/
3.5 Copiamos o renombramos las reglas por defecto:
cp /etc/modsecurity/modsecurity_crs_10_setup.conf.example
/etc/modsecurity/modsecurity_crs_10_setup.conf
3.7 Procedemos a crear los symlinks o enlaces directos de las reglas activas
cd /etc/modsecurity/base_rules
for f in * ; do sudo ln -s /etc/modsecurity/base_rules/$f
/etc/modsecurity/activated_rules/$f ; done
cd /etc/modsecurity/optional_rules
for f in * ; do sudo ln -s /etc/modsecurity/optional_rules/$f
/etc/modsecurity/activated_rules/$f ; done
8. Nota: Cada comando con viñeta lo ejecutamos por separado, y en ese mismo orden.
3.8 Vamos a cargar las reglas en el archivo de configuración del mod secuirty
nano /etc/apache2/mods-available/security2.conf
3.8.1 Añadimos la siguiente línea al archivo de configuración
Include /etc/modsecurity/activated_rules/*.conf
3.9 Recargamos los headers de los módulos y reiniciamos el apache
a2enmod headers
a2enmod security2
service apache2 restart
Nota: Cada comando con viñeta lo ejecutamos por separado, y en ese mismo orden.
4.0 Verificamos los errores del modsecurity y procedemos a crear unas reglas
personalizadas
cd /etc/modsecurity
4.1 Creamos carpetas donde va nuestras reglas personalizadas
mkdir custom_rules
9. Para mayores detalles sobre como personalizar nuestras reglas podemos consultar
el siguiente sitio web:
https://digi.ninja/blog/modsecurity_lab.php
4.2 Creamos la regla
custom_rules/modsecurity_crs_99_custom.conf
Podemos verificar las reglas activas en el siguiente archivo:
cat /var/log/apache2/modsec_audit.log
Por Ejemplo para desactivar las dos reglas que vemos en pantalla, escribimos el
siguiente comando.
SecRuleRemoveById 981401
SecRuleRemoveById 981407
Además es posible que también halla que desactivar estas reglas:
SecRuleRemoveById 900046
SecRuleRemoveById 981054
4.3 Creamos el enlace
ln -s /etc/modsecurity/custom_rules/modsecurity_crs_99_custom.conf
/etc/modsecurity/activated_rules/
4.4 Reinciamos apache
service apahce2 restart
10. 5. Instalación de mod evasive
apt-get install libapache2-mod-evasive
5.1 Creamos la carpeta o directorio de logs
mkdir /var/log/mod_evasive
5.2 Cambiamos el dueño de la carpeta
chown www-data:www-data /var/log/mod_evasive/
11. 5.3 Editamos el archivo de configuración
vi /etc/apache2/mods-available/evasive.conf
5.4 Habilitamos los siguientes parámetros:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir /var/log/mod_evasive
DOSEmailNotify EMAIL@DOMAIN.com
DOSWhitelist 127.0.0.1
5.5 Recargamos el mod evasive
a2enmod evasive
5.6 Reiniciamos apache
service apache2 restart
12. 6. Instalación de mod qos
apt-get -y install libapache2-mod-qos
6.1 Configuración del mod qos
Ponemos los siguientes parámetros
cd /etc/apache2/mods-available/
Abrimos el siguiente archivo:
nano qos.load
13. Luego agregamos la siguiente línea y guardamos el archivo.
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
Luego abrimos el archivo que aparece abajo y procedemos a modificarlo.
nano qos.conf
## QoS Settings
<IfModule mod_qos.c>
# handles connections from up to 100000 different IPs
QS_ClientEntries 100000
# will allow only 50 connections per IP
QS_SrvMaxConnPerIP 50
# maximum number of active TCP connections is limited to 256
MaxClients 256
# disables keep-alive when 70% of the TCP connections are occupied:
QS_SrvMaxConnClose 180
# minimum request/response speed (deny slow clients blocking the server, ie.
slowloris keeping connections open without requesting anything):
#QS_SrvMinDataRate 150 1200
# and limit request header and body (carefull, that limits uploads and post requests
too):
# LimitRequestFields 30
# QS_LimitRequestBody 102400
</IfModule>
El archivo qos.conf debe quedar con los parámetros de la imagen de abajo.
14. 6.2 Reiniciamos apache
service apache2 restart
Para ver más información sobre la configuración del Mod Qos, podemos consultar
el siguiente sitio:
https://www.howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-
apache2-on-debian-lenny
Si hemos seguido todos los pasos al pie de la letra, ya debemos tener nuestro
servidor apache protegido.
Ataque con HTTP Attack: