Mise en oeuvre de Microsoft Tunnel pour Microsoft Intune

By | 20 avril 2021

Microsoft Tunnel est une nouvelle solution de passerelle VPN pour Intune. Annoncé lors de l’ Ignite en septembre 2020, Microsoft Tunnel Gateway donne accès aux ressources d’entreprise depuis des appareils Android et iOS. Evidemment, Il existe déjà beaucoup de solutions VPN sur le marché, alors pourquoi les organisations pourraient avoir besoin d’une autre passerelle VPN ?

Facile à déployer, facile à maintenir

Le positionnement de la solution est clair, fournir une solution d’accès à distance basé sur une Appliance, facile à déployer et surtout facile à maintenir, les mises à jour étant gérés directement par Endpoint Manager Intune. Microsoft Tunnel peut être déployée avec un load balancer pour la haute disponibilité. La ou les passerelles se déploient rapidement sur un serveur Linux via un conteneur Docker depuis votre LAN, DMZ ou évidement dans un Cloud.

La configuration du serveur est gérée par Microsoft Intune et les logs sont envoyés dans le Cloud pour être centralisés pour y être ensuite ingéré dans Azure Sentinel ou un autre SIEM.

App Tunnel pour iOS/Android

Les Apps sont évidemment disponibles dans les Stores iOS et Play Store et peuvent être configurés de manière que l’ensemble des flux sortant de l’appareil passe par le tunnel VPN ou au contraire utiliser le split tunneling afin de router certains traffics vers internet. Pour finir, il est également possible de choisir les applications nécessitant l’ouverture du Tunnel (Per App VPN).

Quelques limitations :

  • Sur iOS, il n’est pas possible de configurer le VPN en « Always On »
  • iOS supporte le split tunneling mais les règles sont ignorées si vous utilisez le VPN par application (Per-App VPN)

Accès conditionnel

Si vous souhaitez bloquer l’accès au Tunnel à certains utilisateurs, vous pouvez définir une stratégie d’accès conditionnel pour bloquer les utilisateurs d’accéder à l’application.

  • Définir une liste d’utilisateurs exclus (et donc les utilisateurs ayant accès)
  • Sélectionner l’application « Microsoft Tunnel Gateway » (à ajouter dans le tenant, voir ci-dessous)
  • Dans le contrôle d’accès, sélectionner « bloquer »

Prérequis pour Microsoft Tunnel

Avant de pouvoir installer Microsoft Tunnel pour Microsoft Intune, vous devez configurer les composants requis.

  • Un abonnement Azure si vous hébergez votre passerelle sur Azure 🙂
  • Un abonnement Intune
  • Serveur Linux exécutant Docker, local ou dans le cloud.
    • CentOS 7.4+ (CentOS 8+ n’est pas pris en charge)
    • Red Hat (RHEL) 7.4+
    • Red Hat (RHEL) 8
    • Ubuntu 18.04
    • Ubuntu 20.04
  • Un certificat TLS (Transport Layer Security) pour le serveur Linux afin de sécuriser les connexions entre les appareils et le serveur Tunnel Gateway. J’utilise un certificat Wildcard dans cet exemple.
  • Des appareils Android ou iOS/iPadOS pour tester votre tunnel

Côté firewall :

  • Ports d’entrée :
    • TCP 443 : requis par Microsoft Tunnel.
    • UDP 443 : requis par Microsoft Tunnel.
    • TCP 22 : facultatif. Utilisé pour la communication SSH/SCP avec le serveur Linux.
  • Ports de sortie :
    • TCP 443 : nécessaire pour accéder aux services Intune. Requis par Docker
    • TCP 80 : nécessaire pour accéder aux services Intune.

Note : si vous utilisez un proxy, consultez la documentation pour plus d’informations.

La configuration de Microsoft Tunnel se découpe en 4 étapes :

  1. La configuration de votre Tenant
  2. La configuration du serveur et du site dans la console Endpoint Manager
  3. La configuration de la gateway
  4. La configuration des clients iOS/Android

Configuration du Tenant

La première chose à faire est de configurer votre tenant pour prendre en charge Microsoft Tunnel. Pour ce faire, vous devez créer une application Azure AD permettant authentifier les utilisateurs et pouvoir configurer l’accès conditionnel.

Télécharger et installer le module PowerShell AzureAD si vous ne l’utilisez pas puis télécharger et exécuter le script PowerShell « mst-CA-readiness.ps1 depuis cette adresse.

Exécutez le script puis se connecter avec un compte administrateur de votre Tenant Azure AD.

Une fois que l’application est créée nous allons passer à la configuration depuis le portail Microsoft Intune.

Configuration du site

  1. Se diriger dans l’onglet « Server configuration » et créer une nouvelle configuration. Cette action va créer un nouveau « site ». Un site peut contenir un ou plusieurs serveurs. Définir une plage d’adresse IP que les clients recevront lors de leurs connections, le suffixe DNS de la connection puis le port d’écoute du serveur, par défaut 443.
  1. Se diriger ensuite dans l’onglet « Sites » et créer un site en indiquant un nom pour le nouveau site et l’IP cible ou le FQDN. Finaliser la configuration en attachant ce nouveau site à la configuration serveur crée dans la première étape. Dans cet exemple, j’ai créé un enregistrement de type A dans ma zone DNS afin de pointer mon FQDN sur l’adresse IP publique de ma machine.

Configuration du serveur

Nous allons maintenant passer à l’installation et la configuration de la gateway sur notre serveur. Dans cet exemple j’utilise un serveur Ubuntu 1804 LTS hébergé sur Azure. Pour réaliser les opérations en SSH sur la VM, j’ai utilisé Windows Terminal, téléchargeable depuis le Windows Store. Pour copier le certificat, j’ai décidé d’utiliser WinSCP pour plus de facilité.

  1. Choisir une distribution supportée, ici Ubuntu 1804 LTS (ou 2004 si vous le souhaitez)
  2. Dans cet exemple j’utilise une clé SSH pour l’authentification, nous verrons plus bas comment l’utiliser
  3. Générer une nouvelle paire de clé pour l’authentification SSH

Sélectionner ensuite les ports d’entrée conformément aux prérequis. Concernant le port 22 (SSH) nous verrons plus bas comment le sécuriser 🙂

Coté réseau, créer une IP publique et l’attacher à la carte réseau, en production je vous conseille plutôt de créer une NIC dédié pour le réseau interne et une pour l’externe.

Avant de crée votre machine, Azure vous proposera de télécharger votre clé privée. Stocker la en lieu sûr nous allons en avoir besoin après.

Une fois la machine crée, nous allons immédiatement sécuriser notre accès SSH en y autorisant par exemple que les connections depuis une IP publique :

  1. Editer la règle « SSH » puis sélectionner dans « Source » « IP Addresses »
  2. Indiquer votre adresse IP publique dans le champ « Source IP … « 

Vérifier que votre règle fonctionne avec le Cmdlet PowerShell « Test-NetConnection » :

Test-NetConnection IP/FQN -Port 22

Nous allons passer maintenant à l’installation du Tunnel, pour cela j’utilise le Windows Terminal afin de me connecter sur la machine en SSH avec la commande suivante :

ssh -i votre_clé.pem votre_user@ip_machine

Voici le script de configuration et d’installation de Docker sur Ubuntu 1804 LTS :

  1. Pour configurer le repository et intstaller Docker :

sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
« deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable » | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo docker run hello-world

sudo docker run hello-world pour tester la bonne installation de Docker
  1. Une fois le serveur préparé, nous allons exécuter le script de vérification crée par Microsoft afin de s’assurer que nous communiquons correctement avec Microsoft Intune.

wget –output-document=mst-readiness https://aka.ms/microsofttunnelready

  1. Exécuter le script téléchargé en root puis vérifier les résultats.

sudo ./mst-readiness network

  1. Télécharger le script d’installation et modifier ses droits pour pouvoir l’exécuter :

wget –output-document=mstunnel-setup https://aka.ms/microsofttunneldownload
sudo chmod +x ./mstunnel-setup

Une fois exécuté, le script télécharge l’image du container Docker et créer les arborescences nécessaires sur le serveur puis vous demandera d’accepter le contrat de licence

Une fois arrivé à cette étape, il est nécéssaire de copier votre certificat dans /etc/mstunnel/private si c’est un fichier PFX ou /etc/mstunnel/private/certs si c’est fichier au format PEM. Noter que le fichier PFX doit être nommé « site.pfx »

Pour réaliser cette opération, j’utilise WinCSP, ne pas oublier de renseigner la clé privé de vos logins SSH!

Une fois le certificat déposé, vous pouvez continuer l’installation :

  1. Entrer « YES » en toute lettres
  2. le certificat est importé, renseigner le mot de passe (si c’est un PFX)
  3. Réaliser le Device Login avec le code affiché (attention, il faut utiliser un compte avec les droits « Intune Administrator‘ même si vous « Global Administrator« 

Au bout de quelques minutes, votre serveur apparaît dans la console Endpoint Manager, vous pouvez avoir plus d’informations en cliquant dessus.

Déploiement des applications et configuration des clients

Pour utiliser Microsoft Tunnel, les appareils doivent disposer des applications Microsoft Tunnel. Lors du dernier Ignite, Microsoft a annoncé la pre-version du client Microsoft Tunnel intégré à l’application Defender for Enpoint.

L’application classique à été par conséquent renommé « Microsoft Tunnel (client autonome). C’est cette application que nous utilisons ici ainsi que le profil de configuration associé lui aussi renommé Microsoft Tunnel (client autonome)

A terme, le client autonome disparaîtra au profit de l’application Defender for Endpoint et cela sans changement concernant les licences, vous pourrez toujours bénéficier des fonctionnalités Microsoft Tunnel avec une licence Intune et cela dans l’application Defender for Endpoint. Seule les fonctionnalités propres à Defender for Endpoint dans l’application nécessiterons une licence complémentaire.

Pour déployer notre configuration Microsoft Tunnel, créer un profil VPN dans la console Endpoint Manager. Dans notre exemple, j’utilise un téléphone Android Entreprise en mode COPE (Corporate Owned Work Profile).

Donnez un nom à votre profil de configuration et choisir « Microsoft Tunnel (standalone client) » dans la liste déroulante.

  1. Nommer la connexion VPN, ceci sera affiché à votre utilisateur.
  2. Sélectionner votre site
  3. Valider la sélection de votre site

Renseigner la configuration de votre choix, ici, j’active la connexion permanente de mon appareil (Always On VPN).

Assigner votre configuration à un groupe d’utilisateur et rafraîchissez la politique sur votre appareil.

Expérience utilisateur

Plus d’informations

C’est tout pour aujourd’hui, à bientôt !