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
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:
Hasta la próxima!
Sin respuestas