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.
Un WAF est un filtre applicatif qui analyse en profondeur le trafic web. Il peut ĂȘtre :
Il fonctionne selon deux modes principaux :
| 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 |
sudo apt update && sudo apt install libapache2-mod-security2 -y
Le fichier de configuration principal est /etc/modsecurity/modsecurity.conf.
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.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
crs-setup.conf : fichier de paramĂ©trage du CRS (score dâanomalie, paranoĂŻa, etc.).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.
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.
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).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.
Ă 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.
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.