[Azure] Application Gateway – Fonctionnement

Si vous souhaitez migrer des serveurs IIS/Apache vers Azure, et exposer les sites de façon publique, il va bien entendu falloir protéger ces sites, comme vous le faites On-Premises. Pour faire ceci, Microsoft a fourni un service PaaS, l’Application Gateway, qui permet de load-balancer le trafic sur les ports Web que sont 80 et 443, directement vers un ou plusieurs serveurs. Basé sur une URL, qui pointera vers l’IP publique de l’App Gateway, le listener qui sera configuré, permettra de rediriger le trafic, en fonction d’une règle définie, vers une VM, un serveur On-Premises ou un VMSS:

Application Gateway conceptual

Ce service peut également faire office de Web Application Firewall (WAF) pour protéger contre les attaques, mais aussi de SSL Offloading, pour fournir uniquement du trafic sur le port 443, avec un certificat SSL, ett ensuite, rediriger le trafic interne vers un port autre, par exemple 8081.

imageURLroute

L’avantage de cette solution est que c’est simple à mettre en place,e t simple à gérer. Vous trouverez toutes les informations nécessaires à l’App Gateway ici: https://docs.microsoft.com/en-us/azure/application-gateway/overview

Ici, on va juste déployer un App Gateway + WAF. Dans l’article suivant, on verra la configuration de ce dernier. J’ai déjà déployé un serveur IIS, qui écoute sur le port 8081, en HTTP:

Dans le portail Azure, chercher Application Gateway dans les service, et créez un nouvel App Gateway. Ici, je vais choisir le tier WAF V2 car ce dernier présente le fait d’appliquer les changements beaucoup plus rapidement que la v1, entre autre. Je désactive ici l’auto scaling, et je renseigne 2 noeuds, ce qui est le minimum. Choisissez ensuite un réseau virtuel où sera lié votre App Gateway :

Il faut ensuite créer une publique IP si le site doit être exposé publiquement, mais vous pouvez aussi utiliser une IP privée:

Créez ensuite votre premier Backend pool qui contiendra un ou plusieurs serveurs où le site web est hébergé:

Il faut ensuite ajouter une règle de routage. Donnez lui un nom (j’ai pour habitude de donner le nom du site qui va être utilisé par cette règle). Dans cette règle, il y aura un listener, sur le port 443 en HTTPS, avec un certificat (PFX obligatoire), de type multi site:

Dans la partie Backend target, je créais un nouveau HTTP setting, vers le port 8081, en HTTP. Ce sera ce port qui discutera avec le site web:

Enfin, pour terminer, choisissez le backend que vous avez créé auparavant ainsi que le HTTP Setting créé juste avant:

Vous avez maintenant tout ce qu’il vous faut pour passer à la suite du déploiement:

Vous pouvez déployer votre App Gateway/WAF:

Pour résumer, voici les éléments importants ici:

  • Backend pool: contient un ou plusieurs serveurs, sur le même VNet que l’App Gateway, vers une IP On-Premises, etc.
  • HTTP Settings: défini comment discuter avec le site qui est en backend
  • Listeners: c’est ici que l’on va dire sur quelle URL on écoute, ainsi que le port et le certificat, si il y en a un
  • Rules: la règle quant à elle permet d’orchestrer le tout, en prenant le trafic du listener, et l’associant avec un HTTP setting, et en le faisant pointer vers un backend pool
  • Health probe (optionnel): permet de tester si un site, dans un backend pool, est fonctionnel ou non et si c’est donc un candidat pour afficher le site demandé

L’App Gateway est déployé et configuré. J’ai créé mon enregistrement azure.florentappointaire.cloud dans mon DNS, en le faisant pointer sur l’IP publique du WAF.

Si je navigue maintenant sur https://azure.florentappointaire.cloud je devrais être redirigé sur mon serveur IIS:

Ici, je suis bien en HTTPS, alors que mon site est configuré en HTTP. À noter que si vous avez des NSGs qui sont appliqués sur vos subnets/cartes réseaux, vous devrez ouvrir le port 8081 par exemple dans le NSG du serveur IIS et 443 dans celui de l’App Gateway.

Vous pouvez également tester la sécurité de votre WAF, en utilisant l’outil Microsoft Security Risk Detection : https://www.microsoft.com/en-us/security-risk-detection/

Si vous avez des questions, n’hésitez pas 🙂 bonne implémentation et sécurisation de vos sites Web.

Laisser un commentaire