Sunteți pe pagina 1din 23

Actividades

Trabajo: Instalación y pruebas del firewall de aplicaciones web


open source: MODSECURITY

Modsecurity es un WAF instalable embebido en HOST o como reverse proxy:

Figura 5. Modesecurity as reverse proxy http://adolfomaltez.wordpress.com/2011/05/29/apache-


reverse-proxy-modsecurity/

ModSecurity puede instalarse de forma embebida protegiendo un único servidor


Apache o como proxy inverso protegiendo varios servidores web. La instalación de
ModSecurity es la misma para estos dos tipos de despliegue, únicamente variará la
configuración de Apache que en el caso de querer proteger varios servidores se deberá
instalar en una máquina dedicada el servidor.

Apache con el módulo ModSecurity, configurando el servidor Apache para que actúe
como proxy inverso. ModSecurity realiza un filtrado de los datos de entrada y salida al
servidor web bloqueando todo el tráfico que considere malicioso según unas reglas
definidas.

Cada una de las peticiones realizadas al servidor web son inspeccionadas por
ModSecurity para comprobar que no llegue al servidor web ningún contenido no
autorizado. En este ejercicio se va a instalar, configurar y probar
ModSecurity protegiendo la aplicación web Mutiliidae.

1. Instalación del entorno

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Descarga e instala Oracle VM VirtualBox desde:
http://www.oracle.com/technetwork/es/server-storage/virtualbox/downloads/index.html

Descarga Máquina Virtual lamp que contiene: Linux Ubuntu server + Apache + Mysql
+ Php (LAMP) y aplicación web php MUTILLIDAE desde:
https://drive.google.com/open?id=0Bz7Tp_tMynwpTVJSZWxYS3RXOHc

La máquina virtual tiene dos dispositivos de red ya configurados:


» Eth0: NAT
» Eth1: 192.168.2.3
Configura el adaptador de red virtual de la máquina local anfitriona (adaptador de
red ORACLE VM VIRTTUALBOX) con la dirección 192.168.2.4, para tener
conectividad con el servidor Ubuntu de la MV (VirtualBox).

Instala el firewall de aplicaciones web modsecurity+modevasive en la MV


fwmodsecurity:

sudo apt-get update (actualizar repositories de software)


sudo apt-get install libapache2-mod-security2 libapache2-modsecurity
libapache2-mod-evasive

Para habilitar las reglas mod_security, copier el fichero de configuración


mod_security, editarlo y establecer el parámetro ‘SecRuleEngine’ a On:

sudo cp /etc/modsecurity/modsecurity.conf{-recommended,}
sudo nano /etc/modsecurity/modsecurity.conf
SecRuleEngine On

SecRequestBodyLimit 32768000
SecRequestBodyInMemoryLimit 32768000

SecResponseBodyAccess Off

Las reglas modsecurity están en:

/usr/share/modsecurity-crs/base_rules
/usr/share/modsecurity-crs/optional_rules
/usr/share/modsecurity-crs/experimental_rules

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Descargar OWASP modsecurity Core Rule Set:

sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git


