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.
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
- Enlace recomendado: https://docs.addesp.com/ngx_waf/
- Enlace alternativo 1: https://add-sp.github.io/ngx_waf-docs/
- Enlace alternativo 2: https://ngx-waf-docs.pages.dev/
Contacto
- Canal de Telegram: https://t.me/ngx_waf
- Grupo de Telegram (Inglés): https://t.me/group_ngx_waf
- Grupo de Telegram (Chino): https://t.me/group_ngx_waf_cn
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.