Partie 1
De Azure-Connect on-premises à Azure avec VPN
Un réseau privé virtuel (VPN) est un type de réseau privé interconnecté.
Les VPN sont généralement déployés pour connecter deux ou plusieurs réseaux privés de confiance sur un réseau non fiable (sur Internet).
Le trafic est crypté lorsqu’il circule sur le réseau non fiable afin d’empêcher l’écoute clandestine ou d’autres attaques.
Vous pouvez envisager les trois types de passerelles ci-dessous lors de la conception de votre réseau hybride :
- VPN point à site (PàS) : permet aux ordinateurs clients locaux de se connecter à distance à votre réseau dans Azure à l’aide des protocoles IPSec/OpenVPN/SSTP.
- VPN site à site (SàS) : permet de connecter vos réseaux sur site à Azure via des dispositifs VPN dédiés, ou de connecter plusieurs réseaux virtuels dans Azure. Protocoles pris en charge : IPSec/IKE
- Azure ExpressRoute : connectez vos réseaux sur site à Azure via un réseau privé. Cela signifie que votre trafic ne passera pas par Internet.
Dans cette première partie, nous aborderons le VPN Point à Site.
Introduction
Le VPN Point à site vous permet de vous connecter à partir d’un seul ordinateur, de n’importe où, à tout ce qui se trouve dans votre réseau virtuel.
Dans le cadre de la configuration Point à site, vous installez un certificat et un pack de configuration client VPN, qui contient les paramètres permettant à votre ordinateur de se connecter à toute machine virtuelle ou instance de rôle au sein du réseau virtuel. C’est parfait lorsque vous souhaitez vous connecter à un réseau virtuel, mais que vous ne vous trouvez pas sur place.
Voici quelques caractéristiques de ce type de VPN :
Point à site
|
|
Services pris en charge par Azure | Services de Cloud et machines virtuelles |
Bande passante typique | Dépend du SKU de la passerelle VPN |
Protocoles pris en charge | SSTP, OpenVPN et IPsec |
Routage | Basé sur les routes (dynamique) |
Résilience de la connexion | Active-passive |
Cas d’utilisation | Accès sécurisé aux réseaux virtuels Azure pour les utilisateurs distants |
Prix | Prix |
Par défaut, cette passerelle VPN est déployée en deux instances dans une configuration active/passive, même si vous ne voyez qu’une seule ressource de passerelle VPN dans Azure.
Lorsque la maintenance planifiée ou la perturbation non planifiée affecte l’instance active, l’instance passive prend automatiquement en charge les connexions sans aucune intervention de l’utilisateur.
Si vous avez besoin d’une configuration HA, vous pouvez envisager une configuration VPN active/active supportée par le VPN site à site ou Azure ExpressRoute.
Approvisionnement des ressources Azure à l'aide de Terraform
- main.tf : créer un réseau virtuel, trois sous-réseaux et une passerelle de réseau virtuel
- vm.tf : créer deux machines virtuelles situées dans FrontendSubnet et BackendSubnet. Nous testerons la connexion à ces vms depuis l’ordinateur local une fois le VPN configuré
Créer des certificats pour l'authentification VPN
Pour que les connexions VPN de votre ordinateur local soient authentifiées et permettent d’accéder à votre réseau virtuel dans Azure, vous devez créer deux certificats : un certificat racine qui sera déclaré à votre passerelle de réseau virtuel dans Azure, et un certificat client stocké dans votre ordinateur local qui sera signé avec le certificat racine.
Windows
- Créer le certificat racine auto-signé en utilisant Powershell :
Ouvrez le gestionnaire de certificats (certmgr), allez dans Personnel > Certificats. Sélectionnez le certificat P2SRootCert, puis exportez-le au format .CER (sans clé privée). Nommez ce fichier comme P2SRootCert.cer.
Ouvrez le certificat P2SRootCert.cer avec un éditeur de texte et enregistrez la clé entre “–BEGIN CERTIFICATE–” et “–END CERTIFICATE–”.
Ceci est votre donnée publique du certificat racine encodée en base64. Vous devrez les déclarer plus tard dans la configuration de votre passerelle VPN Azure.
- Générer un certificat client signé par votre nouveau certificat racine en utilisant Powershell :
Le client VPN installé sur votre ordinateur local utilisera ce certificat pour authentifier sa connexion à votre réseau virtuel dans Azure.
Linux
Configurer P2S Linux à l’aide de StrongSwan
Vous pouvez suivre les étapes ci-dessous pour installer un client VPN sur une machine Ubuntu.
- Installer les utilitaires StrongSwan :
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils
- Créer des certificats pour l’authentification VPN : un certificat racine et un certificat client signé par le certificat racine
rootCertName="P2SRootCertLinux"
username="linux" password="[YOUR_PASSWORD]"
mkdir temp
cd temp
sudo ipsec pki --gen --outform pem > rootKey.pem
sudo ipsec pki --self --in rootKey.pem --dn "CN=$rootCertName" --ca --outform pem > rootCert.pem
rootCertificate=$(openssl x509 -in rootCert.pem -outform der | base64 -w0 ; echo)
echo $rootCertificate
sudo ipsec pki --gen --size 4096 --outform pem > "clientKey.pem"
sudo ipsec pki --pub --in "clientKey.pem" | \
sudo ipsec pki \
--issue \
--cacert rootCert.pem \
--cakey rootKey.pem \
--dn "CN=$username" \
--san $username \
--flag clientAuth \
--outform pem > "clientCert.pem"
openssl pkcs12 -in "clientCert.pem" -inkey "clientKey.pem" -certfile rootCert.pem -export -out "client.p12" -password "pass:$password"
Enregistrez le contenu du certificat racine. Vous devez le déclarer à votre passerelle virtuelle dans Azure.
- Configurer le client VPN : remplacer l’espace réservé [YOUR_PASSWORD] et exécuter le script suivant
username="linux"
password="[YOUR_PASSWORD]"
ipsecconfig="/etc/ipsec.conf"
# These values will be found in Generic/VpnSettings.xml of vpn configuration downloaded from Azure Portal
vpnServer="[VpnServer]"
vpnType="[VpnType]"
routes="[Routes]"
# Backup current config
sudo cp $ipsecconfig "/etc/ipsec.conf.backup"
# Copy VPN certificates
sudo cp "Generic/VpnServerRoot.cer" "/etc/ipsec.d/cacerts"
sudo cp "temp/${username}.p12" "/etc/ipsec.d/private"
# Update ipsec.conf to create a connection to Azure
echo -e "\nconn azure" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tkeyexchange=$vpnType" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\ttype=tunnel" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tleftfirewall=yes" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tleft=%any" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tleftauth=eap-tls" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tleftid=%client" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tright=$vpnServer" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\trightid=%$vpnServer" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\trightsubnet=$routes" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tleftsourceip=%config" | sudo tee -a $ipsecconfig > /dev/null
echo -e "\tauto=add" | sudo tee -a $ipsecconfig > /dev/null
echo ": P12 client.p12 '$password'" | sudo tee -a "/etc/ipsec.secrets" > /dev/null
Déclarer les certificats racine à votre passerelle de réseau virtuel dans Azure
Vous pouvez mettre à jour le code Terraform pour inclure ces certificats.
Tester la connexion VPN
La passerelle de réseau virtuel peut prendre jusqu’à 30 minutes pour être provisionnée. Lorsqu’elle est terminée, vous pouvez télécharger le client VPN depuis le portail Azure pour pouvoir vous connecter à Azure depuis votre ordinateur local.
- Pool d’adresses : 10.2.0.0/24
- Type de tunnel : IKEv2
- Certificats racine : PS2RootCert (client Windows), PS2RootCertUbuntu (client Ubuntu)
- Adresses IP allouées : ip privées allouées à partir du pool d’adresses ci-dessus pour chaque client
Windows
Pour un ordinateur Windows, vous pouvez installer un client VPN en exécutant le programme situé dans WindowsAmd64 (Windows 64 bits) ou WindowsX86 (Windows 32 bits).
Une fois le client VPN installé sur votre ordinateur local, allez dans les paramètres VPN de votre ordinateur et sélectionnez le nom de votre vnet, puis sélectionnez Connecter.
Maintenant, vous êtes connecté avec succès à Azure et une adresse IP 10.2.0.2 vous est attribuée. Cette adresse IP provient du pool d’adresses 10.2.0.0/24 que vous avez configuré plus tôt dans votre configuration.
Vous pouvez tester la connexion de ce point final à vos machines virtuelles situées dans FrontendSubnet (172.16.1.4) et BackendSubnet (172.16.2.4) sur votre réseau.
Ubuntu
Mettez à jour la configuration IPSec :
Localisez la configuration IPSec dans /etc/ipsec.conf et remplacez la valeur de quatre champs : tkeyexchange, right, righttid et rightsubnet par les valeurs trouvées dans Generic/VpnSettings.xml téléchargées depuis Azure Portal.
- tkeyexchange = [VpnType] (en anglais)
- right = [VpnServer]
- righttid = %[VpnServer]
- rightsubnet = [Routes]
La configuration finale de ce fichier ressemble à cela :
Démarrer les services ipsec :
sudo ipsec restart sudo ipsec up azure
La connexion à Azure devrait être établie avec succès, puis vous devriez être en mesure d’établir un ping et de vous connecter à vos machines virtuelles à partir de votre ordinateur local.
Félicitations ! Votre VPN point-à-site a été configuré avec succès !
Passerelles VPN : https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpngateways
FAQ VPN : https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-vpn-faq
Configurer un VPN PàS sur Linux : https://docs.microsoft.com/en-us/azure/storage/files/storage-files-configure-p2s-vpn-linux
Ecrit par Hoang Quoc Nhat TONG