Guía paso a paso para instalar y configurar NAXSI Nginx WAF en Ubuntu 18.04 LTS

watch 6m, 50s
views 2

13:46, 30.07.2026

Contenido del artículo
arrow

  • Requisitos del sistema
  • Configuración inicial
  • Compilación de Nginx con integración de Naxsi
  • Configuración de las reglas de Naxsi
  • Configuración de Nginx para que funcione con Naxsi
  • Configuración de un archivo de servicio de Systemd para Nginx
  • Prueba del cortafuegos Naxsi
  • Reflexiones finales

Los cortafuegos de aplicaciones web (WAF) son herramientas esenciales para proteger los sitios web y las aplicaciones web frente a una amplia gama de amenazas. NAXSI (Nginx Anti XSS & SQL Injection) es un módulo WAF de código abierto que se puede integrar en Nginx para añadir una capa adicional de seguridad.

En esta guía, explicaremos cómo instalar el cortafuegos Naxsi en un servidor Ubuntu 18.04, configurarlo y comprobar su eficacia.

Requisitos del sistema

Antes de continuar, asegúrate de que tu sistema cumple los siguientes requisitos:

  • Sistema operativo: Ubuntu 18.04 LTS.
  • Privilegios de usuario: Root o usuario con sudo privilegios.
  • Conexión a Internet: Necesaria para descargar paquetes y archivos fuente.

Configuración inicial

Según nuestra experiencia, recomendamos actualizar el sistema antes de instalar NAXSI Nginx WAF en un servidor con Ubuntu 18.04. Puede actualizar los paquetes de su sistema utilizando el siguiente comando:

apt-get update -y apt-get upgrade -y

Reinicie el servidor para aplicar los cambios.

También necesitarás ciertas dependencias para compilar Nginx desde el código fuente. Instala las dependencias necesarias con el comando:

apt-get install build-essential daemon libxml2-dev libxslt1-dev libgd-dev libgeoip-dev make libpcre3-dev libssl-dev unzip -y

Ahora, el paquete Naxsi estará disponible en el repositorio predeterminado de Ubuntu 18.04.

Compilación de Nginx con integración de Naxsi

A continuación, debes compilar Nginx con soporte para Naxsi.

Descarga el código fuente de Nginx con el comando:

wget http://nginx.org/download/nginx-1.16.1.tar.gz

Descomprime el archivo descargado:

tar -xvzf nginx-1.16.1.tar.gz

A continuación, descarga el código fuente de Naxsi con el siguiente comando:

wget https://github.com/nbs-system/naxsi/archive/master.zip

Descomprime el archivo descargado con el siguiente comando:

unzip master.zip

A continuación, cambia al directorio del código fuente de Nginx:

cd nginx-1.16.1/

Debes configurar Nginx para que admita Naxsi con este comando:

./configure --conf-path=/etc/nginx/nginx.conf --add-module=../naxsi-master/naxsi_src/ --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --user=www-data --group=www-data --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module --prefix=/usr

Compila Nginx con:

make

Instala Nginx:

make install

El último paso consiste en crear los directorios para las bibliotecas de datos dinámicos de Nginx. Créalos con este comando:

mkdir /var/lib/nginx/body mkdir /var/lib/nginx/fastcgi

Ahora, Nginx está configurado con soporte para Naxsi.

Configuración de las reglas de Naxsi

En este paso, debes copiar las reglas principales de Naxsi al directorio de configuración de Nginx. Cópialas desde el código fuente de Naxsi:

cp /root/naxsi-master/naxsi_config/naxsi_core.rules /etc/nginx/

Crea un archivo naxsi.rules dentro del directorio /etc/nginx/:

nano /etc/nginx/naxsi.rules

Especifica las acciones que debe realizar el servidor cuando una solicitud de URL no cumpla con las reglas principales:

SecRulesEnabled; 
DeniedUrl "/RequestDenied";
## Comprobar las reglas de Naxsi
CheckRule "$SQL >= 8" BLOCK; 
CheckRule "$RFI >= 8" BLOCK; 
CheckRule "$TRAVERSAL >= 4" BLOCK; 
CheckRule "$EVADE >= 4" BLOCK; 
CheckRule "$XSS >= 8" BLOCK;

Esto comprobará las URL y las bloqueará si es necesario.

Guarda y cierra el archivo.

Configuración de Nginx para que funcione con Naxsi

Para que Nginx funcione con Naxsi, debes configurar el archivo de configuración predeterminado de Nginx para que admita Naxsi. Para ello, edita los archivos de configuración de Nginx y Naxsi.

Abre el archivo de configuración predeterminado de Nginx:

