Seguridad en tus aplicaciones web con NGINX

DevSecOps, Sysadmin, SecAdmin, Security Engineer o, si  simplemente quieres aprender,  hablaremos de WAF en Nginx y haremos una prueba de concepto «PoC» con Nginx y Python

#ciberseguridad #SecOps #Sysadmin #DevSecOps

Despúes de un tiempo de recarga de pilas, las navidades y superado un resfriado algo diferente, en esta ocasió os traigo un artículo en el que veremos como podemos usar NGINX como proxy, además explotaremos algunos de sus módulos para fortalecer la seguridad de tus aplicaciones web o apis.

Pero esto no es todo, veremos como añadir un listado de IP «origenes» no autorizados y bloquearemos los accesos desde la red Tor, bloquearemos los escaneres de vulnerabilidades más utilizados y añadiremos el módulo modsecurity como WAF.

Dividiremos este artículo en 4 partes que ire publicando semanalmente:

  • 1 Instalación de Nginx en Centos/Redhat
  • 2 Nginx como proxy inverso con Seguridad Https «Reverse proxy»
  • 3 Nginx con ModSecurity como Web Application Firewall «WAF»
  • 4 Ngnix, listas de acceso
  • 5 Nginx, bloqueando escaneres de vulnerabilidades
  • 6 Pruebas de concepto

  • 1 Instalación de Nginx en Centos/Redhat
  • En esta primera parte construiremos un entorno robusto para aplicar y mejorar la seguridad de las aplicaciones, step by step aumentaremos el nivel de configuración y dificultad.

    El primer paso será tener una máquina virtual lista para empezar, aquí podeis bajaros una máquina lista para arrancar .

    Yo siempre aconsejo realizar un bastionado previo, aquí os dejo un artículo donde os recomiendo un par de herramientas que suelo utilizar.

    A continuación dejo las instrucciones para actualizar el sistema y instalar los paquetes necesarios

    
    dnf update
    #También podeís usar: yum update
    
    dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
    dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
    
    
    dnf install gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config wget openssl openssl-devel nano -y
    
    dnf --enablerepo=powertools install doxygen yajl-devel -y
    dnf --enablerepo=remi install geoip-devel -y
    
    yum install geoip-devel -y
    

    Instalación y compilación de Nginx con compatibilidad modsecurity

    Antes de realizar la instalación debemos comprobar cual es la última versión disponible, podemos comprobar la última versión en este enlace https://nginx.org/download/ , debemos sustituir la versión a descargar para asegurar que descargamos y compilamos la última versión

    #Descargamos la última versión estable de la página oficial, descomprimimos y compilamos e instalamos.
    
    wget http://nginx.org/download/nginx-1.19.8.tar.gz
    tar -xvzf nginx-1.19.8.tar.gz
    cd /opt/nginx-1.19.8.tar.gz

    Antes de compilar la versión de Nginx descargada, hay descargar y compilar el módulo ModSecurity, este módulo lo configuraremos más adelante.

    Instalación y compilación del módulo modsecurity

    Para ello clonaremos el repositorio ModSecurity de los desarrolladores SpiderLabs, en el momento de la descarga del repositorio verificar cual es la última rama o versión disponible, en nuestro caso usaremos v3/master

    #clonaremos repo de modsecurity para nginx en el dir opt
    cd /opt/ && git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
    
    # Entramos en el directorio bajamos la última versión y compilamos el módulo.
    cd ModSecurity
    
    #Actualizamos y compilamos el módulo
    git submodule init
    git submodule update
    ./build.sh && ./configure
    
    make && make install
     
    # bajamos el conector  modsecurity-nginx
    cd /opt
    git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
    
    

    Una vez tenemos preparado ModSecurity compilaremos Nginx con las compatibilidades requeridas para la capa de protección.

    ./configure --user=nginx --group=nginx --with-pcre-jit --with-debug --with-http_ssl_module  --with-http_realip_module --add-module=/opt/ModSecurity-nginx

    Hasta aquí la primera parte, espero que lo pongaís en práctica, en el próximo post veremos:

  • 2 Nginx como proxy inverso con Seguridad Https «Reverse proxy»
  • Hasta la próxima!

    Sin respuestas

    Deja una respuesta

    Recibirás mis últimas publicaciones

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Jesús Amorós & JS Sistemas will use the information you provide on this form to be in touch with you and to provide updates and marketing.