Aller au contenu

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.


test docs docker Codacy Badge Codacy Badge

Notification Discussion EN Discussion CN

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

Contact

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.