Sécurisation des applications Web avec Azure Web Application Firewall (WAF)
14/01/2025
Cet article technique et pédagogique vise à guider les analystes de sécurité, les administrateurs informatiques et les ingénieurs système dans la mise en œuvre et la configuration du pare-feu d'application Web Azure (WAF) pour protéger les applications Web contre les attaques courantes. Dans un paysage numérique où les applications Web constituent la porte d'entrée de nombreuses entreprises, elles sont devenues des cibles fréquentes de diverses cyberattaques, telles que l'injection SQL, le cross-site scripting (XSS) et d'autres vulnérabilités du Top 10 de l'OWASP. Azure WAF fournit une couche de protection essentielle pour atténuer ces risques, garantissant la disponibilité, l'intégrité et la confidentialité des données [1].
Présentation
Les applications Web sont des composants essentiels de l'infrastructure informatique de pratiquement toutes les organisations. Cependant, leur exposition à Internet les rend vulnérables aux attaques susceptibles de compromettre les données, d'interrompre les services et de nuire à la réputation de l'entreprise. Un pare-feu d'application Web (WAF) agit comme un proxy inverse, inspectant le trafic HTTP/HTTPS entrant et sortant de l'application Web, identifiant et bloquant les requêtes malveillantes avant qu'elles n'atteignent le serveur d'applications. Azure WAF, disponible en tant que fonctionnalité d'Azure Application Gateway ou Azure Front Door, offre une protection centralisée et évolutive pour vos applications Web hébergées dans Azure ou même dans des environnements hybrides [2].
Ce guide pratique abordera les concepts fondamentaux d'Azure WAF, ses modes de fonctionnement (Détection et Prévention), la configuration des politiques WAF avec des jeux de règles managés (OWASP Core Rule Set - CRS) et des règles personnalisées. Des instructions étape par étape seront fournies pour déployer WAF avec Azure Application Gateway, tester son efficacité contre les attaques courantes et valider les résultats, ainsi que discuter des meilleures pratiques et des conseils de dépannage. L'objectif est de permettre au lecteur de configurer et de gérer Azure WAF de manière autonome, professionnelle et fiable, en protégeant ses applications Web contre les menaces les plus répandues.
Pourquoi Azure WAF est-il crucial pour la protection des applications Web ?
- Protection complète : protège contre les attaques Web courantes, notamment l'injection SQL, les scripts intersite (XSS), l'inclusion de fichiers, les attaques de robots et d'autres vulnérabilités du Top 10 de l'OWASP [3].
- Règles gérées : utilise des ensembles de règles gérés (tels que OWASP CRS) qui sont automatiquement mis à jour par Microsoft, garantissant ainsi une protection contre les dernières menaces sans intervention manuelle.
- Règles personnalisées : permet la création de règles personnalisées pour répondre aux exigences de sécurité spécifiques à l'application, en bloquant des modèles de trafic spécifiques ou en protégeant contre les vulnérabilités non couvertes par les règles gérées.
- Modes de fonctionnement flexibles : fonctionne en mode « Détection » (surveille et enregistre uniquement les attaques) ou « Prévention » (bloque activement les attaques), permettant un contrôle progressif de la mise en œuvre.
- Intégration native avec Azure : s'intègre de manière transparente à Azure Application Gateway (pour les applications internes) et à Azure Front Door (pour les applications globales), offrant une solution complète de mise à disposition d'applications avec sécurité intégrée.
- Évolutivité et haute disponibilité : bénéficiez de l'évolutivité et de la haute disponibilité des services de mise à disposition d'applications Azure, garantissant que la protection est toujours active et performante.
- Conformité : aide les organisations à respecter les exigences réglementaires et les normes de sécurité qui exigent la protection des applications Web.
Prérequis
Pour implémenter Azure WAF, vous aurez besoin des éléments suivants :
- Abonnement Azure actif : un abonnement Azure pour créer et gérer des ressources.
- Accès administrateur : un compte avec les autorisations nécessaires pour créer et gérer des ressources telles que les passerelles d'application, les portes d'entrée et les politiques WAF (par exemple, « Collaborateur » ou « Administrateur réseau »).
- Application Web existante : une application Web (hébergée dans Azure ou ailleurs) que vous souhaitez protéger. Pour ce guide, nous supposerons une simple application Web accessible via Application Gateway.
- Réseau virtuel (VNet) et sous-réseaux : un réseau virtuel et des sous-réseaux configurés pour Application Gateway et l'application Web.
Étape par étape : implémentation d'Azure WAF avec Application Gateway
Configurons Azure WAF pour protéger unapplication Web à l’aide d’Azure Application Gateway.
1. Création d'une passerelle d'application Azure avec WAF
- Ouvrez votre navigateur et accédez au portail Azure : « https://portal.azure.com ».
- Connectez-vous avec un compte disposant des autorisations nécessaires.
- Dans le champ de recherche supérieur, tapez « Application Gateway » et sélectionnez-le dans les résultats.
-
Cliquez sur « + Créer ».
-
Bases :
- Abonnement : Sélectionnez votre abonnement.
- Groupe de ressources : créez un nouveau groupe de ressources (par exemple
rg-waf-appgw) ou sélectionnez-en un existant. - Application Gateway Name : Donnez un nom (ex :
appgw-waf-01). - Région : Sélectionnez la région.
- Niveau : sélectionnez « Standard v2 » (WAF n'est disponible qu'au niveau v2).
- Activer WAF : Sélectionnez « Oui ».
- Nom de la stratégie WAF : donnez un nom à la stratégie WAF (par exemple
wafpolicy-appgw-01). - Mode WAF : commencez par « Détection » pour surveiller et ajuster les règles avant de passer à « Prévention ».
-
Cliquez sur « Suivant : Frontends ».
-
Frontaux :
- Type d'adresse IP frontale : Sélectionnez « Public ».
- Adresse IP publique : Cliquez sur
+Ajouter un nouveauet donnez un nom à l'adresse IP publique (ex :pip-appgw-waf).
-
Cliquez sur « Suivant : Backends ».
-
Backends :
- Cliquez sur
+Ajouter un pool backend. - Nom du pool backend : donnez-lui un nom (par exemple
app-backend-pool). - Ajouter un pool back-end sans cibles : sélectionnez « Non ».
- Type de destination : sélectionnez « Adresse IP ou FQDN ».
- Adresse IP/FQDN : saisissez l'adresse IP ou le FQDN de votre application Web (ex :
10.0.0.4pour une VM dans le VNet, ou le FQDN d'un App Service). - Cliquez sur « Ajouter ».
- Cliquez sur
-
Cliquez sur « Suivant : Configuration ».
-
Configuration :
- Paramètres de routage : cliquez sur « + Ajouter une règle de routage ».
- Nom de la règle : Donnez-lui un nom (ex :
rule-http). - Priorité : laissez la valeur par défaut.
- Auditeur :
- Nom de l'auditeur : Donnez un nom (ex :
listener-http). - Adresse IP frontale : Sélectionnez l'adresse IP publique créée.
- Protocole : Sélectionnez
HTTP(pour commencer, vous pourrez ajouter HTTPS plus tard). - Port :
80.
- Nom de l'auditeur : Donnez un nom (ex :
- Cibles back-end :
- Type de cible : sélectionnez « Pool de back-end ».
- Pool de backend : sélectionnez
app-backend-pool. - Configuration du backend : cliquez sur
+Ajouter un nouveau.- Nom du paramètre backend : donnez-lui un nom (par exemple
http-setting). - Protocole backend :
HTTP. - Port backend :
80(ou le port de votre application Web). - Utiliser une sonde personnalisée : Sélectionnez « Non » (pour cet exemple simple).
- Cliquez sur « Ajouter ».
- Nom du paramètre backend : donnez-lui un nom (par exemple
- Cliquez sur « Ajouter » dans la règle de routage.
-
Cliquez sur « Suivant : Balises ».
- Cliquez sur « Suivant : Réviser + créer ».
-
Vérifiez les paramètres et cliquez sur « Créer ».
- Explication : ce processus crée une Application Gateway avec un WAF associé. Le WAF commencera à inspecter le trafic en mode « Détection ».
2. Configuration des règles WAF gérées et personnalisées
Après le déploiement, vous pouvez ajuster la stratégie WAF.
- Dans le portail Azure, accédez à votre Application Gateway (
appgw-waf-01). - Dans le volet de navigation de gauche, sous « Paramètres », sélectionnez Pare-feu d'application Web.
-
Cliquez sur le nom de votre stratégie WAF (
wafpolicy-appgw-01). -
Mode politique : dans la section « Présentation », vous pouvez modifier le « Mode » de « Détection » à « Prévention » lorsque vous êtes sûr que vos règles ne bloquent pas le trafic légitime.
-
Règles gérées :
- Dans le volet de navigation gauche de la stratégie WAF, sélectionnez Règles gérées.
- Assurez-vous que le « Ensemble de règles par défaut OWASP » (par exemple « OWASP_CRS/3.2 ») est « Activé ».
- Vous pouvez désactiver des règles spécifiques au sein de l'ensemble géré si elles provoquent des faux positifs, mais faites-le avec prudence et uniquement après un examen attentif.
-
Règles personnalisées :
- Dans le volet de navigation gauche de la stratégie WAF, sélectionnez Règles personnalisées.
- Cliquez sur
+Ajouter une règle personnalisée. - Nom de la règle : Donnez-lui un nom (ex :
BloquearIPMalicioso). - Priorité : définissez une priorité (les nombres plus petits ont une priorité plus élevée).
- Taperrègle :
Match. - Condition :
- Type de variable :
RemoteAddress. - Opérateur :
IPMatch. - Valeur : Saisissez l'adresse IP ou la plage CIDR que vous souhaitez bloquer (ex :
192.168.1.10/32).
- Type de variable :
-
Action : Sélectionnez « Bloquer ».
-
Explication : Les règles personnalisées vous permettent de définir une logique de blocage en fonction de critères spécifiques tels que les adresses IP, les en-têtes HTTP, les chaînes de requête, etc.
-
Cliquez sur Ajouter, puis sur Enregistrer dans la stratégie WAF.
3. Surveillance du WAF et examen des journaux
Le suivi est essentiel pour comprendre l’efficacité du WAF et ajuster les politiques.
- Dans le portail Azure, accédez à votre Application Gateway (
appgw-waf-01). - Dans le volet de navigation de gauche, sous « Surveillance », sélectionnez Journaux de diagnostic.
- Cliquez sur « +Ajouter une configuration de diagnostic ».
- Nom de la configuration de diagnostic : Donnez-lui un nom (ex :
diag-waf). - Catégories de journaux : Vérifiez
ApplicationGatewayAccessLogetApplicationGatewayFirewallLog. - Détails de la destination : sélectionnez « Envoyer à l'espace de travail Log Analytics » et choisissez votre espace de travail.
-
Cliquez sur Enregistrer.
-
Après quelques minutes, accédez à votre espace de travail Log Analytics.
- Dans le volet de navigation de gauche, sélectionnez Journaux.
- Utilisez les requêtes KQL (Kusto Query Language) pour analyser les journaux WAF :
- Pour voir tous les événements WAF :
kusto AzureDiagnostics | où ResourceProvider == "MICROSOFT.NETWORK" | où Catégorie == "ApplicationGatewayFirewallLog" | projet TimeGenerated, hostname_s, requestUri_s, Message, action_s, Policy_s | commander par TimeGenerated desc - Pour afficher les attaques bloquées (si WAF est en mode « Prévention ») :
kusto AzureDiagnostics | où ResourceProvider == "MICROSOFT.NETWORK" | où Catégorie == "ApplicationGatewayFirewallLog" | où action_s == "Bloqué" | projet TimeGenerated, hostname_s, requestUri_s, Message, RuleId_s | commander par TimeGenerated desc
- Pour voir tous les événements WAF :
Validation et tests
Il est crucial de tester le WAF pour garantir qu’il bloque les attaques attendues et qu’il ne bloque pas le trafic légitime (faux positifs).
1. Test des attaques courantes (injection SQL, XSS)
-
Scénario : essayez d'accéder à votre application Web via Application Gateway (en utilisant l'adresse IP publique ou le nom de domaine complet) et simulez une attaque par injection SQL sur l'URL ou un paramètre de formulaire.
- Exemple d'URL avec tentative d'injection SQL (ne pas exécuter en production sans autorisation) :
http://<seu_ip_publico_appgw>/index.php?id=1' OU '1'='1 - Exemple d'URL avec tentative XSS :
http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
- Exemple d'URL avec tentative d'injection SQL (ne pas exécuter en production sans autorisation) :
-
Action attendue (mode de détection) : Si le WAF est en mode « Détection », la demande doit être autorisée, mais les journaux WAF dans Log Analytics doivent enregistrer l'attaque et la règle qui l'a détectée.
-
Action attendue (mode prévention) : Si le WAF est en mode « Prévention », la requête doit être bloquée et le navigateur doit afficher une page d'erreur WAF (généralement une erreur HTTP 403 interdite).
-
Vérification : vérifiez les journaux WAF dans Log Analytics pour confirmer que les attaques ont été détectées (en mode Détection) ou bloquées (en mode Prévention).
2. Test des règles personnalisées (blocage IP)
- Scénario : essayez d'accéder à votre application Web à partir de l'adresse IP que vous avez configurée dans la règle personnalisée de blocage IP.
- Action attendue : l'accès doit être bloqué et le navigateur doit afficher une page d'erreur WAF.
- Vérification : vérifiez les journaux WAF dans Log Analytics pour confirmer que l'adresse IP a été bloquée par la règle personnalisée.
Conseils de sécurité et bonnes pratiques
- Démarrer en mode détection : déployez toujours initialement le WAF en mode "Détection". Surveillez attentivement les journaux pour identifier les faux positifs et ajustez les règles avant de passer en mode « Prévention ».
- Réglage WAF : le réglage précis est crucial. Désactivez les règles spécifiques qui génèrent des faux positifs (bloquant le trafic légitime) ou ajoutez des règles d'exclusion pour des paramètres spécifiques. Évitez de désactiver des ensembles de règles entiers.
- Règles personnalisées : utilisez des règles personnalisées pour gérer les exigences de sécurité spécifiques de votre applicationo ou pour atténuer les vulnérabilités nouvellement découvertes avant la mise à jour des règles gérées.
- Mises à jour CRS : gardez votre ensemble de règles gérées (OWASP CRS) à jour pour garantir une protection contre les dernières menaces. Azure WAF se met généralement à jour automatiquement, mais vérifiez la version.
- Intégration avec Azure Front Door : pour les applications Web mondiales ou celles qui nécessitent une optimisation des performances et un routage avancé, envisagez de déployer WAF sur Azure Front Door. Cela offre une protection à la périphérie du réseau mondial de Microsoft.
- Surveillance et alertes : configurez les alertes dans Azure Monitor pour les événements de sécurité WAF, tels que les attaques bloquées ou les anomalies. Intégrez les journaux WAF à votre SIEM (par exemple Microsoft Sentinel) pour une vue centralisée.
- Tests de sécurité réguliers : effectuez régulièrement des tests d'intrusion et des analyses de vulnérabilité sur vos applications Web pour identifier de nouvelles vulnérabilités et valider l'efficacité du WAF.
- Principe du moindre privilège : assurez-vous que seuls les utilisateurs autorisés disposent des autorisations nécessaires pour configurer et gérer les stratégies WAF.
Dépannage courant
- WAF ne bloque pas les attaques attendues :
- Vérifiez que le WAF est en mode
Préventionet non en modeDétection. - Assurez-vous que l'ensemble de règles gérées (OWASP CRS) est activé.
- Consultez les journaux WAF dans Log Analytics pour voir si l'attaque a été détectée et quelle règle a été déclenchée. Vous devrez peut-être ajuster la sensibilité du CRS ou ajouter une règle personnalisée.
- Assurez-vous qu'il n'existe aucune règle d'exclusion ou liste blanche autorisant le trafic malveillant.
- Vérifiez que le WAF est en mode
- WAF bloque le trafic légitime (faux positifs) :
- Commencez par analyser vos journaux WAF dans Log Analytics pour identifier quelle règle bloque le trafic légitime.
- Pour la règle identifiée, vous pouvez :
- Désactiver la règle spécifique (dernier recours).
- Ajoutez une règle d'exclusion pour le paramètre ou l'en-tête spécifique à l'origine du faux positif.
- Ajustez le seuil de notation des anomalies (si vous utilisez CRS en mode de notation des anomalies).
- Pensez à revenir temporairement en mode « Détection » pour ajuster les règles.
- Performances de l'application dégradées après l'activation de WAF :
- WAF ajoute une petite quantité de latence en raison de l'inspection du trafic. Assurez-vous que l’Application Gateway ou la Front Door est de taille appropriée.
- Vérifiez les journaux de performances d'Application Gateway dans Azure Monitor.
- WAF n'est pas associé à la bonne application :
- Vérifiez que la stratégie WAF est associée à la bonne Application Gateway ou Front Door.
- Assurez-vous que le trafic vers votre application Web passe réellement par Application Gateway/Front Door avec WAF activé.
Conclusion
Azure Web Application Firewall (WAF) constitue une défense essentielle pour protéger les applications Web contre une myriade de cyberattaques. En fournissant une couche d'inspection et de filtrage du trafic à la périphérie du réseau, WAF agit comme un bouclier, protégeant contre les vulnérabilités connues et les menaces Zero Day. La flexibilité de l’utilisation d’ensembles de règles gérés et personnalisés, ainsi que l’intégration native avec les services de mise à disposition d’applications Azure, font d’Azure WAF une solution robuste et évolutive pour toute organisation. Grâce à une mise en œuvre minutieuse, un ajustement précis des politiques et une surveillance continue, les professionnels de la sécurité peuvent garantir que leurs applications Web restent sécurisées, disponibles et conformes, renforçant ainsi la posture de sécurité globale de l'organisation face à un paysage de menaces en constante évolution.
Références :
[1] Microsoft Apprendre. Qu'est-ce que le pare-feu d'applications Web Azure ?. Disponible sur : https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] Microsoft Apprendre. Pare-feu d'application Web (WAF) sur Azure Application Gateway. Disponible sur : https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] Fondation OWASP. Top 10 OWASP. Disponible sur : https://owasp.org/www-project-top-ten/ [4] Microsoft Apprendre. Créer des politiques de pare-feul Web Application Gateway (WAF) pour Azure Application Gateway. Disponible sur : https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft Apprendre. Règles et groupes de règles WAF CRS. Disponible sur : https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft Apprendre. Surveillance et journalisation WAF. Disponible sur : https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics