Saltar a contenido

waf: Un módulo de firewall de aplicaciones web para NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-waf
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-waf

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_waf_module.so;

Este documento describe nginx-module-waf v10.1.2 lanzado el 09 de julio de 2022.


test docs docker Codacy Badge Codacy Badge

Notification Discussion EN Discussion CN

English | 简体中文

Módulo de firewall Nginx práctico y de alto rendimiento.

Por qué ngx_waf

  • Protección básica: como listas negras y blancas de IPs o rangos de IP, listas negras y blancas de URI, y listas negras de cuerpos de solicitud, etc.
  • Fácil de usar: los archivos de configuración y las reglas son fáciles de escribir y legibles.
  • Alto rendimiento: algoritmos eficientes y almacenamiento en caché.
  • Protección avanzada: compatible con ModSecurity, puedes usar el Conjunto de Reglas del Núcleo de ModSecurity de OWASP (Open Web Application Security Project®).
  • Verificación amigable para crawlers: soporta la verificación de crawlers de Google, Bing, Baidu y Yandex y les permite automáticamente evitar falsos positivos.
  • Captcha: soporta tres tipos de captchas: hCaptcha, reCAPTCHAv2 y reCAPTCHAv3.

Características

  • Compatible con ModSecurity.
  • Soporte para IPV4 e IPV6.
  • Soporte para habilitar CAPTCHAs, incluyendo hCaptcha, reCAPTCHAv2 y reCAPTCHAv3.
  • Soporte para crawlers amigables con la autenticación (basado en la identificación del agente de usuario y la IP) para evitar el bloqueo de estos crawlers (por ejemplo, GoogleBot).
  • Protección CC, si la tasa de solicitudes excede el límite, la IP será automáticamente prohibida por un período de tiempo, o se usará CAPTCHA para hacer identificación humana y permitirla si tiene éxito.
  • Permiso excepcional en una dirección IP específica.
  • Bloquear la dirección IP especificada.
  • Bloquear el cuerpo de solicitud especificado.
  • Permiso excepcional en una URL específica.
  • Bloquear la URL especificada.
  • Bloquear la cadena de consulta especificada.
  • Bloquear el UserAgent especificado.
  • Bloquear la Cookie especificada.
  • Permiso excepcional en un Referer específico.
  • Bloquear el Referer especificado.

Documentación

Contacto

Patrocinador

Esperamos que puedas ayudar a promover este proyecto. Cuantas más estrellas tenga, mejor será este proyecto. :)

Suite de Pruebas

Este módulo viene con una suite de pruebas impulsada por Perl. Los casos de prueba también son declarativos. Gracias al módulo Test::Nginx en el mundo de Perl.

Para ejecutarlo en tu lado:

## Tomará mucho tiempo, pero solo necesita ejecutarse una vez.
cpan Test::Nginx

# Necesitas especificar un directorio temporal.
# Si el directorio no existe, se creará automáticamente.
# Si el directorio ya existe, será **eliminado** primero y luego creado.
export MODULE_TEST_PATH=/path/to/temp/dir

# Necesitas especificar la ruta absoluta al módulo dinámico si lo tienes instalado, 
# de lo contrario, no necesitas ejecutar esta línea.
export MODULE_PATH=/path/to/ngx_http_waf_module.so

cd ./test/test-nginx
sh ./init.sh
sh ./start.sh ./t/*.t

Algunas partes de la suite de pruebas requieren que los módulos estándar proxy, rewrite y SSI estén habilitados también al construir Nginx.

Agradecimientos

  • ModSecurity: Un motor de firewall de aplicaciones web (WAF) de código abierto y multiplataforma.
  • uthash: Macros de C para tablas hash y más.
  • libcurl: La biblioteca de transferencia de archivos multiprotocolo.
  • cJSON: Analizador JSON ultraligero en ANSI C.
  • libinjection: Analizador de tokenización SQL / SQLI.
  • libsodium: Una biblioteca de criptografía moderna, portátil y fácil de usar.
  • test-nginx: Estructura de prueba basada en datos para el desarrollo de módulos C de Nginx y la biblioteca Lua de OpenResty.
  • lastversion: Una herramienta de línea de comandos que te ayuda a descargar o instalar una versión específica de un proyecto.
  • ngx_lua_waf: Un firewall de aplicaciones web basado en el módulo lua-nginx (openresty).
  • nginx-book: La guía de desarrollo en chino para nginx.
  • nginx-development-guide: La guía de desarrollo en chino para nginx.

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-waf.