sudo mv /usr/share/modsecurity-crs /usr/share/modsecurity-crs.bak
sudo mv owasp-modsecurity-crs /usr/share/modsecurity-crs
sudo mv /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf.example
/usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf
sudo ln -s /usr/share/modsecurity-crs/base_rules/*.conf
/usr/share/modsecurity-crs/activated_rules/

Comentar líneas (carácter # al comienzo de línea) 20, 27, 29 del fichero


modsecurity_crs_35_bad_robots.conf (esto ocurre porque la versión de reglas es
posterior a la de modsecurity y este no está preparado para unas pocas acciones, se
podría instalar una versión de reglas más antigua o mejor comentar las directivas
siguientes. Si en el momento de la instalación de modsecurity, su versión ha
cambiado con respecto a esta, es posible que sean otras reglas las que haya que
comentar, la información de reglas a comentar aparece en pantalla al reiniciar el
servicio apache2):

#SecRule REQUEST_HEADERS:User-Agent "@pmFromFile


modsecurity_35_scanners.data" \
#SecRule REQUEST_HEADERS:User-Agent "@pmFromFile
modsecurity_35_bad_robots.data" \
#SecRule REQUEST_HEADERS:User-Agent “(?i:?:c … \

Comentar línea: buscar la cadena dentro del fichero:


“modsecurity_40_generic_attacks.conf” y comentar esa línea:

sudo nano /usr/share/modsecurity-


crs/activated_rules/modsecurity_crs_40_generic_attacks.conf
#SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|
REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@pmFromFile
modsecurity_40_generic_attacks.data" \

Comentar línea: buscar la cadena dentro del fichero:


“modsecurity_50_outbound.conf” y comentar esa línea:

sudo nano /usr/share/modsecurity-


crs/activated_rules/modsecurity_crs_50_outbound.conf
#SecRule RESPONSE_BODY "!@pmFromFile modsecurity_50_outbound.data" \

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Editar /etc/apache2/mods-enabled/security2.conf:

sudo nano /etc/apache2/mods-enabled/security2.conf

Añadir al final de security2.conf:

<ifmodule security2_module>
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf"
IncludeOptional "/usr/share/modsecurity-crs/activated_rules/*.conf"
</IfModule>

Configurar módulo mod_evasive:

Sudo nano /etc/apache2/mod-enabled/mod-evasive.conf

<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 3
DOSBlockingPeriod 3600
DOSLogDir /var/log/apache2/mod_evasive.log
</ifmodule>

Crear fichero de log para mod_evasive:

touch /var/log/apache2/mod_evasive.log
sudo chown www-data:www-data /var/log/apache2/mod_evasive.log

Cargar módulos en Apache:

sudo a2enmod headers


sudo a2enmod evasive
sudo a2enmod security2

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Reinicio de Apache2 web server:

sudo service apache2 restart

Comprobar si están actives:


sudo apachectl -M | grep security2
security2_module (shared)

sudo apachectl -M | grep evasive


evasive20_module (shared)

Instalar las herramientas HOIC, LOIC en la máquina anfitriona para realizar ataques
de denegación de servicio distribuidos DDOS contra la aplicación web MUTILLIDAE
situada en la MV:

HOIC: http://sourceforge.net/projects/highorbitioncannon/?source=typ_redirect
LOIC: http://sourceforge.net/projects/loic/

PD: los antivirus dan alerta cuando se descargan, no pasa nada, se obvia la alerta.

Más información sobre ataques y herramientas DDOS en:


Ataques DDOS:
http://resources.infosecinstitute.com/dangerous-ddos-distributed-denial-of-service-
on-the-rise/
Herramientas DDOS:
http://resources.infosecinstitute.com/dos-attacks-free-dos-attaking-tools

2. Pruebas de funcionamiento de modsecurity:

Con el objetivo de comparar los efectos conseguidos mediante ataques a la aplicación


mutillidae, hay que llevar a cabo las siguientes pruebas en cada una de las dos
máquinas por separado (lamp, fwmodsecurity). Debido a que tienen la misma
dirección IP, hay que realizar las pruebas con una sola máquina virtual arrancada.

Se arranca una máquina, se pasan todas las pruebas, se monitorizan y se recogen


resultados; y, posteriormente, se realiza la misma operación con la otra máquina. También
se puede utilizar solo la máquina fwmodsecurity habilitando y deshabilitando el firewall
mediante el parámetro SecRuleEngine On/Off en /etc/modsecurity/modsecurity.conf

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Comprobar:

» Accede al servidor Apache desde el navegador de la máquina local mediante la


dirección IP de la máquina Ubuntu server donde está instalado el servidor Apache.
Si está correctamente instalado MODSECURITY prohibirá el acceso, ya que existe
una regla que impide acceder mediante dirección IP. Solo se permite por defecto
acceso mediante nombres de dominio con DNS configurado. Para permitir el acceso
mediante dirección IP el alumno deberá deshabilitar la regla que impide tal acceso y
comprobar posteriormente que ya se permite acceder mediante dirección IP.

» Después de deshabilitar la regla anterior, comprobar el acceso a


http://192.168.2.3/../../../etc/passwd mediante la herramienta ncat
(https://nmap.org/ncat/, o también disponible en Kali linux) para evitar que el
navegador pueda suprimir los caracteres../. Se debería prohibir el acceso. Localizar
el mensaje de LOG donde se especifica la regla que impide el acceso y mostrarlo en
la memoria.

Ataques

» Explota al menos 5 vulnerabilidades OWASP 2013-2010-2007 manualmente o con


ayuda de una herramienta como ZAP o similar (DAST): SQLI, XSS, OPEN
REDIRECT, LFI…

» Mediante las herramientas HOIC y LOIC realiza ataques de denegación de


servicio distribuidos DDOS desde la máquina anfitriona a la aplicación
mutillidae instalada en las máquinas virtuales. Para realizar los ataques de DDOS y
que tengan éxito, es conveniente dirigirlos a aquellas partes de la aplicación que sean
más vulnerables a ataques DDOS por consumir más recursos al ser requeridas por el
usuario. Por ello, se debe investigar un poco la aplicación para configurar las URLs
más vulnerables y dirigir los ataques hacia ellas. Además, hay que estudiar como
parametrizar los ataques con cada herramienta.

Mediante distintos métodos como aplicados en todas las capas de la aplicación:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


» Comando TOP de Linux.
» Log de la aplicación de mutillidae:
 http://192.168.2.3/mutillidae/index.php?page=show-log.php
» Log de S.O. Linux  /var/log/…
» Log de apache/modsecurity/modevasive  /var/log/apache2…
» Phpmyadmin: http://192.168.2.3/mutillidae/phpmyadmin/  mysql estado actual.
» Aplicación wireshark instalada en la máquina anfitrión para grabar estadísticas de
tráfico durante los ataques. Para uso de wireshark consultar: 
https://www.incibe.es/CERT/guias_estudios/guias/guia_wireshark
» …

Entregable

Se debe confeccionar una memoria explicando lo realizado, resaltando el análisis


comparativo de los ataques realizados contra cada una de las máquinas.

Se referenciarán pantallas, logs, capturas, etc. que irán en un anexo al final. Por tanto,
se debe aportar en un anexo aparte copias de pantallas con resultado de comandos,
logs, capturas de wireshark, navegador, herramientas DDOS, etc. que demuestren la
realización correcta del ejercicio.

Extensión máxima: (sin contar anexos) 15 páginas (fuente Georgia 11 e interlineado


1,5).

Debe contener: índice, apartados con contenido principal, conclusiones y referencias.

Entrega un fichero en formato Zip o Rar, con la memoria + anexo.

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Configuración de máquinas virtuales
Localizamos el archivo de la máquina virtual de “Lamp”.

Una vez seleccionado el archivo “Lamp”, se deberá demostrar la máquina virtual


instalada.

Configuración de adaptador de red virtual de la máquina anfitriona


Una vez instalada la máquina virtual se procese a configurar la red, para eso
seleccionamos el menú “Archivo” y la opción de “Administrador de red anfitrión”

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Configuramos el adaptador de red con la dirección 192.168.2.4 en la parte de
configuración manual y presionamos el botón de Aplicar.

Proceso de clonado de máquinas virtuales


Tras haber instalado Virtual Box (en mi caso no ha sido necesario por tenerlo ya
instalado previamente), y después de haber descargado la máquina virtual LAMP,
procedemos a clonarla con el nombre de FWMODSECURITY. Para ello, seleccionamos
la máquina virtual a clonar (en nuestro caso “lamp”) tal y como puede apreciarse en la
siguiente imagen:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Nos situamos en la máquina virtual “Lamp” damos clic derecho y elegimos la opción
de clonar a la cual se le asignara el nombre de “fwmodesecurity”.

Presionamos el botón de Next donde deberemos seleccionar la opción de “Clonación


completa” y seleccioamos el botón “Clonar” para finalizar la clonación de la máquina
virtual.

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Se deberá de mostrar la siguiente máquina virtual clonada.

Instala el firewall de aplicaciones web modsecurity+modevasive en la MV


fwmodsecurity:
El procedimiento que se muestra a continuación utiliza las versiones de
MODSECURITY (2.7.7) y de CORE RULE SET (2.2.9) correspondientes a la fecha en la
que se realiza la configuración de la actividad. Es posible que si en el momento de
realizar la actividad, han aparecido nuevas versiones de MODSECURITY y de CORE
RULE SET, el resultado de ejecutar este procedimiento puede diferir del obtenido en el
momento de configurar la actividad.
Para poder realizar la instalación del WAF, en primer lugar deberemos seleccionar la
máquina virtual “fwmodsecurity”, y pulsar el botón titulado “Iniciar” (representado con
una flecha verde que apunta a la derecha), tal y como puede apreciarse en la siguiente
imagen:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Continuamos con la instalación del Firewall con los siguientes datos de acceso:
Usuario: root
Contraseña: root

Tras introducir por usuario “root”, y por contraseña “root”, Linux nos permitirá el
acceso, como puede apreciarse en la pantalla siguiente:

Antes de instalar el WAF, deberemos ejecutar la instrucción “sudo apt-get update”, que
actualizará el sistema, tal y como puede apreciarse en la pantalla siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


A continuación, instalamos el WAF mediante el comando “sudo apt-get install
libapache2-modsecurity2 libapache2-modsecurity libapache2-mod-evasive”,
obteniendo el siguiente resultado:

Como puede apreciarse en la pantalla anterior, nos pide confirmación para instalar el
WAF. Pulsamos la opción s, y se ejecuta el proceso de instalación, tal y como puede
apreciarse en la pantalla siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Habilitación de reglas de mod_security
Ejecutamos las instrucciones “sudo cp/etc/modsecurity/modsecurity.conf {-
recommended,}”, y “sudo nano /etc/modsecurity/modsecurity.conf”, tal y como puede
apreciarse en la pantalla siguiente:

Al introducir las instrucciones anteriores, nos aparecerá un editor de texto, en el que


podremos configuraremos las reglas del WAF introduciendo las líneas “SecRuleEngine
On”, “SecRequestBodyLimit 32768000”, “SecRequestBodyInMemoryLimit 32768000”
y “SecResponseBodyAccess Off”.

Pulsando la secuencia de teclas “CTRL+O”, nos pide confirmación para guardar los
cambios, tal y como se puede apreciar en la ventana siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Tras confirmar los cambios, vemos que nos informa que el fichero se ha actualizado con
el texto “220 líneas escritas”, tal y como puede apreciarse en la siguiente pantalla:

Pulsando la secuencia de teclas “CTRL+X”, salimos del editor de archivos, tras


haberlo modificado y haber almacenado dichos cambios, como puede apreciarse
en la pantalla siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Instalación de OWASP modsecurity Core Rule Set
Ejecutamos la instrucción “sudo wget https://github.com/SpiderLabs/owasp-
modsecurity-crs/archive/2.2.9.tar.gz
gzip –d 2.2.9.tar.gz
tar .xvf2.2.9.tar” ,tal y como puede apreciarse en la ventana siguiente:

Seguidamente, hacemos copia de seguridad del archivo


“/usr/share/modsecurity-crs” mediante el comando “sudo mv
/usr/share/modsecurity-crs /usr/share/modsecuritycrs.bak”, y reemplazamos
el archivo “/usr/share/modsecurity-crs” con el archivo “owasp-modsecurity-
crs” mediante el comando “sudo mv owasp-modsecurity-crs
/usr/share/modsecurity-crs”, tal y como puede apreciarse en la pantalla
siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


A continuación establecemos enlaces entre los archivos “.conf” de la carpeta
“/usr/share/modsecurity-crs/base_rules” con los de la carpeta
“/usr/share/modsecuritycrs/activated_rules/”, tal y como puede apreciarse en la
siguiente pantalla:

Accedemos al directorio “/usr/share/modsecurity-crs/base_rules/” mediante el


comando “cd /usr/share/modsecurity-crs/base_rules/”, tal y como puede apreciarse en
la pantalla siguiente:

Editamos el archivo “modsecurity_crs_35_bad_robots.conf” mediante el comando


“nano modsecurity-crs_35_bad_robots.conf”, tal y como puede apreciarse en la
pantalla siguiente:

Comentamos las líneas que empiezan con “SecRule REQUEST_HEADERS:


UserAgent”,precediendo a dichas líneas con el carácter “#”, tal y como puede apreciarse
en la siguiente pantalla:

Pulsando la secuencia de teclas “CTRL+O”, nos pide confirmación para guardar los
cambios, tal y como se puede apreciar en la ventana siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Tras confirmar los cambios, vemos que nos informa que el fichero se ha actualizado con
el texto “30 líneas escritas”, tal y como puede apreciarse en la siguiente pantalla:

Pulsando la secuencia de teclas “CTRL+X”, salimos del editor de archivos, tras haberlo
modificado y haber almacenado dichos cambios, como puede apreciarse en la pantalla
siguiente:

Accedemos al directorio “/usr/share/modsecurity-crs/activated_rules/” mediante el


comando “cd /usr/share/modsecurity-crs/activated_rules/”, tal y como puede
apreciarse en la pantalla siguiente:

Editamos el archivo “modsecurity_40_generic_attacks.conf” mediante el comando


“nano modsecurity_40_generic_attacks.conf”, tal y como puede apreciarse en la
pantalla siguiente:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Comentamos las líneas que empiezan con “SecRule REQUEST_COOKIES|!
REQUEST_COOKIES”, precediendo a dichas líneas con el carácter “#”, tal y como
puede apreciarse en la siguiente pantalla:

Pulsando la secuencia de teclas “CTRL+O”, nos pide confirmación para guardar los
cambios, tal y como se puede apreciar en la ventana siguiente:

Tras confirmar los cambios, vemos que nos informa que el fichero se ha actualizado con
el texto “238 líneas escritas”, tal y como puede apreciarse en la siguiente pantalla:

Pulsando la secuencia de teclas “CTRL+X”, salimos del editor de archivos, tras haberlo
modificado y haber almacenado dichos cambios, como puede apreciarse en la pantalla
siguiente:

Editamos el archivo “modsecurity_50_outboud.conf” mediante el comando “nano


modsecurity_50_outboud.conf”, comentamos la línea ‘SecRule RESPONSE_BODY !
@pmFromFile modsecurity_50_outbound.data (precediéndola del carácter #),
salvamos los cambios y salimos del editor (Sólo he puesto la captura de pantalla de la
modificación, ya que el resto de pantallas son similares a las mencionadas
anteriormente):

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Accedemos al directorio “/etc/apache2/mods-enabled/” mediante el comando “cd
/etc/apache2/mods-enabled/”, y editamos el archivo “security2.conf” mediante el
comando “nano security2.conf”, tal y como puede apreciarse en la pantalla siguiente:

Añadimos líneas al final del archivo, tal y como puede apreciarse en la siguiente
pantalla (las líneas que hemos insertado, son las que se encuentran enmarcadas en
recuadro de color rojo), salvamos los cambios y salimos del editor (Sólo he puesto la
captura de pantalla de la modificación, ya que el resto de pantallas son similares a las
mencionadas anteriormente):

Y editamos el archivo “mod-evasive.conf” mediante el comando “nano


modevasive.conf””, tal y como puede apreciarse en la pantalla siguiente:

Añadimos líneas al final del archivo, tal y como puede apreciarse en la siguiente
pantalla (las líneas que hemos insertado, son las que se encuentran enmarcadas en
recuadro de color rojo), salvamos los cambios y salimos del editor (Sólo he puesto la
captura de pantalla de la modificación, ya que el resto de pantallas son similares a las
mencionadas anteriormente):

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Como en el enunciado de la práctica no queda claro si el archivo se llama
“modevasive.conf” o “mod_evasive.conf”, y no existe dicho ningún archivo con ese
nombre, lo he creado con el nombre “mod-evasive.conf” y luego lo he creado como
“mod_evasive.conf” a partir del archivo anterior mediante el comando de copia de
archivos “cp”, tal y como puede apreciarse en la pantalla siguiente:

Accedemos al directorio “/var/log/apache2/” mediante el comando “cd


/var/log/apache2/”, y creamos el archivo “mod_evasive.log” mediante los comandos
“touch” y “chown”, tal y como puede apreciarse en la pantalla siguiente:

Reiniciamos el servicio apache2 mediante el comando “service apache2 restart”, y


cargamos los módulos de apache “headers”, “evasive” y “security2” mediante el
comando “sudo a2enmod”, tal y como puede apreciarse en la pantalla siguiente:

Reiniciamos el servicio apache2 mediante el comando “sudo service apache2 restart”, y


comprobamos que los módulos “headers”, “evasive” y “security” se han cargado
correctamente, mediante el comando “sudo apachectl –M”, tal y como puede apreciarse
en la pantalla siguiente (Si están bien cargados, deberemos observar que aparecen
“headers_module (shared)”, “evasive20_module (shared), y security2_module
(shared)):

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


Instalación de las herramientas HOIC y LOIC en la máquina
anfitriona
Instalación de HOIC (High Orbit Ion Cannon)
Descargamos la herramienta HOIC, que nos bajará el archivo “HOIC.zip”, lo extraemos,
y ha estará completada la instalación y, por tanto, lista para su uso, tal y como puede
apreciarse en la imagen siguiente:

Instalación de LOIC (Low Orbit Ion Cannon)


Al intentar descargar la herramienta LOIC, el antivirus bloque impide su descarga
porque la identifica como una amenaza para el sistema, pues, según él, está infectada
con el virus “Evo-gen [Susp]”, tal y como puede apreciarse en las siguientes imágenes:

TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)


TEMA 2 – Actividades © Universidad Internacional de La Rioja (UNIR)

S-ar putea să vă placă și