waf: Un module de pare-feu d'application web pour NGINX
Installation
Vous pouvez installer ce module dans toute distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et 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
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_waf_module.so;
Ce document décrit nginx-module-waf v10.1.2 publié le 09 juillet 2022.
English | 简体中文
Module de pare-feu Nginx pratique et haute performance.
Pourquoi ngx_waf
- Protection de base : telles que les listes noires et blanches d'IP ou de plages d'IP, les listes noires et blanches d'URI, et les listes noires de corps de requête, etc.
- Facile à utiliser : les fichiers de configuration et les fichiers de règles sont faciles à écrire et lisibles.
- Haute performance : algorithmes efficaces et mise en cache.
- Protection avancée : compatible avec ModSecurity, vous pouvez utiliser le OWASP(Open Web Application Security Project®) ModSecurity Core Rule Set.
- Vérification amicale des robots : prend en charge la vérification des robots Google, Bing, Baidu et Yandex et les autorise automatiquement pour éviter les faux positifs.
- Captcha : prend en charge trois types de captchas : hCaptcha, reCAPTCHAv2 et reCAPTCHAv3.
Fonctionnalités
- Compatible avec ModSecurity.
- Support IPV4 et IPV6.
- Prise en charge de l'activation des CAPTCHAs, y compris hCaptcha, reCAPTCHAv2 et reCAPTCHAv3.
- Prise en charge des robots amicaux pour l'authentification (basé sur l'agent utilisateur et l'identification IP) pour éviter le blocage de ces robots (par exemple, GoogleBot).
- Protection CC, si le taux de requêtes dépasse la limite, l'IP sera automatiquement bannie pendant un certain temps, ou utilisez CAPTCHA pour faire une identification humaine et l'autoriser si réussi.
- Autorisation exceptionnelle sur une adresse IP spécifique.
- Bloquer l'adresse IP spécifiée.
- Bloquer le corps de requête spécifié.
- Autorisation exceptionnelle sur une URL spécifique.
- Bloquer l'URL spécifiée.
- Bloquer la chaîne de requête spécifiée.
- Bloquer le UserAgent spécifié.
- Bloquer le Cookie spécifié.
- Autorisation exceptionnelle sur un Referer spécifique.
- Bloquer le Referer spécifié.
Docs
- Lien recommandé : https://docs.addesp.com/ngx_waf/
- Lien alternatif 1 : https://add-sp.github.io/ngx_waf-docs/
- Lien alternatif 2 : https://ngx-waf-docs.pages.dev/
Contact
- Canal Telegram : https://t.me/ngx_waf
- Groupe Telegram (Anglais) : https://t.me/group_ngx_waf
- Groupe Telegram (Chinois) : https://t.me/group_ngx_waf_cn
Sponsor
Nous espérons que vous pourrez aider à promouvoir ce projet. Plus il y a d'étoiles, mieux c'est pour ce projet. :)
Suite de tests
Ce module est livré avec une suite de tests pilotée par Perl. Les cas de test sont également déclaratifs. Grâce au module Test::Nginx dans le monde Perl.
Pour l'exécuter de votre côté :
## Cela prendra beaucoup de temps, mais il ne doit être exécuté qu'une seule fois.
cpan Test::Nginx
# Vous devez spécifier un répertoire temporaire.
# Si le répertoire n'existe pas, il sera créé automatiquement.
# Si le répertoire existe déjà, il sera **supprimé** d'abord puis créé.
export MODULE_TEST_PATH=/path/to/temp/dir
# Vous devez spécifier le chemin absolu vers le module dynamique si vous l'avez installé,
# sinon vous n'avez pas besoin d'exécuter cette ligne.
export MODULE_PATH=/path/to/ngx_http_waf_module.so
cd ./test/test-nginx
sh ./init.sh
sh ./start.sh ./t/*.t
Certaines parties de la suite de tests nécessitent également que les modules standard proxy, rewrite et SSI soient activés lors de la construction de Nginx.
Remerciements
- ModSecurity : Un moteur de pare-feu d'application web (WAF) open source et multiplateforme.
- uthash : Macros C pour tables de hachage et plus.
- libcurl : La bibliothèque de transfert de fichiers multiprotocole.
- cJSON : Analyseur JSON ultraléger en ANSI C.
- libinjection : Analyseur de tokenizer SQL / SQLI.
- libsodium : Une bibliothèque crypto moderne, portable et facile à utiliser.
- test-nginx : Échafaudage de test basé sur les données pour le développement de modules C Nginx et de la bibliothèque Lua OpenResty.
- lastversion : Un outil en ligne de commande qui vous aide à télécharger ou installer une version spécifique d'un projet.
- ngx_lua_waf : Un pare-feu d'application web basé sur le module lua-nginx (openresty).
- nginx-book : Le guide de développement en langue chinoise pour nginx.
- nginx-development-guide : Le guide de développement en langue chinoise pour nginx.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-waf.