Cómo instalar ModSecurity para Nginx en Debian/Ubuntu

Cómo instalar ModSecurity para Nginx en Debian/Ubuntu

Es el deseo de todos los desarrolladores de implementar aplicaciones web seguras las que están a salvo de las amenazas. En la mayoría de las ocasiones, esto es sin esfuerzo que hacerlo. La frecuencia de los sitios web que se piratean sigue aumentando a medida que los piratas informáticos continúan explotando todos los vectores de ataque a su disposición.

La seguridad de la aplicación web puede ser un gran desafío, especialmente con la prevalencia de herramientas maliciosas como rootkits, escáneres, bots y otros malware. Aunque ser violado puede parecer una cuestión de cuándo, si no, si no, es prudente implementar algunas medidas de seguridad decentes para salvaguardar sus aplicaciones web.

[También puede gustar: 5 herramientas para escanear un servidor de Linux para malware y rootkits]

Se llama a una de las herramientas que puede proporcionar un nivel decente de seguridad contra los ataques Modificación. Este es un código abierto y gratuito Firewall de aplicaciones web (WAF) que protege sus aplicaciones web de una amplia gama de ataques de la capa 7, como las secuencias de comandos de sitios cruzados (XSS), Sql inyección, secuestro de sesiones y muchos más.

En esta guía, le mostraremos cómo instalar y configurar Modificación trabajar con Nginx sobre distribuciones de Linux con sede en Debian como Ubuntu.

Paso 1: Instalar dependencias

Para comenzar la instalación, se requieren varias dependencias de software para que la instalación tenga éxito. Pero primero, actualice las listas de paquetes y actualice los repositorios de la siguiente manera.

$ sudo apt actualización 

A continuación, instale las dependencias de la siguiente manera.

$ sudo apt install haz gcc construye autoconf automake libtol libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-dev LibpCre3 libpCre3-DEV LibXML2 libxml2-dev LibYajl-Dev doxygen Libcurl4 Libgeoip-Dev Libssl-Dev ZLIB1G-DEVEV 

Paso 2: Instale la última versión de Nginx


El siguiente paso será instalar el Nginx navegador web. Para instalar la última versión, la vamos a instalar desde el
Ondrej/Nginx-Mainline PPA W que actualmente está siendo mantenido por un desarrollador Debian desde 2000.

Para agregar el PPA a su local Ubuntu sistema ejecutar el comando:

$ sudo add-apt-repository PPA: Ondrej/Nginx-Mainline -y -y 

A continuación, actualice las listas de paquetes e instale la última versión de Nginx como sigue

$ sudo apt actualización $ sudo apt install nginx-core nginx-common nginx nginx-full 

Por lo general, solo el repositorio predeterminado está habilitado. Es prudente habilitar el repositorio del código fuente para que pueda, más adelante, descargar el Nginx código fuente en el siguiente paso.

Para lograr esto, modifique el Nginx archivo del repositorio.

$ sudo vim/etc/apt/fuentes.lista.D/Ondrej-Ubuntu-Nginx-Mainline-*.lista 

Localice y sin comodidad esta línea para habilitar el repositorio del código fuente:

# deb-src http: // ppa.plataforma de lanzamiento.net/ondrej/nginx-mainline/ubuntu/focal main 

El archivo ahora debe aparecer como se muestra.

Habilitar Ondřej PPA

Guardar los cambios y salir.

Luego actualice el índice de paquete.

$ sudo apt actualización 

Paso 3: Descargar el paquete de origen Nginx

Para compilar el Modificación módulo dinámico, necesitamos descargar el Nginx Paquete de código fuente. Para hacer esto, primero creamos un Nginx directorio en el /usr/local/src/ ruta para acomodar el archivo del paquete del código fuente de Nginx.

$ sudo mkdir -p/usr/local/src/nginx 

A continuación, asigne los permisos de directorio como se muestra. Asegúrese de reemplazar el nombre de usuario con su nombre de usuario de sudo real.

$ sudo Chown Nombre de usuario: nombre de usuario -r/usr/local/src/ 

A partir de entonces, navegue hacia el Nginx Directorio de origen:

$ cd/usr/local/src/nginx 

Proceder y descargar el Nginx Paquetes de archivo de origen:

$ sudo apto fuente nginx 
Descargar Nginx Source

Lo más probable es que ingrese al siguiente error:

W: la descarga se realiza sin ser -cuadro como root como archivo 'nginx_1.19.5.oriente.alquitrán.GZ 'no se pudo acceder por el usuario' _apt '. - pkgacquire :: run (13: permiso denegado) 

Esto no es nada para que te pongas a trabajar. Entonces, simplemente ignore el error.

