Probar ModSecurity

modsecurity-logoEn un artículo anterior explicamos como instalar ModSecurity paso a paso. Sin embargo, pueden asaltarnos varias dudas antes de decidirnos a instalarlo como por ejemplo: ¿por qué lo necesito?, ¿para qué me sirve? o ya lo instalé pero ¿cómo puedo saber si funciona?

Pues para intentar contestar a estas preguntas está este artículo. Por supuesto, partimos de la base de que contamos con un servidor que tiene instalados Apache y PHP5 pero no ModSecurity. Para las la realización de las pruebas usaremos curl y Firefox.

¿Te atreves a probar ModSecurity?

Preparación

  • Para una de las pruebas necesitamos crear un archivo de texto en nuestro servidor. Por lo que ejecutamos el siguiente comando:

    sudo nano /var/www/inseguro.php

    Y escribimos el siguiente contenido:

    <? $archivo_secreto = $_GET['archivo_secreto'];
    include ($archivo_secreto);
    ?>

    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 ModSecurity no podremos acceder a él usando la dirección IP. ModSecurity no nos lo permitirá.
    Por lo tanto editamos el archivo /etc/hosts con el siguiente comando:

    sudo nano /etc/hosts

    Y añadimos, debajo de la línea 127.0.0.1 localhost, la línea roja con el nombre servidor o el que se quiera (será el que usemos para acceder a él).

    127.0.0.1 localhost
    127.0.1.1 servidor
    ...

Ahora ya estamos en condiciones de probar el funcionamiento de ModSecurity.

Sin ModSecurity

En esta sección vamos a ver qué ocurre cuando trabajamos con nuestro servidor sin tener instalado ModSecurity con dos ejemplos en los que se vulnera la seguridad del sistema. Aunque antes de empezar probamos a acceder al nuestro servidor web. En cualquier servidor web tecleamos la dirección del servidor: http://servidor.

Accedemos al servidor usando un navegador

Accedemos al servidor usando un navegador

Una vez que hemos comprobado el acceso a nuestro servidor web comenzamos con las pruebas:

  • La primera prueba consiste en obtener toda la información sobre nuestro servidor web. Para esto usamos el siguiente comando:

    curl -i http://servidor

    Gracias a este curl obtendremos la información real de nuestro servidor, que es justo lo que necesitaría cualquier atacante para intentar acceder a nuestro sitio web. Como muestra la captura de pantalla, mi servidor está ejecutando Apache 2.2.11 sobre Ubuntu y PHP 5.2.6-3ubuntu4.1 con Suhosin-Patch (un sistema de protección para PHP).

    Ejecutamos curl

    Ejecutamos curl -i http://servidor

  • La segunda prueba consiste en ejecutar el archivo inseguro.php que habíamos creado en el servidor pasándole como parámetro /etc/passwd. Es decir, desde una navegador accedemos a la siguiente dirección:

    http://servidor/inseguro.php?archivo_secreto=/etc/passwd

    El resultado es el listado del archivo /etc/passwd que contiene, entre otras cosas, los nombres de todos los usuarios del sistema. Otra información también bastante valiosa para cualquier atacante.

    Accedemos al archivo inseguro.php desde el navegador

    Accedemos al archivo inseguro.php desde el navegador

    El mismo resultado lo obtenemos al ejecutar en un terminal el siguiente comando:

    curl -i "http://servidor/inseguro.php?archivo_secreto=/etc/passwd"

    Accedemos al archivo inseguro.php

    Accedemos a inseguro.php usando curl

Con ModSecurity

