Si está buscando una instalación de NGINX más segura, Jack Wallen le muestra cómo instalarla con ModSecurity, para un servidor web reforzado.

    ModSecurity es un conjunto de herramientas para la monitorización, registro y control de acceso de aplicaciones web en tiempo real. Este módulo de código abierto Web Application Firewall (WAF) hace un trabajo excepcional en la protección de servidores web (Apache, NGINX, e IIS) de ataques que apuntan a vulnerabilidades potenciales en varias aplicaciones web. ModSecurity maneja tareas como:

    • Monitoreo de seguridad de aplicaciones en tiempo real y control de acceso
    • Registro de tráfico HTTP completo
    • Evaluación continua de la seguridad pasiva
    • Endurecimiento de aplicaciones web

    Quiero guiarte en el proceso de instalación de ModSecurity y NGINX, para que puedas asegurarte de que tu servidor web es más capaz de resistir ciertos ataques. El proceso de instalación es un poco complicado y se maneja completamente a través de la línea de comandos. Estaré haciendo demostraciones en la plataforma Ubuntu Server 16.04, instalando las últimas versiones de cada una. Durante la instalación, deberá comprobar con cada uno de ellos que las instrucciones que aparecen a continuación coinciden con la última versión disponible (y modificar los pasos según sea necesario. Al momento de escribir este artículo, la última versión de NGINX es 1.13.4.

    Dicho esto, comencemos.

    Instalación de dependencias

    Lo primero que haremos es instalar las dependencias necesarias. Antes de hacerlo, es importante detener y desactivar Apache. Si Apache está ejecutándose, NGINX no puede arrancar. Para desactivar Apache, ejecute los siguientes comandos;

    sudo systemctl stop apache2sudo systemctl disable apache2

    Tenga en cuenta que los comandos anteriores no eliminarán Apache, sino que simplemente detendrán el servidor y luego lo deshabilitarán para que no se inicie al arrancar. Con eso fuera del camino, instalemos las dependencias. Vuelva a la ventana de su terminal y emita el comando:

    sudo apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

    Compilar ModSecurity

    Lo primero que hay que hacer es descargar la rama nginx_refactoring de ModSecurity. Esto se hace con los siguientes comandos:

    cd /usr/srcgit clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

    Con la descarga completa, es hora de compilar con los comandos:

    cd ModSecurity./autogen.sh./configure --enable-standalonee-module --disable-mlogcmake

    Compilar nginx

    A continuación descargamos y compilamos NGINX. Aquí es donde es importante asegurarse de que está descargando la última versión (infórmese aquí. Como estaré trabajando con NGINX 1.13.4, el comando para descargar será:

    cd /usr/srcsudo wget http://nginx.org/download/nginx-1.13.4.tar.gz

    Ahora extraemos el archivo con el comando:

    sudo tar xvzf nginx-1.13.4.tar.gz

    Antes de compilar, cambiemos al usuario root con el comando sudo -s. Una vez que tenga privilegios de root, los comandos a compilar son:

    cd nginx-1.13.4/./configure --user=www-data --group=wwww-data --add-module=/usr/src/ModSecurity/nginx/modecurity --with-http_ssl_modulemakemake install

    Ahora debemos modificar el usuario predeterminado de nginx con el comando:

    sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

    Pruebe la instalación con el comando:

    /usr/local/nginx/sbin/nginx -t

    Usted debería haber devuelto una prueba exitosa (.

    Creación de un archivo de unidad systemd

    Necesitamos asegurarnos de que NGINX pueda arrancar desde el arranque. Para ello, crearemos un nuevo archivo systemd con el comando sudo nano /lib/systemd/system/nginx.service con los siguientes contenidos:

    Servicio]Type=forkingExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadKillStop=/usr/local/nginx/sbin/nginx -s stopKillMode=processRestart=on-failureRestartSec=42sPrivateTmp=trueLimitNOFILE=200000[Install]WantedBy=multi-user.targetSave y cierre ese archivo. Para iniciar, detener y reiniciar nginx, los comandos serán:sudo systemctl start nginx.servicesudo systemctl stop nginx.servicesudo systemctl restart nginx.service

    Guarde y cierre ese archivo. Para iniciar, detener y reiniciar NGINX, los comandos serán ahora:

    sudo systemctl start nginx.servicesudo systemctl stop nginx.servicesudo systemctl restart nginx.service

    Configurar ModSecurity y NGINX

    Ahora es el momento de configurar. Lo primero que haremos es configurar NGINX. Emita el comando sudo nano /usr/local/nginx/conf/nginx.conf. Dentro de este archivo, busque la sección:

    ubicación / { root html; index index.html index.htm;}

    Cambie la sección anterior a:

    ubicación / { ModSecurityEnabled on; ModSecurityConfig modsec_includes.conf; root html; index.html index.html index.htm;}

    Guarde y cierre ese archivo.

    A continuación habilitamos las reglas básicas de OWASP. Para ello, ejecute el comando sudo nano /usr/local/nginx/conf/modsec_includes.conf y añada el siguiente contenido:

    include modsecurity.confinclude owasp-modecurity-crs/crs-setup.confinclude owasp-modecurity-crs/rules/*.conf

    Guarde y cierre ese archivo.

    Para nuestro siguiente paso, vamos a importar los archivos de configuración de ModSecurity necesarios. Para ello, ejecute los siguientes comandos:

    sudo cp /usr/src/ModSecurity/modecurity.conf-recomendado /usr/local/nginx/conf/modecurity.confsudo cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/

    Habilite la opción SecRuleEngine en el archivo modsecurity.conf con el comando:

    sudo sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modecurity.conf

    Finalmente, agregue el conjunto de reglas principales de OWASP ModSecurity con los comandos:

    cd /usr/local/nginx/confsudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.gitsudo cd owasp-modecurityity-crssudo mv crs-setup.conf.example crs-setup.confsudo cd rulessudo mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confsudo mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

    Abrir el cortafuegos

    Antes de probar NGINX/ModSecurity, necesitamos abrir nuestro firewall con los comandos:

    sudo ufw allow OpenSSHsudo ufw allow 80sudo ufw default denysudo ufw enable

    Comprobación de la configuración

    Finalmente, podemos probar nuestra configuración. En su servidor, emita el comando:

    sudo tail -f /usr/local/nginx/logs/error.log

    Abra un navegador y apunte hacia él:

    http://SERVER_IP/?param="><script>alert(1);</script>

    Donde SERVER_IP es la dirección IP de su servidor.

    Observe la cola desde su ventana de comandos mientras su navegador carga la pantalla de bienvenida de NGINX. Los errores deben aparecer y ser emitidos en la cola .

    Enhorabuena, ahora tiene a NGINX ejecutando ModSecurity.

    Boletín informativo de consejotecnologico.com

    Refuerce las defensas de seguridad de TI de su organización manteniéndose al día de las últimas noticias, soluciones y mejores prácticas en materia de ciberseguridad. Entregado los martes y jueves