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.
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
- Link recomendado: https://docs.addesp.com/ngx_waf/
- Link alternativo 1: https://add-sp.github.io/ngx_waf-docs/
- Link alternativo 2: https://ngx-waf-docs.pages.dev/
Contato
- Canal do Telegram: https://t.me/ngx_waf
- Grupo do Telegram (Inglês): https://t.me/group_ngx_waf
- Grupo do Telegram (Chinês): https://t.me/group_ngx_waf_cn
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.