En esta sección se supone que tenemos instalado ModSecurity en nuestro servidor. Y vamos a repetir las pruebas anteriores para observar los nuevos resultados.

  • Volvemos a ejecutar la primera prueba que consistía simplemente en pedirle información a nuestro servidor usando curl con el siguiente comando:

    curl -i http://servidor

    Y podemos ver la siguiente información:

    Obtenemos información del servidor a través de curl

    Obtenemos información del servidor a través de curl

    El trabajo de ModSecurity lo apreciamos desde el primer momento porque la información que obtenemos es completamente falsa. ModSecurity nos hace creer que el servidor web es Apache 2.2.0 (en vez de 2.2.11) y está montado sobre Fedora (en vez de Ubuntu).

  • Repetimos la segunda prueba ahora con ModSecurity y accedemos al archivo inseguro.php con el parámetro /etc/passwd. Es decir, tecleamos en el navegador la siguiente dirección:

    http://servidor/inseguro.php?archivo_secreto=/etc/passwd

    Obteniendo el siguiente resultado:

    Accedemos al archivo insegguro.php

    Accedemos al archivo inseguro.php desde el navegador

    En esta ocasión, en lugar de ver todos los nombres de usuario del sistema, leemos el mensaje “Method Not Implemented“.

    El mismo resultado lo obtenemos al ejecutar en un terminal el siguiente comando:

    curl -i "http://servidor/inseguro.php?archivo_secreto=/etc/passwd"

    Accedemos a inseguro.php con curl

    Accedemos a inseguro.php con curl

Espero que este par de ejemplos sean suficientes para mostrar la utilidad de ModSecurity. Un imprescindible para nuestro servidor web.

Fuente: Shadows of epiphany

Artículos relacionados:

9 Responses to “Probar ModSecurity”


  1. 1 Memox Sábado, 7 noviembre 2009 a las 7:10 pm

    Excelente eres mi idolo muy buena fuente de informacion.

    Saludos…

  2. 2 norberto Sábado, 12 diciembre 2009 a las 2:26 am

    hola he seguido sus blocks, pero ninguno ha funcionado para ubuntu 9.10 y yo quiero instalar moodle. me pueden apoyar gracias

    • 3 para_norberto Martes, 9 febrero 2010 a las 9:38 am

      A ver Norberto, hijo.

      Pareces tonto ¿qué narices tiene que ver Moodle con lo que está tratando aquí el autor.

      La única conclusión que saco es que te aburres tanto como yo, con la diferencia de tu idiotez

  3. 4 Schatten Jueves, 18 marzo 2010 a las 7:48 pm

    Oye viejo…

    Que información tan importante… es muy util instalar el mod_security…!

    Salu2

  4. 5 gabriel Domingo, 27 junio 2010 a las 5:27 am

    Hola disculpa la parte de asignar un dominio a mi IP (127.0.1.1 servidor) no me sirve no se porque.. cuando hago el restart del apache me dice que fallo por el nombre de dominio para 127.0.1.1 ……como podria colocar entonces el nombre del dominio en mi servidor de prueba ubuntu server 10

  5. 6 Marck Lunes, 28 junio 2010 a las 6:17 am

    alguien me puede ayudar? no puedo acceder a mi pagina web, instale mod_security y no puedo acceder al servidor a traves del ip y yo no tengo nombre de dominio =S …………… si el moderador me puediese responder o el que hizo este post, porq no me sirve lo que puso ahi de colocar la linea 127.0.1.1 servidor

    AYUDAAAAAAAAAAAAAA


  1. 1 Instalar ModSecurity en Ubuntu 9.04 Server paso a paso « Slice of Linux Trackback en Martes, 30 junio 2009 a las 9:56 am
  2. 2 Instalar Moodle en Ubuntu Server 8.10 « Slice of Linux Trackback en Viernes, 12 febrero 2010 a las 10:04 am
  3. 3 Instalar Moodle sobre Ubuntu Server 8.10 en una línea « Slice of Linux Trackback en Viernes, 12 febrero 2010 a las 10:07 am

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Síguenos en Twitter

 

Sitios amigos:

Si has leído nuestro Acerca de, sabes que no publicamos ningún artículo práctico que no hayamos probado. Aún así, no podemos garantizar que en tu sistema funcione como en el nuestro.

Esta página no es de soporte. Compartimos lo que sabemos, pero si resolviésemos todas las dudas que recibimos, no podríamos hacer artículos nuevos. Por eso, si alguien plantea un problema, y sabes la respuesta, siéntete libre para comentarla.

Si tienes una duda y no obtienes respuesta, puedes recurrir a sitios específicos como ubuntu-es.org o Linux Q.

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.


A %d blogueros les gusta esto: