Introduction
Avec son offre « Azure VM », Microsoft offre à ses clients la possibilité de déployer des infrastructures IaaS (Infrastructure-as-a–Service) sous Windows Server/Client ou Linux.
Par défaut :
- Toute VM Windows (Client ou Server) déployée est exposée à Internet et est accessible via le protocole RDP (Remote Desktop Protocol : Port 3389.
- Toute VM Linux déployée est exposée à Internet et est accessible via le protocole SSH (Secure SHell) : Port 22
En effet, lors de la création d’une nouvelle VM Azure (Windows ou Linux), l’assistant Azure vous propose la création d’une interface (IP) Publique pour permettre l’accès à votre VM (via RDP ou SSH) depuis Internet.
Cela vous expose à un risque important car vos VMs écoutent sur des ports (22/SSH et 3389/RDP) considérés étant vulnérables et très ciblés par les Hacker. Sans parler des Bots qui scannent en permanence les réseaux IP des Cloud Providers (tels que MS, AWS, GCP..etc) et essayent de Brute-forcer les accès SSH/RDP sur toute VM écoutant sur ces ports.
Pour réduire ce risque, certaines sociétés exposent seulement une VM (aka Jumpbox) de rebond utilisée pour atteindre les autres VMs en Back-end. Or, ce dernier devient donc aussi vulnérable car écoute toujours sur les mêmes ports (SSH/RDP), en outre, cet environnement Jumpbox est rarement « Hardené » et restreint (IP filtering, OS Hardening, AppLocker, Real-tim monitoring…etc)
D’autres sociétés ayant un niveau de sécurité plus sérieux, construisent un « vrai » environnement Bastion à base de RDS (Remote Desktop Services), comprenant une Gateway RDS pour exposer uniquement le protocole SSL/TLS (HTTPS) et encapsuler le protocole RDP over HTTPS.
Pour construire un environnement Bastion basé sur RDS, plusieurs services de rôles (et plusieurs VMs) doivent être déployées et configurées.
L’infra Bastion Azure (IaaS) peut comporter jusqu’à 6 ou 7 VMs (coût assez important), de plus, cette infrastructure devenant le point d’entrée aux infras IaaS Azure, doit être sécurisée, monitorée en permanence, backupée….etc donc un effort de gestion et maintenance non négligeable pour une société souhaitant s’offrir ce niveau de sécurité.
Enfin, les sociétés ayant plus d’exigences Sécu, n’exposent aucune VM sur Internet, même s’il s’agit d’une VM RD Gateway avec de l’HTTPS only, et optent pour une solution « Privée » qu’est la mise en place d’un VPN Point-to–Site ou P2S (si l’équipe Admin Cloud ne comporte pas plus de deux ou trois personnes) ou VPN Site-to–Site (ou S2S) s’elles souhaitent interconnecter le réseau local (ou un réseau Admin Local spécifique) avec leur VNET Azure.
- Note : les deux VPN modes sont sécurisés
- VPN S2S : IPSec /IKEv2
- VPN P2S : OpenVPN ou SSTP « SSL/TLS based-authentification à base de certificat »
Ce 18 Juin 2019, l’équipe Azure Corp a annoncé la disponibilité d’un nouveau service de sécurité appelé « Azure Bastion« .
Ce service peut remplacer toutes les solutions citées ci-haut, et vous allez vite comprendre pourquoi :).
Azure Bastion : qu’est-ce que c’est ?
Azure Bastion est un service PaaS (Platform-as-a–Service) entièrement géré et maintenu par Microsoft (Sécurisation, Patch Management….), il fournit un accès RDP et SSH sécurisé à vos VMs Azure (Windows & Linux) directement via le portail Azure.
Azure Bastion est déployé/associé au niveau de chaque réseau virtuel (VNet) Azure et prend en charge toutes les VMs faisant partie du VNET.
Vos VMs ne sont jamais exposées sur Internet (pas d’@IP Publique), seul le service Azure Bastion est exposé et est accessible via HTTPS (via le Portail Azure).
Ce service peut remplacer votre infrastructure Bastion RDS traditionnelle, vous pouvez ainsi réduire le coût lié à l’infra VM Azure (plusieurs VMs > plusieurs centaines voire des milliers d’euros /mois, selon le sizing des VMs déployées) et réduire vos efforts de gestion, sécurisation, maintenance, backup…. (passage du mode IaaS au PaaS).
Azure Bastion est encore en « Public Preview », et est disponible uniquement pour les Régions Azure suivantes :
- West US
- East US
- West Europe
- South Central US
- Australia East
- Japan East
Azure Bastion : Big Picture
Le schéma suivant illustre l’accès RDP/SSH via Azure Bastion
source : Blog MS Azure
Pré-requis
Pour pouvoir déployer le service Azure Bastion, vous devez vérifier les deux prérequis suivants :
- Disposer d’un compte Azure, vous pouvez en créer-un gratuitement ici.
- Note : Vous bénéficiez de 170€ de Crédit pour tout nouveau compte Azure créé.
- Enregistrer la fonctionnalité « AllowBastionHost » du fournisseur de ressources « Microsoft.Network » au niveau de votre abonnement, et ce en exécutant les commandes PS suivantes.
- Note : les Commandes PS ci-dessous peuvent être exécutées depuis une instance PS locale ou directement depuis le Cloud Shell.
Tip : si votre compte Azure est associé à plusieurs abonnements, commencez par sélectionner celui pour lequel vous souhaitez enregistrer le service Azure Bastion (AllowBastionHost Feature), exécutez les commandes suivantes :
Maintenant que vous avez sélectionné votre abonnement, commencez par enregistrer la fonctionnalité « AllowBastionHost » en exécutant la commande suivante :
Register-AzureRmProviderFeature -FeatureName AllowBastionHost -ProviderNamespace Microsoft.Network
Exécutez ensuite la commande PS suivante pour enregistrer à nouveau votre abonnement avec le Provider NameSpace « Microsoft.Network » :
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.Network
Enfin, exécutez la commande PS suivante pour vérifier que la Feature « AllowBastionHost » est bien enregistrée au niveau de votre abonnement :
Get-AzureRmProviderFeature -ProviderNamespace Microsoft.Network
Tip : La vérification de l’inscription/enregistrement du fournisseur de ressource ‘Microsoft.Network’ peut également être réalisée depuis le Portail Azure, en sélectionnant votre abonnement et cliquant sur le Blade ‘Resources providers’, voir capture d’écran ci-dessous :
Tous les prérequis ont été mis en place, maintenant nous allons découvrir comment déployer le service « Azure Bastion » et commencer à exploiter cette Amazing Feature :).
Méthodes de déploiement du Bastion Azure
Il existe deux méthodes de déploiement d’Azure Bastion :
- Déploiement depuis la Marketplace Azure
- Déploiement depuis les paramètres d’une VM Azure
HowTo : déployer Azure Bastion
Déployer un Bastion Azure depuis la Marketplace
Pour déployer le service Azure Bastion depuis la Marketplace, suivez les instructions suivantes :
- Connectez-vous sur le Portail Azure Preview, il est important d’utiliser ce lien plutôt que l’URL standard (https://portal.azure.com)
- Cliquez sur ‘Create a resource’
- Saisissez le mot ‘Bastion’ depuis la zone de recherche et sélectionnez ensuite ‘Bastion (preview)’ :
- Cliquez sur ‘Create’ pour continuer :
- Maintenant, sélectionnez/remplissez les informations suivantes et cliquez ensuite sur ‘Review + Create’.
- Abonnement (Subscription)
- Groupe de ressource (Resource Group)
- Nom de l’instance Bastion Host Azure
- Région de l’instance (sélectionnez l’une des 6 Régions prenant en charge Azure Bastion, voir la liste ci-haut)
- Réseau Virtuel Azure (Virtual NETwork Azure) dans lequel le sous-réseau du Bastion Azure sera créé
- Sous-réseau (Subnet) du Bastion Azure
- Note importante : le Subnet qui sera dédié au Host Azure Bastion doit avoir les caractéristiques suivantes :
- Doit avoir un Net(work)Mask ‘/27’
- Doit être nommé ‘AzureBastionSubnet’
- Note importante : le Subnet qui sera dédié au Host Azure Bastion doit avoir les caractéristiques suivantes :
- Nom de l’adresse IP Publique du Bastion vu qu’il sera exposé sur Internet (flux HTTPS Only !)
- Note : l’@IP Publique qui sera attribuée au Bastion Host Azure sera statique, il s’agit d’un choix défini par défaut par Azure (non modifiable !)
- Le déploiement du service Azure Bastion démarre…
- Une fois déployé, le service Azure Bastion apparaît désormais dans le Groupe de Ressource spécifié lors du déploiement du Service Bastion Azure :
- Enfin, vous pouvez cliquer votre service Bastion pour afficher ses propriétés :
Déployer un Bastion Azure depuis les paramètres d’une VM Azure
Pour déployer/activer le service Azure Bastion depuis les Paramètres d’une VM Azure, suivez les instructions suivantes :
- Connectez-vous sur le Portail Azure Preview, il est important d’utiliser ce Lien plutôt que l’URL standard (https://portal.azure.com)
- Depuis le Blade « Toutes les ressources » ou « Virtual Machines » si vous l’avez « Favorisé », localisez et sélectionnez une VM Azure (Linux ou Windows)
- Cliquez sur « Connect » et cliquez ensuite sur « BASTION«
- Si le service Bastion n’a jamais été déployé depuis la Marketplace comme montré précédemment, le bouton suivant (Use Bastion) s’affiche :
- Lorsque vous cliquez sur ce bouton, l’assistant de création du Bastion Host suivant s’affiche, vous êtes invité à renseigner les mêmes informations que celles demandées lors de la création du service Bastion depuis la Marketplace :
Note : si vous essayez d’activer Azure Bastion au niveau d’un VNET déployé sur une Région autres que celles (les 6 Régions) listées ci-haut, le message suivant vous est retourné :
HowTo : Se connecter aux VMs Azure via Azure Bastion
Pour se connecter à vos VMs Azure via Azure Bastion, rien de plus simple :
- Sélectionnez votre VM Azure,et cliquez sur « Connect«
- Depuis la fenêtre qui s’affiche, cliquez sur « BASTION » et remplissez les informations de connexion/authentification :
- Dans l’exemple suivant, nous allons nous connecter (via RDP) à notre VM Azure Windows nommée « hkdemowsvm01«
- Cette fois-ci, je me connecte en SSH à une VM Azure Linux « hkdemolinuxvm01 » :
Bien évidemment, les deux VMs (Windows & Linux) utilisées dans les exemples précédents ne sont pas exposées à Internet et ne disposent donc d’aucune Interface IP Publique :
hkdemowsvm01
hkdemolinuxvm01
HowTo : Copier/Coller du Texte
Seul le Clipboard (Copier/Coller) du Texte est autorisé à travers le service Azure Bastion (pour l’instant ^_^).
Pour les navigateurs Web prenant en charge l’accès avancé à l’API Presse-papiers, vous pouvez copier et coller du texte entre votre Device/PC local et la session distante (VM Azure cible) de la même manière que vous copiez et collez entre des applications hébergées sur une seule et même machine (locale).
Pour les autres navigateurs, vous pouvez utiliser la palette d’outils d’accès au presse-papiers Bastion.
Lors de la première connexion RDP ou SSH via Azure Bastion, vous serez invité à autoriser le Clipboard depuis votre Navigateur Web, le message suivant est affiché, et il suffit de cliquer sur « Allow » pour autoriser le Clipboard :
Comment ça marche ?
Une fois connecté (via RDP ou SSH) à une VM Azure, cliquez sur les deux Flèches situées à gauche de la fenêtre :
Copiez ensuite un texte depuis votre machine locale, notez qu’il est automatiquement ajouté à la boite de dialogue du Bastion Azure, voir capture d’écran ci-dessous :
Enfin, collez votre texte depuis la session distance Azure Bastion :
Azure Bastion : Limitations
Azure Bastion est déployé et associé au niveau Azure VNET, vous devez le déployer pour chaque VNET présent au sein de votre abonnement.
La prise en charge du VNET Peering n’est pas encore pris en charge, et Microsoft ne sait pas (pour l’instant) répondre à la question.
Conclusion
Au moment de l’écriture de ce post, Azure Bastion est encore en « Public Preview », vous aurez compris : à ne pas déployer sur vos environnements Azure de Production.
Il présente encore quelques bugs et problèmes de stabilité, que j’ai d’ailleurs remontés à l’équipe Azure Corp.
Selon les infos communiquées par MS (NDA Comm), il sera GA (Generally Available) dans quelques mois.
Ce service Bastion pourra remplacer vos infrastructures Bastion de type RDS/RD Gateway (avec ou sans RD Web Access Portal). Vous passerez donc d’un mode IaaS (Infra RDS exécutée sur de plusieurs VMs Azure : coût important + effort de gestion) à une plateforme Bastion PaaS (Platform-as-a-Service) fully-managed par Microsoft, ce mode PaaS présente plusieurs avantages, à savoir : une plateforme always UpToDate et plus sécurisée.
Voilà :).
#HK