WAF Apache

WAF Apache Firewall de Aplicaciones Web Eduardo Bayón Cascajo Implantación de aplicaciones web 26/01/2012 Eduardo Bayó

Views 517 Downloads 6 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

WAF Apache Firewall de Aplicaciones Web Eduardo Bayón Cascajo Implantación de aplicaciones web 26/01/2012

Eduardo Bayón Cascajo

Implantación de App Web

Contenidos Introducción ........................................................................................................ 2 Instalación de módulos 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 Instalación de DVWA ......................................................................................... 6 ModSecurity ....................................................................................................... 9 Prueba sin ModSecurity instalado .................................................................. 9 Pasos para instalar ModSecurity .................................................................. 12 Prueba con ModSecurity instalado ............................................................... 14 Bibliografía y Webgrafía ................................................................................... 16

Página 1 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Introducción Nuestro objetivo será instalar sobre una máquina 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 además de una aplicación 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 aplicación, un plugin de servidor o filtro al que se aplica un conjunto de reglas para una conversación HTTP. En general, este conjunto de reglas protege de los ataques más comunes, tales como Cross-site Scripting (XSS) y SQL Injection al servidor, mediante la personalización de las reglas para su aplicación por lo que muchos ataques pueden ser identificados y bloqueados. [1]

Instalación de módulos necesarios Actualizar el equipo Antes de realizar ninguna instalación lo recomendable sería actualizar nuestro sistema mediante las siguientes órdenes:

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

Página 2 de 17

Eduardo Bayón Cascajo

Implantación de App Web

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 contraseña para el usuario root:

No pasa nada si no lo especificamos en este momento, podemos esperar a que termine y hacerlo después así: asir@asir-VirtualBox:~$ sudo /usr/bin/mysqladmin -u root password

Una vez terminada la instalación de Mysql pasemos a la siguiente.

Página 3 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Instalar Apache Para ello utilizaremos el comando:

Tardará algo menos que la anterior y no tendremos que realizar ningún paso mientras se realiza.

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

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 línea 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 según lo esperado:

Página 4 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Prueba de funcionamiento del servidor Web Antes de instalar la aplicación vulnerable, vamos a probar que nuestro servidor web funciona de manera correcta y que Apache, PHP y MySQL están bien configurados para interpretarse entre si correctamente. Iremos al directorio /var/www/ que es donde, por defecto, se almacenan nuestras páginas web y crearemos con la instrucción: un documento con extensión .php que nos muestre la información de nuestro sistema:

De modo que iremos al explorador y especificaremos la dirección http://localhost/prueba.php y se nos debería mostrar una página con las características de nuestro servidor web y de los módulos instalados tal como esta:

Buscaremos en ella que los módulos que hemos instalados están correctamente.

Página 5 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Instalación de DVWA Ahora que ya tenemos los módulos necesarios para que DVWA (Damn Vulnerable Web Application) se ejecute correctamente, vamos a realizar la instalación de esta aplicación web vulnerable. Nuestro primer paso es dirigirnos a su página oficial y descargarnos el fichero de instalación: 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 aplicación abriendo un navegador y yendo a la dirección http://localhost/dvwa/index.php

Podemos ver que se conecta correctamente a la aplicación 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:

Página 6 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Una vez abierto, podemos ver como la contraseña de root para el acceso sobre MySQL está vacía, 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 conexión con los nuevos parámetros especificados:

A continuación se nos mostrará una lista con las modificaciones en la base de datos y que confirma que la conexión es correcta:

Página 7 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Ahora bien, cuando volvemos a la página 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 contraseña es password.

Y ya tenemos nuestra aplicación web insegura DVWA instalada y correctamente configurada con MySQL.

Página 8 de 17

Eduardo Bayón Cascajo

Implantación de App Web

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. Además, al ser un módulo de Apache apenas debemos modificar nuestra infraestructura y ModSecurity se integra con ella prácticamente de forma automática. [2]

Prueba sin ModSecurity instalado Antes de comenzar la instalación de ModSecurty vamos a realizar una pequeña prueba para demostrar que nuestro servidor es vulnerable y luego, tras la instalación la repetiremos para ver los cambios producidos. Iremos a nuestro directorio /var/www/ y crearemos un nuevo fichero .php que contenga las siguientes líneas:

Este archivo PHP lo usaremos para que nos muestre el archivo que le pasemos como parámetro. Si estamos trabajando con un servidor de pruebas y no dispone de un nombre de dominio, deberemos asignarle un nombre porque cuando instalemos después ModSecurity ya que no podremos acceder a él usando la dirección IP porque ModSecurity no nos lo permitirá. Por lo que editamos el archivo /etc/hosts con el siguiente comando del siguiente modo:

Y añadiremos una nueva línea que será con la que luego llamemos a nuestro equipo servidor desde un navegador:

Página 9 de 17

Eduardo Bayón Cascajo

Implantación 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 información posible sobre nuestro servidor mediante el comando curl, por lo que en un terminal especificaremos curl -i http://asir y nos mostrará la información de nuestro servidor:

Podemos ver la versión 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:

Página 10 de 17

Eduardo Bayón Cascajo

Implantación de App Web

2. La segunda prueba consiste en ejecutar el archivo creado antes desprotegido.php que habíamos creado en el servidor, le pasaremos como parámetro /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 contraseñas encriptadas:

El mismo resultado obtendríamos si usamos desde la línea de comandos lo siguiente:

Página 11 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Pasos para instalar ModSecurity Antes 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 instalación 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 recién 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:

Página 12 de 17

Eduardo Bayón Cascajo

Implantación 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 continuación 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.

Página 13 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Prueba con ModSecurity instalado Ahora que tenemos instalado ModSecurity vamos a repetir las pruebas anteriormente realizadas, a ver qué información conseguimos del servidor. 

Volvemos a ejecutar el comando curl desde la línea de comandos para pedir información de nuestro sistema:

Podemos ver el trabajo de ModSecurity ya que la información 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 también la segunda prueba y accederemos desde el navegador al fichero desprotegido.php con el parámetro /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.

Página 14 de 17

Eduardo Bayón Cascajo

Implantación de App Web

El mismo error obtendremos si lo intentamos desde un terminal:



También podemos comprobar que no se tiene acceso con la IP, como he avisado:

Si queremos acceder desde nuestro equipo a esta dirección tendremos que editar el fichero C:\Windows\System32\drivers\etc\hosts y añadir una nueva entrada con la IP del servidor seguido del nombre con el que deseamos acceder:

Y no tendremos ningún problema:

Página 15 de 17

Eduardo Bayón Cascajo

Implantación de App Web

Bibliografía y Webgrafía [1]“Web Application Firewall” https://www.owasp.org/index.php/Web_Application_Firewall [Consulta el día 25 de enero de 2012] [2]“ModSecurity” http://sliceoflinux.com/2009/06/26/instalar-modsecurity-en-ubuntu-9-04-serverpaso-a-paso/ [Consulta el día 25 de enero de 2012] Instalación 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/

Página 16 de 17