nano /etc/nginx/nginx.conf
Inserta las siguientes líneas:
user www-data; 
worker_processes 1; 
events {    
worker_connections 1024; 
}
http {    
include      mime.types;    
include /etc/nginx/naxsi_core.rules;    
include /etc/nginx/conf.d/.conf;    
include /etc/nginx/sites-enabled/;
default_type application/octet-stream;    
access_log /var/log/nginx/access.log;    
error_log /var/log/nginx/error.log;    
sendfile       on;    
keepalive_timeout 65;    
server {       
listen      80;        
server_name localhost;        
location / {            
root  html;           
 include /etc/nginx/naxsi.rules;
index index.html index.htm;      
}        
error_page  500 502 503 504 /50x.html;        
location = /50x.html {            
root  html;        
}   

}

Guarda y cierra el archivo.

Comprueba si hay algún error de sintaxis de Nginx con el siguiente comando:

nginx -t

Si no hay errores, deberías obtener el siguiente resultado:

nginx: la sintaxis del archivo de configuración /etc/nginx/nginx.conf es correcta nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf se ha realizado con éxito

Configuración de un archivo de servicio de Systemd para Nginx

Para gestionar el servicio de Nginx, es necesario crear un archivo de servicio de Nginx para Systemd.

nano /lib/systemd/system/nginx.service

Añade estas líneas:

[Unit] 
Description=Un servidor web de alto rendimiento y un servidor proxy inverso Documentation=man:nginx(8) 
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service] 
Type=forking 
PIDFile=/run/nginx.pid 
ExecStartPre=/usr/sbin/nginx -t 
ExecStart=/usr/sbin/nginx 
ExecReload=/usr/sbin/nginx -s reload 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true
[Install] 
WantedBy=multi-user.target

Guarda y cierra el archivo.

Recarga el demonio de systemd:

systemctl daemon-reload

A continuación, inicia el servicio Nginx y habilítalo para que se inicie tras el reinicio del sistema:

systemctl start nginx systemctl enable nginx

Puedes comprobar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

También puede comprobar los módulos cargados en Nginx con este comando:

nginx -V

Prueba del cortafuegos Naxsi

Ya hemos configurado el cortafuegos Naxsi. Ahora, debemos probar el servidor Nginx ante posibles ataques y comprobar cómo los gestiona Naxsi.

Accede al sistema remoto, abre un navegador e introduce la siguiente URL:  http://your-server-ip/?a=<. Naxsi debería bloquearte el acceso para que no puedas continuar.

A continuación, comprueba el registro de errores de Nginx:

tail -f /var/log/nginx/error.log

Deberías poder ver en el registro que Naxsi ha bloqueado tu solicitud:

26/01/2020 15:59:08 [error] 14907#0: 13 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=11&total_blocked=7&config=block&cscore0=$XSS&score0=8&zone0=ARGS&id0=1302&var_name0=a, cliente: 103.250.161.100, servidor: localhost, solicitud: «GET /?a=%3C HTTP/1.1», host: «208.117.84.142»

También puedes comprobar si Naxsi detecta ataques XSS. Accede al sistema remoto, abre un navegador e introduce el enlace: http://your-server-ip/?q="><script>alert(1)</script>. Naxsi debería impedirte continuar.

Comprueba el registro de errores de Nginx con el siguiente comando:

tail -f /var/log/nginx/error.log

Deberías poder ver en el registro que Naxsi ha bloqueado tu solicitud:

26/01/2020 15:53:26 [error] 14907#0: 7 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=7&total_blocked=4&config=block&cscore0=$SQL&score0=8&cscore1=$XSS&score1=8&zone0=ARGS&id0=1001&var_name0=q, cliente: 103.250.161.100, servidor: localhost, solicitud: "GET /?q=%22%3E%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1", host: "208.117.84.142"

Reflexiones finales

La instalación y configuración del cortafuegos Naxsi en Ubuntu 18.04 puede mejorar considerablemente la seguridad de tus aplicaciones web. Si sigues esta guía, deberías disponer de un sólido WAF de Nginx que te proteja contra ataques comunes como XSS e inyección SQL. Recuerda adaptar las reglas de Naxsi a las necesidades específicas de tu aplicación y actualizar periódicamente tanto Nginx como Naxsi para garantizar una seguridad óptima.

Compartir

¿Te ha resultado útil este artículo?

Ofertas populares de VPS

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 4096 Linux

15.95 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 4096 Linux

17.16 /mes

/mes

Facturado cada 12 meses

-22.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 4096 HK Linux

33 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.35 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 2048 Linux

8.3 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 16384 Linux

231 /mes

/mes

Facturado cada 12 meses

-13.1%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 512 HK Linux

7 /mes

/mes

Facturado cada 12 meses

-5.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 2048 Windows

13.7 /mes

/mes

Facturado cada 12 meses

-21%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
8 TB
wKVM-SSD 8192 Metered Windows

65 /mes

/mes

Facturado cada 12 meses

-5.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 2048 Windows

11.89 /mes

/mes

Facturado cada 12 meses

Otros artículos sobre este tema

cookie

¿Acepta las cookies y la política de privacidad?

Utilizamos cookies para asegurar que damos la mejor experiencia en nuestro sitio web. Si continúa sin cambiar la configuración, asumiremos que acepta recibir todas las cookies del sitio web HostZealot.