Ir al contenido principal

Instalar ModSecurity en Ubuntu 9.04 Server paso a paso

modsecurity-logoModSecurity es un firewall de aplicaciones web (web application firewall, 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.

Si tienes un servidor web con Apache, no debes dejar de probarlo porque te sentirás más seguro y porque no es nada difícil.

Aquí te dejo lo pasos:

  1. Instalamos ModSecurity con el siguiente comando:

    sudo aptitude install libapache-mod-security

    Instalamos ModSecurity

    Instalamos ModSecurity

  2. A continuación, vamos a preparar el sistema para alojar las reglas de ModSecurity creando un directorio en /etc/apache2/conf.d con el nombre modsecurity:

    sudo mkdir /etc/apache2/conf.d/modsecurity

  3. Ahora nos cambiamos a este nuevo directorio que hemos creado:

    cd /etc/apache2/conf.d/modsecurity

  4. Descargamos las reglas desde la web de ModSecurity:

    sudo wget http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.1.tar.gz

  5. Descomprimimos el archivo descargado:

    sudo tar xzvf modsecurity-core-rules_2.5-1.6.1.tar.gz

  6. Borramos los archivos que ya no necesitamos:

    sudo rm CHANGELOG LICENSE README modsecurity-core-rules_2.5-1.6.1.tar.gz

  7. Si ahora listamos el contenido del directorio con ls, veremos todas las reglas:
    Listado

    Listado de las reglas descargadas

  8. Ya tenemos ModSecurity instalado y las reglas descargadas, ahora toca indicarle a Apache que lea las reglas y las aplique. Para esto creamos el archivo modsecurity2.conf en /etc/apache2/conf.d con el siguiente comando:

    sudo nano /etc/apache2/conf.d/modsecurity2.conf

    e introducimos el siguiente texto:


    Include conf.d/modsecurity/*.conf

    De esta forma Apache leerá todos los archivos .conf del directorio /etc/apache2/conf.d/modsecurity que es donde se encuentran nuestras reglas.

  9. El siguiente paso consiste en crear un directorio donde alojar los logs de ModSecurity. Lo hacemos con el siguiente comando:

    sudo mkdir /var/log/apache2/mod_security

  10. A continuación enlazamos el directorio creado en el paso anterior con el directorio en el que ModSecurity crea los logs por defecto.

    sudo ln -s /var/log/apache2/mod_security/ /etc/apache2/logs

  11. Por último, sólo nos queda reiniciar Apache:

    sudo service apache2 restart

Con esto hemos terminado la instalación. Próximamente veremos como probar su funcionamiento.

Una vez 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.

Fuente: Shadows of epiphany


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:

    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

Comentarios

Entradas famosas

Cotizacion y capitalización de Inteligencia Artificial en vivo

Sigue el precio de Inteligencia Artificial (IA Price) en tiempo real. Consulta gráficas en vivo, capitalización de mercado y datos actualizados en Coinbase. 📷 Imagen ilustrativa relacionada con la noticia El panorama financiero y tecnológico está experimentando una transformación sin precedentes, donde la intersección entre los algoritmos de aprendizaje profundo y los activos digitales ha creado un ecosistema de inversión sumamente dinámico. Actualmente, la monitorización de la Cotización y capitalización de Inteligencia Artificial en vivo se ha transformado en una herramienta indispensable para comprender hacia dónde fluye el capital en la industria del silicio y los datos. Ya no hablamos únicamente de fluctuaciones de precios en exchanges como Coinbase, sino de la valoración en tiempo real de la capacidad computacional y la innovación en software que definirá la próxima década. Este fenómeno refleja una maduración del mercado, donde el valor se deriva...

HR Path impulsa su estrategia de inteligencia artificial con la compra de SnapAI

La consultora HR Path anuncia la adquisición de SnapAI para acelerar su integración de inteligencia artificial en servicios de recursos humanos globales. 📷 Imagen ilustrativa relacionada con la noticia En un movimiento que redefine el panorama del HR Tech a nivel global, la firma consultora francesa HR Path ha oficializado la adquisición de SnapAI, una startup especializada en soluciones de inteligencia artificial aplicada. Esta operación no es simplemente una expansión de cartera; representa un hito donde HR Path impulsa su estrategia de inteligencia artificial con la compra de SnapAI , buscando integrar algoritmos de aprendizaje profundo en su metodología integral de consultoría. El objetivo es claro: transformar los datos masivos de recursos humanos en activos predictivos que permitan a las organizaciones anticipar rotaciones, optimizar procesos de reclutamiento y personalizar la experiencia del colaborador mediante arquitecturas de dat...

Cómo particionar un disco duro en Windows usando herramientas integradas del sistema

¿Qué es una partición de disco? Una partición es una división lógica de un disco duro físico. Cada partición funciona como si fuera un disco independiente: puede tener su propia letra (C:, D:, E:), sistema de archivos y propósito. Ejemplos de uso comunes: Separar Windows de documentos personales Crear una partición exclusiva para respaldos Organizar información por áreas (trabajo, multimedia, proyectos) Antes de comenzar: recomendaciones importantes Antes de modificar particiones, ten en cuenta lo siguiente: 🔒 Haz copia de seguridad de la información importante ⚡ Evita realizar el proceso durante cortes de energía 🛑 No interrumpas el proceso una vez iniciado 💾 Asegúrate de tener espacio libre suficiente en el disco Aunque Windows es bastante seguro en este proceso, cualquier cambio en discos conlleva riesgos. Herramienta principal: Administración de discos Windows incluye la herramienta Administración de discos , que permite: Reducir volúmenes ...