Private
Public Access
2
0
2026-01-19 15:06:34 +03:00
WIP
2026-01-19 15:06:34 +03:00
WIP
2026-01-19 15:06:34 +03:00
2026-01-07 14:27:55 +03:00
WIP
2026-01-19 15:06:34 +03:00

BYOW - Build Your Own WAF

Ce rôle Ansible déploie un WAF basé sur Caddy, Coraza et les OWASP Core Security Rules.

Principes

Go

Caddy, Coraza, le module Coraza pour Caddy et l'outil xcaddy sont développés avec le langage Go.

L'outil xcaddy a besoin d'une version récente des outils de développement Go. C'est pourquoi le rôle installe Go depuis le site de téléchargement officiel et non via le gestionnaire de paquets de la distribution Linux.

Go est installé dans le répertoire /usr/local/go-1.25.5/go et un lien symbolique est créé de /usr/local/bin/go vers /usr/local/go-1.25.5/go/bin/go.

Caddy

Caddy est un serveur Web et reverse proxy HTTP puissant et versatile.

Étant développé en Go, son déploiement prend la forme d'un simble binaire exécutable qui contient toutes les librairies requises. Ce programme est construit avec l'outil xcaddy puis copié dans le fichier /usr/local/bin/caddy. La ligne de commande utilisée pour construire ce binaire est enregsitrée dans le fichier /usr/local/bin/.caddy.buil.

Le fichier de configuration de caddy utilise le format Caddyfile. Il est généré automatiquement à partir des paramètres du rôle puis enregistré sous /etc/caddy/Caddyfile.

Coraza

Coraza est directement inclus dans le binaire caddy

Module Coraza pour Caddy

xcaddy

qui permet de lier tous les modules Go requis pour le WAF

Plugins OWASP CRS

(À ne pas confondre avec les plugins Coraza.)

Voir: https://github.com/coreruleset/plugin-registry

  • name: "drupal-rule-exclusions"
  • name: "wordpress-rule-exclusions"
  • name: "nextcloud-rule-exclusions"
  • name: "dokuwiki-rule-exclusions"
  • name: "phpmyadmin-rule-exclusions"
  • name: "roundcube-rule-exclusions"
  • name: "sogo-rule-exclusions"

Paramètres du rôle Ansible

TODO

Fonctionnalités déjà implémentées:

  • Multisite (cavec configuration des CRS par site)
  • Redirection vers nom canonique
  • Rediction HTTP vers HTTPS
  • Certificats SSL (autmotiques via Let's Encrypt et customs)
  • OWASP CRS
  • Redirect (SSL et www et autres)
  • Filtrage par:
    • adresses IP
    • réseaux IP
  • Antibot par:
    • défi JavaScript
  • Passive backend checks
  • Compression Gzip et zstd

Fomctionnalités à ajouter:

  • Active backend checks
  • Antibot par:
    • Cookie
    • Captcha
    • reCAPTCHA
    • hCaptcha
    • Turnstile
    • mCaptcha
  • Changement de format de configuration: Caddyfile -> JSON
  • Mise en œuvre d'un cluster Redis (ou Consul) pour le partage de informations entre les WAF d'un cluster
  • Mieux tester le configuration des CRS
  • Mode détection sans blocage
  • Filtrage par:
    • rDNS
    • DNSBL
    • ASN
    • User-Agent (robots, crawlers, IA bots)
    • méthode HTTP
    • taille
    • URI patterns
    • pays
    • (ip:danmeuk-tor-exit, ua:mitchellkrogza-bad-user-agents, /etc/hapee-1.9/blacklist.acl)
  • Gestion CORS
  • Client cache
  • Proxy cache
  • Filtrage par pays
  • Compression Brotli
  • En-têtes de sécurité:
    • HSTS
    • CSP
    • X-Frame-Options
    • X-Content-Type-Options
    • Referrer Policy
    • Permissions Policy
    • Keep Headers
    • Cookie Flags
    • Custom headers
  • Reverse scan
  • Robots.txt (DarkVisitors API/Community Lists/Custom URLs/Manual Rules)
  • Sessions
  • Whitelist
  • Bad behavior
  • Auth
  • Anti DoDS
  • Greylist
  • HTML injection
  • Metrics (Elasticsearch + Metabase)
  • Static files et FastCGI pour PHP

Ressources

Modules

Description
Build Your Own WAF
Readme 428 KiB
v0.3.5 Latest
2026-04-08 11:58:42 +02:00
Languages
Python 56.8%
HTML 21.9%
HCL 15.5%
Shell 5.8%