Sommaire
🔒 Module CYB17 – WAF
Objectifs : comprendre le rôle d’un WAF, ses modes de protection, les signatures, les faux positifs et savoir le déployer.
📖 Introduction
Un Web Application Firewall (WAF) est un dispositif de sécurité qui surveille, filtre et bloque les requêtes HTTP/HTTPS entre un client et une application web. Il protège contre les vulnérabilités courantes comme les injections SQL, les XSS, le CSRF et bien d’autres. Il agit comme une couche de sécurité supplémentaire, au‑delà des pare‑feu réseau traditionnels.
À l'issue de ce module, vous serez capable de :
- Expliquer le rôle et les modes de déploiement d’un WAF.
- Identifier les principales attaques bloquées par un WAF.
- Configurer un WAF open‑source (ModSecurity) avec Apache/Nginx.
- Analyser les logs et gérer les faux positifs.
🔍 Qu'est-ce qu'un WAF ?
Un WAF est un filtre applicatif qui analyse en profondeur le trafic web. Il peut être :
- Logiciel : installé sur le serveur (ex : ModSecurity).
- Matériel : appliance dédiée.
- Cloud : service SaaS (ex : Cloudflare, AWS WAF).
- Intégré au CDN : souvent associé à un réseau de distribution de contenu.
Il fonctionne selon deux modes principaux :
- Mode passif (détection) : il analyse le trafic et alerte sans bloquer.
- Mode actif (prévention) : il bloque les requêtes malveillantes en temps réel.
📐 Attaques protégées par un WAF
| Attaque | Description | Exemple |
|---|---|---|
| Injection SQL | Insertion de requêtes SQL malveillantes via des champs de formulaire. | ' OR '1'='1 |
| XSS | Injection de code JavaScript malveillant dans les pages web. | <script>alert('XSS')</script> |
| CSRF | Forcer un utilisateur à exécuter des actions non souhaitées sur une application où il est authentifié. | Requête POST piégée |
| Path Traversal | Accéder à des fichiers sensibles via des chemins relatifs. | ../../etc/passwd |
| Attaque par force brute | Tentatives multiples de connexion avec des identifiants. | Script de dictionnaire |
🛠️ Mise en pratique avec ModSecurity
Installation sur Debian/Ubuntu
sudo apt update && sudo apt install libapache2-mod-security2 -y
Le fichier de configuration principal est /etc/modsecurity/modsecurity.conf.
Configuration de base
Activation du moteur de règles
# /etc/modsecurity/modsecurity.conf SecRuleEngine On SecAuditEngine RelevantOnly SecAuditLog /var/log/apache2/modsec_audit.log
SecRuleEngine On: active les règles de détection/ blocage.SecAuditEngine RelevantOnly: ne journalise que les transactions qui déclenchent des règles.SecAuditLog: définit l’emplacement du journal d’audit.
Activer les règles OWASP Core Rule Set (CRS)
sudo apt install modsecurity-crs -y sudo cp /usr/share/modsecurity-crs/crs-setup.conf.example /etc/modsecurity/crs-setup.conf
Puis, dans la configuration Apache, inclure les règles :
# /etc/apache2/mods-enabled/security2.conf Include /usr/share/modsecurity-crs/*.conf
- OWASP CRS : ensemble de règles open‑source pour ModSecurity.
crs-setup.conf: fichier de paramétrage du CRS (score d’anomalie, paranoïa, etc.).
Analyse des logs
sudo tail -f /var/log/apache2/modsec_audit.log
Les logs contiennent les requêtes bloquées, avec les règles déclenchées et les détails de la transaction.
🧪 Mise en pratique
Simulation d’une injection SQL bloquée par ModSecurity
Requête HTTP malveillante :
GET /login.php?user=admin' OR '1'='1 HTTP/1.1 Host: mon-site.com
ModSecurity détectera la tentative d’injection SQL et renverra un statut 403 Forbidden.
Gestion des faux positifs
Désactiver une règle pour un chemin spécifique
# Dans la configuration Apache
<Location /api/public/>
SecRuleRemoveById 942100
</Location>
SecRuleRemoveById: désactive la règle portant l’ID 942100 (injection SQL).- Utile lorsque l’application génère légitimement des caractères déclenchant des alertes.
📝 Exercices d'application
Exercice 1 – Modes WAF
Quelle est la différence entre le mode passif et le mode actif d’un WAF ?
En mode passif, le WAF détecte les attaques et journalise les alertes sans bloquer. En mode actif, il bloque les requêtes malveillantes en temps réel.
Exercice 2 – Règles OWASP
À quoi sert l’ensemble de règles OWASP Core Rule Set (CRS) ?
Le CRS est un ensemble de règles open‑source pour ModSecurity, basé sur l’OWASP Top 10, qui protège contre les vulnérabilités web les plus critiques.
🎯 Quiz d'auto‑évaluation
1. Un WAF protège uniquement contre les attaques réseau.
2. ModSecurity est un WAF open‑source populaire.
3. Les faux positifs surviennent lorsque le WAF bloque une requête légitime.
4. Le mode passif bloque automatiquement les requêtes malveillantes.
5. La directive SecRuleRemoveById permet de désactiver une règle spécifique.