WAF Apache

download WAF Apache

of 17

Transcript of WAF Apache

WAF ApacheFirewall de Aplicaciones WebEduardo Bayn Cascajo Implantacin de aplicaciones web 26/01/2012

Eduardo Bayn Cascajo

Implantacin de App Web

ContenidosIntroduccin ........................................................................................................ 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

Eduardo Bayn Cascajo

Implantacin de App Web

IntroduccinNuestro 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]

Instalacin de mdulos necesariosActualizar el equipoAntes de realizar ninguna instalacin lo recomendable sera actualizar nuestro sistema mediante las siguientes rdenes:

Una vez realizada la actualizacin de los paquetes que tenemos en nuestro equipo podemos empezar con las instalaciones.

Pgina 2 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

Instalar MysqlUna 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

Una vez terminada la instalacin de Mysql pasemos a la siguiente.

Pgina 3 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

Instalar ApachePara ello utilizaremos el comando:

Tardar algo menos que la anterior y no tendremos que realizar ningn paso mientras se realiza.

Instalar soporte para PHPAhora que tenemos Apache ya instalado podemos instalar el soporte para PHP, para ello especificamos el siguiente comando:

Archivos necesariosTras 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:

Para que MySQL soporte PHP:

Reiniciaremos el servidor apache antes de realizar las pruebas pertinentes para saber si nuestro sistema funciona segn lo esperado:

Pgina 4 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

Prueba de funcionamiento del servidor WebAntes de instalar la aplicacin vulnerable, vamos a probar que nuestro servidor web funciona de manera correcta y que Apache, PHP y MySQL estn bien configurados para interpretarse entre si correctamente. Iremos al directorio /var/www/ que es donde, por defecto, se almacenan nuestras pginas web y crearemos con la instruccin: un documento con extensin .php que nos muestre la informacin de nuestro sistema:

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

Eduardo Bayn Cascajo

Implantacin de App Web

Instalacin de DVWAAhora 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/

Una vez descargado modo, dentro del directorio /var/www/:

lo descomprimiremos del siguiente

Y lo moveremos a la carpeta que contiene nuestos sitios web:

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

Eduardo Bayn Cascajo

Implantacin de App Web

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

Eduardo Bayn Cascajo

Implantacin de App Web

Ahora bien, cuando volvemos a la pgina http://localhost/dvwa/index.php se nos mostrar un formulario para autenticarnos en el sistema:

Por defecto, el usuario para poder autenticarnos es admin y la contrasea es password.

Y ya tenemos nuestra aplicacin web insegura DVWA instalada y correctamente configurada con MySQL.

Pgina 8 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

ModSecurityModSecurity 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]

Prueba sin ModSecurity instaladoAntes de comenzar la instalacin de ModSecurty vamos a realizar una pequea prueba para demostrar que nuestro servidor es vulnerable y luego, tras la instalacin la repetiremos para ver los cambios producidos. Iremos a nuestro directorio /var/www/ y crearemos un nuevo fichero .php que contenga las siguientes lneas:

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

Eduardo Bayn Cascajo

Implantacin de App Web

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

Eduardo Bayn Cascajo

Implantacin de App Web

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:

El mismo resultado obtendramos si usamos desde la lnea de comandos lo siguiente:

Pgina 11 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

Pasos para instalar ModSecurityAntes de realizar la siguiente prueba vamos a ver los pasos necesarios para instalar ModSecurity en nuestro sistema y a ver de qu manera cambia la seguridad en el mismo. 1. Nos descargamos e instalamos ModSecurty con el siguiente comando:

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:

3. Nos cambiamos al nuevo directorio recin creado:

4. Nos descargamos las reglas desde la web de ModSecurity:

5. Descomprimiremos el archivo descargado:

6. Y borramos los archivos que ya no son necesarios:

7. Podemos listar el contenido de la carpeta modsecurity para ver todas la reglas:

Pgina 12 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

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:

Y especificamos lo siguiente dentro de l:

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

Eduardo Bayn Cascajo

Implantacin de App Web

Prueba con ModSecurity instaladoAhora que tenemos instalado ModSecurity vamos a repetir las pruebas anteriormente realizadas, a ver qu informacin conseguimos del servidor. Volvemos a ejecutar el comando curl desde la lnea de comandos para pedir informacin de nuestro sistema:

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

Eduardo Bayn Cascajo

Implantacin de App Web

El mismo error obtendremos si lo intentamos desde un terminal:

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:

Y no tendremos ningn problema:

Pgina 15 de 17

Eduardo Bayn Cascajo

Implantacin de App Web

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