Pular para conteúdo

waf: Um módulo de firewall para aplicações web para NGINX

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_waf_module.so;

Este documento descreve o nginx-module-waf v10.1.2 lançado em 09 de julho de 2022.


test docs docker Codacy Badge Codacy Badge

Notification Discussion EN Discussion CN

English | 简体中文

Módulo de firewall Nginx prático e de alto desempenho.

Por que ngx_waf

  • Proteção básica: como listas negras e brancas de IPs ou faixas de IP, listas negras e brancas de URI, e listas negras de corpo de requisição, etc.
  • Fácil de usar: arquivos de configuração e arquivos de regras são fáceis de escrever e legíveis.
  • Alto desempenho: algoritmos eficientes e caching.
  • Proteção avançada: compatível com ModSecurity, você pode usar o OWASP (Open Web Application Security Project®) ModSecurity Core Rule Set.
  • Verificação amigável de crawlers: suporta a verificação de crawlers do Google, Bing, Baidu e Yandex e permite que eles acessem automaticamente para evitar falsos positivos.
  • Captcha: suporta três tipos de captchas: hCaptcha, reCAPTCHAv2 e reCAPTCHAv3.

Recursos

  • Compatível com ModSecurity.
  • Suporte a IPV4 e IPV6.
  • Suporte para habilitar CAPTCHAs, incluindo hCaptcha, reCAPTCHAv2 e reCAPTCHAv3.
  • Suporte a crawlers amigáveis à autenticação (baseado em identificação de user agent e IP) para evitar o bloqueio desses crawlers (por exemplo, GoogleBot).
  • Proteção contra CC, se a taxa de requisições exceder o limite, o IP será automaticamente banido por um período de tempo, ou usará CAPTCHA para identificação humana e permitirá se for bem-sucedido.
  • Permissão excepcional em um endereço IP específico.
  • Bloquear o endereço IP especificado.
  • Bloquear o corpo de requisição especificado.
  • Permissão excepcional em uma URL específica.
  • Bloquear a URL especificada.
  • Bloquear a string de consulta especificada.
  • Bloquear o UserAgent especificado.
  • Bloquear o Cookie especificado.
  • Permissão excepcional em um Referer específico.
  • Bloquear o Referer especificado.

Documentação

Contato

Patrocínio

Esperamos que você possa ajudar a promover este projeto. Quanto mais estrelas, melhor será este projeto. :)

Conjunto de Testes

Este módulo vem com um conjunto de testes dirigido por Perl. Os casos de teste também são declarativos. Graças ao módulo Test::Nginx no mundo Perl.

Para executá-lo do seu lado:

## Isso levará muito tempo, mas precisa ser executado apenas uma vez.
cpan Test::Nginx

# Você precisa especificar um diretório temporário.
# Se o diretório não existir, ele será criado automaticamente.
# Se o diretório já existir, ele será **removido** primeiro e depois criado.
export MODULE_TEST_PATH=/path/to/temp/dir

# Você precisa especificar o caminho absoluto para o módulo dinâmico se o tiver instalado, 
# caso contrário, não precisa executar esta linha.
export MODULE_PATH=/path/to/ngx_http_waf_module.so

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

Algumas partes do conjunto de testes requerem que os módulos padrão proxy, rewrite e SSI também estejam habilitados ao construir o Nginx.

Agradecimentos

  • ModSecurity: Um motor de firewall para aplicações web (WAF) de código aberto e multiplataforma.
  • uthash: Macros C para tabelas hash e mais.
  • libcurl: A biblioteca de transferência de arquivos multiprotocolo.
  • cJSON: Um parser JSON ultraleve em ANSI C.
  • libinjection: Analisador de tokenização SQL / SQLI.
  • libsodium: Uma biblioteca de criptografia moderna, portátil e fácil de usar.
  • test-nginx: Estrutura de teste orientada a dados para desenvolvimento de módulos C do Nginx e biblioteca Lua do OpenResty.
  • lastversion: Uma ferramenta de linha de comando que ajuda você a baixar ou instalar uma versão específica de um projeto.
  • ngx_lua_waf: Um firewall para aplicações web baseado no módulo lua-nginx (openresty).
  • nginx-book: O guia de desenvolvimento em língua chinesa para nginx.
  • nginx-development-guide: O guia de desenvolvimento em língua chinesa para nginx.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-waf.