GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Nginx con libmodsecurity y OWASP ModSecurity Core Rule Set en Ubuntu 16.04

En este tutorial, le mostraré cómo compilar la última versión de Nginx con libmodsecurity (Modsecurity 3.x) que NO debe confundirse con Modsecurity 2.9. También integraremos el conjunto de reglas básicas (CRS) ModSecurity de OWASP.

Libmodsecurity es una reescritura importante de ModSecurity que ofrece un rendimiento y una estabilidad mejorados. Aunque Modsecurity 2.9.x se ofreció para diferentes plataformas, realmente favorecía la implementación con Apache y la implementación con otras plataformas requería varias dependencias de terceros a costa del rendimiento. Libmodsecurity cambia todo eso al ser una reescritura desde cero. Puede encontrar más información sobre Libmodsecurity aquí.

Esta guía asume que ya tiene una nueva instancia actualizada de Ubuntu 16.04 de 64 bits.

1. Requisitos previos de instalación

Instalar requisitos previos

apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev

2. Descargar ModSecurity

Clonar Git Modsecurity, pagar y compilar libmodsecurity

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install

Git clona el conector Modsecurity-nginx

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Ahora debería tener el siguiente directorio que contiene el conector Modsecurity-nginx

/opt/ModSecurity-nginx

3. Descargar Nginx

Descargue la última fuente estable de Nginx

Vaya a http://nginx.org/en/download.html y obtenga el enlace a la última versión estable de Nginx. En el momento de escribir este artículo, la última versión estable era nginx-1.12.0.tar.gz. Ajuste las instrucciones a continuación para su versión específica. Descargar y extraer

cd /opt 
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0

4. Configurar e instalar Nginx

Configure Nginx con el conector Modsecurity-nginx e instale

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

El código fuente de ModSecurity que descargamos anteriormente incluye un archivo modsecurity.conf de muestra con algunas configuraciones recomendadas. Copie este archivo a la carpeta con los archivos de configuración de Nginx

cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf

Cree un enlace simbólico de /usr/local/nginx/sbin/nginx a /bin/nginx

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Cree los siguientes directorios:

mkdir /usr/local/nginx/conf/sites-available 
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx

Cree un enlace simbólico a /usr/local/nginx/conf/ssl /etc/nginx/ssl

ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl

Haga una copia de seguridad del archivo conf/nginx.conf

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak

Configure el archivo /usr/local/nginx/conf/nginx.conf

vi /usr/local/nginx/conf/nginx.conf

Localice y elimine todas las entradas que comiencen con "servidor {" y terminen con la penúltima llave de cierre "}". En otras palabras, deje intacta la última llave.

Justo encima de la última llave, inserte lo siguiente. Esto le indicará a Nginx que busque las configuraciones de nuestro sitio en el directorio "/usr/local/nginx/conf/sites-enabled"

include /usr/local/nginx/conf/sites-enabled/*;

Entonces, el final del archivo debería verse como a continuación (asegúrese de que el cierre } esté presente):

include /usr/local/nginx/conf/sites-enabled/*; 
}

Habilite la directiva "usuario" eliminando el prefijo "#" si está deshabilitado y asegúrese de que esté configurado para el usuario "www-data" en lugar del predeterminado "nadie" para que se vea como a continuación:

user www-data;

Guarde el archivo.

Descargue el script de inicio Nginx de Jason Giedymin para administrar el servicio nginx y configurarlo como un servicio

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx 
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

Este script proporciona las siguientes opciones para administrar el servicio Nginx:

# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy

5. Instale el conjunto de reglas básicas de OWASP ModSecuirty

Git clona y copia la versión actual del conjunto de reglas y la configuración de OWASP en Nginx

cd /opt/ 
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf

Configurar Nginx con OWASP ModSecuirty Core Rule Set

Edite /usr/local/nginx/conf/modsecurity.conf

vi /usr/local/nginx/conf/modsecurity.conf

Al final del archivo, pegue lo siguiente:

#Load OWASP Config 
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350

En su archivo modsecurity.conf de Nginx o en los archivos conf de su servidor individual, ingrese lo siguiente en los bloques de servidor o ubicación. El siguiente ejemplo muestra una combinación de agregar las entradas tanto en el servidor como en los bloques de ubicación:

server { 
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}

Pruebe su configuración de Nginx

service nginx configtest

Si no hay errores, vuelva a cargar o reinicie su Nginx

service nginx reload

Ahora puede ver /var/log/modsec_audit.log para cualquier evento de ModSecurity

tail -f /var/log/modsec_audit.log

Si está satisfecho, edite el archivo /usr/local/nginx/conf/modsecurity.conf y configure "SecRuleEngine" de "DetectionOnly" a "On" como se muestra a continuación

SecRuleEngine On

Esto concluye esta guía.

Sobre el autor

Dino Edwards es un profesional de TI con más de 20 años de experiencia en el sector federal, estatal y privado. También se sabe que incursiona en la programación.

Tiende a escribir guías o instructivos después de terminar un proyecto en particular principalmente porque su memoria apesta y no quiere volver a inventar la rueda si tiene que hacer el mismo proyecto nuevamente.

Ponte en contacto

  Sitio web del autor   Seguir   Correo electrónico


Ubuntu
  1. Cómo instalar el servidor HTTP Git con Nginx en Ubuntu 16.04

  2. Cómo instalar el servidor HTTP Git con Nginx en Ubuntu 20.04

  3. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

  4. Cómo implementar Modsecurity con Nginx en Ubuntu 20.04 LTS

  5. Implemente Modsecurity con Nginx en Ubuntu 20.04 LTS

Instalación de Nginx con compatibilidad con PHP5 y MySQL en Ubuntu 8.10

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04

Cómo instalar el conjunto de reglas básicas de OWASP en Modsecurity con Nginx en Ubuntu 20.04

Cómo configurar ModSecurity con Nginx en Debian/Ubuntu

Cómo instalar ModSecurity 3 y el conjunto de reglas básicas de OWASP con Nginx en Debian 11 Bullseye

Configure Django con Postgres, Nginx y Gunicorn en Ubuntu 18.04