Cómo instalar ModSecurity para Nginx en Debian/Ubuntu
- 1615
- 426
- Norma Sedillo
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 PPAGuardar 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 nginxDescargar 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 -lLista 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 -vVerifique 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ónInstalar 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
SecretoHabilitar 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 -tProbar 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 modernaGuarde 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ónGuardar 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 prohibidoAdemá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.
- « Cómo usar RSYNC para sincronizar archivos nuevos o cambiados/modificados en Linux
- NETHOGS - Monitorear el uso del tráfico de la red de Linux por proceso »