WAF Apache
WAF Apache
WAF Apache
Contenidos
Introduccin ........................................................................................................ 2 Instalacin de mdulos necesarios .................................................................... 2 Actualizar el equipo ........................................................................................ 2 Instalar Mysql.................................................................................................. 3 Instalar Apache ............................................................................................... 4 Instalar soporte para PHP............................................................................... 4 Archivos necesarios ........................................................................................ 4 Prueba de funcionamiento del servidor Web .................................................. 5 Instalacin de DVWA ......................................................................................... 6 ModSecurity ....................................................................................................... 9 Prueba sin ModSecurity instalado .................................................................. 9 Pasos para instalar ModSecurity .................................................................. 12 Prueba con ModSecurity instalado ............................................................... 14 Bibliografa y Webgrafa ................................................................................... 16
Pgina 1 de 17
Introduccin
Nuestro objetivo ser instalar sobre una mquina limpia con Ubuntu (11.04 en mi caso) un servidor web Apache con soporte para PHP y un gestor de bases de datos como Mysql adems de una aplicacin vulnerable como Dvwa. Tras estos pasos, instalaremos Modsecurity que se trata de un WAF (Web Application Firewall). Un Web Application Firewall (firewall de aplicaciones web o WAF) es una aplicacin, un plugin de servidor o filtro al que se aplica un conjunto de reglas para una conversacin HTTP. En general, este conjunto de reglas protege de los ataques ms comunes, tales como Cross-site Scripting (XSS) y SQL Injection al servidor, mediante la personalizacin de las reglas para su aplicacin por lo que muchos ataques pueden ser identificados y bloqueados. [1]
Una vez realizada la actualizacin de los paquetes que tenemos en nuestro equipo podemos empezar con las instalaciones.
Pgina 2 de 17
Instalar Mysql
Una vez actualizado vamos a ver como instalar Mysql en nuestro equipo Linux, para ello ejecutaremos
Mientras se instala se nos pedir que especifiquemos una nueva contrasea para el usuario root:
No pasa nada si no lo especificamos en este momento, podemos esperar a que termine y hacerlo despus as:
asir@asir-VirtualBox:~$ sudo /usr/bin/mysqladmin -u root password <contrasea>
Pgina 3 de 17
Instalar Apache
Para ello utilizaremos el comando:
Tardar algo menos que la anterior y no tendremos que realizar ningn paso mientras se realiza.
Archivos necesarios
Tras haber instalado las tres anteriores aplicaciones debemos instalamos los archivos necesarios para q MySQL soporte PHP5 y Apache2, para realizar esta tarea debemos escribir en la lnea de comandos lo siguiente: Para que MySQL soporte Apache:
Reiniciaremos el servidor apache antes de realizar las pruebas pertinentes para saber si nuestro sistema funciona segn lo esperado:
Pgina 4 de 17
De modo que iremos al explorador y especificaremos la direccin http://localhost/prueba.php y se nos debera mostrar una pgina con las caractersticas de nuestro servidor web y de los mdulos instalados tal como esta:
Buscaremos en ella que los mdulos que hemos instalados estn correctamente.
Pgina 5 de 17
Instalacin de DVWA
Ahora que ya tenemos los mdulos necesarios para que DVWA (Damn Vulnerable Web Application) se ejecute correctamente, vamos a realizar la instalacin de esta aplicacin web vulnerable. Nuestro primer paso es dirigirnos a su pgina oficial y descargarnos el fichero de instalacin: http://www.dvwa.co.uk/
Comprobaremos que podemos acceder a la aplicacin abriendo un navegador y yendo a la direccin http://localhost/dvwa/index.php
Podemos ver que se conecta correctamente a la aplicacin pero que no puede conectar con la base de datos MySQL, para ello iremos al directorio donde tengamos almacenada la carpeta dvwa (en mi caso /var/www) y modificaremos el fichero config.inc.php que se encuentra en /dvwa/config:
Pgina 6 de 17
Una vez abierto, podemos ver como la contrasea de root para el acceso sobre MySQL est vaca, por lo que especificaremos la que pusimos (si es que lo hicimos) cuando instalamos MySQL en nuestro sistema:
Ahora bien, iremos sobre http://localhost/dvwa/setup.php y pulsaremos sobre Create/Reset Database en la pantalla que se nos muestra para crear una nueva base de datos o realizar una nueva conexin con los nuevos parmetros especificados:
A continuacin se nos mostrar una lista con las modificaciones en la base de datos y que confirma que la conexin es correcta:
Pgina 7 de 17
Ahora bien, cuando volvemos a la pgina http://localhost/dvwa/index.php se nos mostrar un formulario para autenticarnos en el sistema:
Y ya tenemos nuestra aplicacin web insegura DVWA instalada y correctamente configurada con MySQL.
Pgina 8 de 17
ModSecurity
ModSecurity es un firewall de aplicaciones web (WAF) Como cualquier otro tipo de firewall, su objetivo principal es detectar y prevenir los ataques antes de que alcancen las aplicaciones web. Adems, al ser un mdulo de Apache apenas debemos modificar nuestra infraestructura y ModSecurity se integra con ella prcticamente de forma automtica. [2]
Este archivo PHP lo usaremos para que nos muestre el archivo que le pasemos como parmetro. Si estamos trabajando con un servidor de pruebas y no dispone de un nombre de dominio, deberemos asignarle un nombre porque cuando instalemos despus ModSecurity ya que no podremos acceder a l usando la direccin IP porque ModSecurity no nos lo permitir. Por lo que editamos el archivo /etc/hosts con el siguiente comando del siguiente modo:
Y aadiremos una nueva lnea que ser con la que luego llamemos a nuestro equipo servidor desde un navegador:
Pgina 9 de 17
Tras estos pasos previos, vamos comprobar que podemos acceder a nuestro servidor con el nombre que hemos especificado en el fichero /etc/hosts y con la IP:
1. Una vez comprobado que podemos acceder vamos a realizar una prueba para ver toda la informacin posible sobre nuestro servidor mediante el comando curl, por lo que en un terminal especificaremos curl -i http://asir y nos mostrar la informacin de nuestro servidor:
Podemos ver la versin de Apache que corre en nuestro sistema y el sistema que es. NOTA: Si no tenemos curl instalado la orden que lo realiza es lo siguiente:
Pgina 10 de 17
2. La segunda prueba consiste en ejecutar el archivo creado antes desprotegido.php que habamos creado en el servidor, le pasaremos como parmetro /etc/passwd. Especificaremos en el navegador lo siguiente: De modo que podremos ver el contenido del archivo /etc/passwd que contiene, por ejemplo, todos los nombres de los usuarios del sistema y sus contraseas encriptadas:
Pgina 11 de 17
2. Tras esperar pacientemente a que termine la instalacin preparemos al sistema para alojar la reglas de ModSecurity creando un directorio en /etc/apache2/conf.d con el nombre modsecuity:
Pgina 12 de 17
8. Ya tenemos ModSecurity instalado con sus reglas descargadas, ahora toca indicarle a Apache que lea estas reglas y las aplique. Para esto creamos el archivo modsecurity2.conf en /etc/apache2/conf.d con este comando:
De este modo Apache leer todos los archivos .conf del directorio /etc/apache2/conf.d/modsecurity que es donde se encuentran nuestras reglas. 9. Lo siguiente ser crear un directorio donde alojar los logs de ModSecurity, lo haremos con:
10. A continuacin crearemos un enlace entre el fichero anterior creado y el directorio que almacena los logs de ModSecurity por defecto:
11. Para acabar y que tomen efecto los cambios, reiniciaremos nuestro servidor Apache:
NOTA: Ya se ha dicho, pero debemos tener en cuenta que una vez hayamos instalado ModSecurity y puesto en funcionamiento, no podremos (por defecto) acceder a nuestra web usando direcciones IP en el navegador. Deberemos usar nombres de dominio.
Pgina 13 de 17
Podemos ver el trabajo de ModSecurity ya que la informacin que vemos es completamente falsa. ModSecurity nos hace creer que el servidor web es Apache/2.2.0 (cuando antes era Apache/2.2.17) y que est montado sobre Fedora (en vez de Ubuntu). Repetiremos tambin la segunda prueba y accederemos desde el navegador al fichero desprotegido.php con el parmetro /etc/passwd:
Y el resultado es claro:
En vez de ver todos los nombres de usuario veremos un mensaje diciendo que no podemos acceder a dicho fichero.
Pgina 14 de 17
Tambin podemos comprobar que no se tiene acceso con la IP, como he avisado:
Si queremos acceder desde nuestro equipo a esta direccin tendremos que editar el fichero C:\Windows\System32\drivers\etc\hosts y aadir una nueva entrada con la IP del servidor seguido del nombre con el que deseamos acceder:
Pgina 15 de 17
Bibliografa y Webgrafa
[1]Web Application Firewall https://www.owasp.org/index.php/Web_Application_Firewall [Consulta el da 25 de enero de 2012] [2]ModSecurity http://sliceoflinux.com/2009/06/26/instalar-modsecurity-en-ubuntu-9-04-serverpaso-a-paso/ [Consulta el da 25 de enero de 2012] Instalacin de ModSecurity http://sliceoflinux.com/2009/06/26/instalarmodsecurity-en-ubuntu-9-04-server-paso-a-paso/ Pruebas sobre ModSecurity http://sliceoflinux.com/2009/06/30/probarmodsecurity/
Pgina 16 de 17