Puede echar un vistazo al archivo fuente utilizando el comando ls.

$ ls -l 
Lista de archivos de origen Nginx

Asegúrese de que la versión del código fuente coincida con la versión de Nginx instalado.

$ nginx -v 
Verifique la versión Nginx

Paso 4: Instale la biblioteca libModSecurity3

Libmodesecuridad es un Modificación Biblioteca que maneja Http Filtrado para sus aplicaciones. Hay dos formas de instalarlo. Puede usar el Administrador de paquetes APT como se muestra

$ sudo apt install libModSecurity3 

El otro enfoque es instalarlo desde una fuente que es preferible, ya que le proporciona la última versión. Para comenzar la instalación de libModSecurity desde la fuente, clone el repositorio de git como se muestra:

$ git clon - -depth 1 -b v3/maestro - -single -branch https: // github.com/spiderlabs/modsecurity/usr/local/src/modsecurity/ 

Navegue hacia el directorio clonado:

$ CD/usr/local/src/modsecurity/ 

Hacer un punto para instalar los submódulos

$ sudo git submodule init $ sudo git submodule actualización 
Instalar libModSecurity3 en Ubuntu

Posteriormente, cree el entorno utilizando los comandos a continuación.

$ sudo ./construir.sh $ sudo ./Configurar 

Una vez más, ignore el error que se muestra a continuación.

fatal: no se encontraron nombres, no se pueden describir nada. 

Luego compile el código fuente e instale otras utilidades utilizando el siguiente comando de fabricación. Esto toma alrededor de 25 minutos y se requiere algo de paciencia.

$ sudo make -j4 

Una vez completado, instale las bibliotecas.

$ sudo make install 

Paso 5: Descargar y compilar modsecurity v3 nginx conector

El siguiente paso es descargar y compilar el Modsecuridad nginx conector. El conector, como su nombre indica, vincula el Libmodsecurity Biblioteca al servidor web de Nginx. Para descargar el conector de seguridad moderna, clínelo desde el repositorio de GitHub de la siguiente manera.

$ git clon - -depth 1 https: // github.com/spiderLabs/modsecurity-nginx.git/usr/local/src/modsecurity-nginx/ 

Navegar hacia el directorio clonado.

$ cd/usr/local/src/nginx/nginx-1.21.3/ 

Proceder e instalar dependencias de compilación

$ sudo apt build-dep nginx $ sudo apt install uuid-devel 

A continuación, compile el Conector nginx modsecuridad módulo con el --con compatibilidad bandera. El --con compatibilidad La opción hace que el módulo de conector Nginx de modificación modifica binario compatible con la biblioteca Nginx actual.

$ sudo ./Configurar-with-compat --add-dynamic-module =/usr/local/src/modsecurity-nginx 

Una vez hecho esto, cree el módulo del conector Nginx ModSecurity usando el comando Make.

$ sudo hacer módulos 

El módulo se guarda como objs/ngx_http_modsecurity_module.entonces. Necesita copiar este módulo al /usr/share/nginx/módulos/ Directorio de la siguiente manera.

$ sudo cp objs/ngx_http_modsecurity_module.SO/usr/share/nginx/módulos/ 

Paso 6: Cargue el módulo de conector Nginx ModSecurity

Para cargar el Nginx Módulo del conector, primero, acceda al archivo de configuración NGINX principal.

$ sudo vim/etc/nginx/nginx.confusión 

Agregue la siguiente línea justo debajo de las primeras líneas

módulos load_module/ngx_http_modsecurity_module.entonces; 

Además, agregue las siguientes líneas en el http ... sección. Esto habilita la seguridad modificada para todos los hosts virtuales de Nginx.

Modsecuridad en; modsecurity_rules_file/etc/nginx/modsec/main.conf; 
Habilitar mod_security para Nginx Vhosts

Guarde los cambios y salga del archivo.

A continuación, crea el /etc/nginx/modsec/ directorio que almacenará Modificación configuración.

$ sudo mkdir/etc/nginx/modsec/ 

A continuación, copie el archivo de configuración de modas de modificación de la siguiente manera.

$ sudo cp/usr/local/src/modsecurity/modsecurity.confirmado/etc/nginx/modsec/modsecurity.confusión 

Luego abra el archivo de configuración.

$ sudo vim/etc/nginx/modsec/modsecurity.confusión 

Localice la línea que comienza con el Secreto directiva.

Detección de secrulengina 

Esta línea instruye Modificación solo registrar transacciones HTTP pero no requiere ninguna medida frente a un ataque de aplicación web. Debe cambiar esto para que la moderación no solo detecte sino que también bloquee los ataques web.

Cambie la línea a la línea de abajo

Secreto 
Habilitar reglas MOD_SECURITY

Guarde los cambios y salga del archivo.

A continuación, cree el /etc/nginx/modsec/main.confusión archivo.

$ sudo vim/etc/nginx/modsec/main.confusión 

Agregue esta línea para hacer referencia al /etc/nginx/modsec/modsecurity.confusión archivo de configuración.

Incluir/etc/nginx/modsec/modsecurity.confusión 

Guarde los cambios y salga del archivo.

Además, copie el archivo de asignación de unicode.

$ sudo cp/usr/local/src/modsecurity/unicode.mapeo/etc/nginx/modsec/ 

Luego pruebe la configuración de Nginx.

$ sudo nginx -t 
Probar la configuración de Nginx

La prueba debe tener éxito. Si no, regresa y verifique si todos los cambios realizados son correctos.

Luego, finalmente, reinicie Nginx para aplicar todos los cambios realizados.

$ sudo systemctl reiniciar nginx 

Y verifique que Nginx se esté ejecutando como se esperaba.

$ sudo systemctl status nginx 

Paso 7: Descargar OWASP CORERULE SET

Para Modificación Para proteger sus aplicaciones web, debe especificar reglas que van a detectar actividades sospechosas y bloquearlas. Para comenzar, es preferible instalar conjuntos de reglas existentes que lo ayuden a aprender las cuerdas.

El Conjunto de reglas de núcleo de OWASP (CRS) es un conjunto de reglas gratuito, de código abierto y mantenido por la comunidad que proporciona reglas para evitar vectores de ataque comunes como inyección SQL, secuencias de comandos de sitios cruzados (XSS).

Descargue el conjunto de reglas de núcleo de OWASP desde GitHub como se muestra usando el comando wget.

$ wget https: // github.com/Coreruleset/Coreruleset/Archive/V3.3.0.alquitrán.GZ 

Extraer el archivo comprimido.

$ tar xvf v3.3.0.alquitrán.GZ 

Asegúrese de mover el directorio sin comprimir al /etc/nginx/modsec/ camino.

$ sudo MV Coreruleset-3.3.0//etc/nginx/modsec/ 

Luego cambie el nombre del setup de CRS.confusión.ejemplo archivo setup de CRS.confusión.

$ sudo MV/etc/nginx/modsec/coruleset-3.3.0/crs-setup.confusión.Ejemplo/etc/nginx/modsec/Coreruleset-3.3.0/crs-setup.confusión 

De nuevo, regresa al Modificación archivo de configuración.

$ sudo vim/etc/nginx/modsec/main.confusión 

Y agregar las siguientes líneas.

Incluir/etc/nginx/modsec/coruleset-3.3.0/crs-setup.Conf incluye/etc/nginx/modsec/coruleset-3.3.0/reglas/*.confusión 

El archivo ahora debe tener 3 líneas:

Configurar reglas de seguridad moderna

Guarde el archivo y, una vez más, reinicie Nginx.

$ sudo systemctl reiniciar nginx 

Paso 8: Probar la seguridad moderna

Finalmente, vamos a realizar una prueba Modificación y confirme que puede detectar y bloquear el tráfico HTTP sospechoso.

Vamos a editar el archivo de configuración de modas de modificación y crear una regla de bloqueo que bloquee el acceso a una determinada URL cuando esté accediendo por un navegador web.

$ sudo vim/etc/nginx/modsec/modsecurity.confusión 

Agregue esta línea justo debajo del Secreto directiva

Secrule Args: testParam "@Contains Test" "Id: 254, Deney, Status: 403, Msg: 'Test exitoso'" 

Puedes configurar el 'identificación' y 'msg' Etiquetas a sus valores preferidos.

Reglas de prueba de modificación

Guardar los cambios y reiniciar Nginx.

$ sudo systemctl reiniciar nginx 

Ahora inicie su navegador y visite la URL a continuación con el ?testParam = prueba sufijo

http: // server-ip/?testParam = prueba 

Deberías conseguir un 403 'Prohibido' error. Esto indica que está tratando de acceder a un recurso prohibido en el servidor web.

Nginx 403 Error prohibido

Además, puede verificar los registros de errores de NGINX para confirmar que el cliente estaba bloqueado

$ cat/var/log/nginx/error.registro | Grep "Prueba exitosa" 
Verifique el bloque de modas de modificación NGINX

[También le puede gustar: Cómo configurar ModSecurity con Apache en Debian/Ubuntu]

Esa fue una descripción general de cómo puede configurar Modificación con Nginx en Debian y Ubuntu. Esperamos que esto haya sido beneficioso.