Filtrer le trafic réseau avec un groupe de sécurité réseau à l’aide d’Azure CLI
Vous pouvez filtrer le trafic réseau entrant dans un sous-réseau de réseau virtuel ou qui en sort, avec un groupe de sécurité réseau. Les groupes de sécurité réseau contiennent des règles de sécurité qui filtrent le trafic réseau par adresse IP, port et protocole. Les règles de sécurité sont appliquées aux ressources déployées dans un sous-réseau. Dans cet article, vous apprendrez comment :
- Créer un groupe de sécurité réseau et les règles associées
- Créer un réseau virtuel et associer un groupe de sécurité réseau à un sous-réseau
- Déployer des machines virtuelles dans un sous-réseau
- Tester les filtres de trafic
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.0.28 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer un groupe de sécurité réseau
Un groupe de sécurité réseau contient des règles de sécurité. Les règles de sécurité spécifient une source et une destination. Les sources et les destinations peuvent être des groupes de sécurité d’application.
Créer des groupes de sécurité d’application
Tout d’abord, créez un groupe de ressources pour toutes les ressources créées dans cet article avec az group create. L’exemple suivant crée un groupe de ressources dans l’emplacement eastus :
az group create \
--name myResourceGroup \
--location eastus
Créez un groupe de sécurité d’application avec la commande az network asg create. Un groupe de sécurité d’application vous permet de regrouper des serveurs avec des exigences de filtrage de port similaires. L’exemple suivant crée deux groupes de sécurité d’application.
az network asg create \
--resource-group myResourceGroup \
--name myAsgWebServers \
--location eastus
az network asg create \
--resource-group myResourceGroup \
--name myAsgMgmtServers \
--location eastus
Créer un groupe de sécurité réseau
Créez un groupe de sécurité réseau avec la commande az network nsg create. L’exemple suivant permet de créer un groupe de sécurité réseau nommé myNsg :
# Create a network security group
az network nsg create \
--resource-group myResourceGroup \
--name myNsg
Créer des règles de sécurité
Créez une règle de sécurité avec az network nsg rule create. L’exemple suivant crée une règle qui autorise le trafic entrant à partir d’Internet vers le groupe de sécurité d’application myWebServers par les ports 80 et 443 :
az network nsg rule create \
--resource-group myResourceGroup \
--nsg-name myNsg \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "myAsgWebServers" \
--destination-port-range 80 443
L’exemple suivant crée une règle qui autorise le trafic entrant à partir d’Internet vers le groupe de sécurité d’application myMgmtServers par le port 22 :
az network nsg rule create \
--resource-group myResourceGroup \
--nsg-name myNsg \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "myAsgMgmtServers" \
--destination-port-range 22
Dans cet article, SSH (port 22) est exposé sur Internet pour la machine virtuelle myAsgMgmtServers. Pour les environnements de production, au lieu d’exposer le port 22 sur l’Internet, il est recommandé de vous connecter aux ressources Azure que vous souhaitez gérer à l’aide d’une connexion réseau VPN ou privée.
Créez un réseau virtuel
Créez un réseau virtuel avec la commande az network vnet create. L’exemple suivant crée un réseau virtuel nommé myVirtualNetwork :
az network vnet create \
--name myVirtualNetwork \
--resource-group myResourceGroup \
--address-prefixes 10.0.0.0/16
Ajoutez un sous-réseau au réseau virtuel avec la commande az network vnet subnet create. L’exemple suivant ajoute un sous-réseau nommé mySubnet au réseau virtuel et l’associe au groupe de sécurité réseau myNsg :
az network vnet subnet create \
--vnet-name myVirtualNetwork \
--resource-group myResourceGroup \
--name mySubnet \
--address-prefix 10.0.0.0/24 \
--network-security-group myNsg
Créer des machines virtuelles
Créez deux machines virtuelles dans le réseau virtuel pour pouvoir valider le filtrage du trafic à une étape ultérieure.
Créez une machine virtuelle avec la commande az vm create. L’exemple suivant crée une machine virtuelle qui servira de serveur web. L’option --asgs myAsgWebServers
amène Azure à rendre l’interface réseau qu’il crée pour la machine virtuelle membre du groupe de sécurité d’application myAsgWebServers.
L’option --nsg ""
est spécifiée pour empêcher la création par Azure d’un groupe de sécurité réseau par défaut pour l’interface réseau créée par Azure lorsqu’il crée la machine virtuelle. Pour simplifier cet article, un mot de passe est utilisé. Les clés sont généralement utilisées dans les déploiements en production. Si vous utilisez des clés, vous devez également configurer le transfert de l’agent SSH pour les étapes restantes. Pour plus d’informations, consultez la documentation associée à votre client SSH. Remplacez <replace-with-your-password>
dans la commande suivante par un mot de passe de votre choix.
adminPassword="<replace-with-your-password>"
az vm create \
--resource-group myResourceGroup \
--name myVmWeb \
--image Ubuntu2204 \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--nsg "" \
--asgs myAsgWebServers \
--admin-username azureuser \
--admin-password $adminPassword
La création de la machine virtuelle ne nécessite que quelques minutes. Une fois la machine virtuelle créée, une sortie similaire à l’exemple suivant est renvoyée :
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmWeb",
"location": "eastus",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "13.90.242.231",
"resourceGroup": "myResourceGroup"
}
Veuillez noter publicIpAddress. Cette adresse sera utilisée pour accéder à la machine virtuelle à partir d’Internet dans une prochaine étape. Créez une machine virtuelle comme un serveur d’administration :
az vm create \
--resource-group myResourceGroup \
--name myVmMgmt \
--image Ubuntu2204 \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--nsg "" \
--asgs myAsgMgmtServers \
--admin-username azureuser \
--admin-password $adminPassword
La création de la machine virtuelle ne nécessite que quelques minutes. Une fois la machine virtuelle, prenez note de la valeur de publicIpAddress dans la sortie retournée. Cette adresse est utilisée pour accéder à la machine virtuelle à la prochaine étape. Ne passez pas à l’étape suivante avant qu’Azure ait terminé la création de la machine virtuelle.
Tester les filtres de trafic
Utilisez la commande suivante pour créer une session SSH avec la machine virtuelle myVmMgmt. Remplacez <publicIpAddress> par l’adresse IP publique de votre machine virtuelle. Dans l’exemple ci-dessus, l’adresse IP est 13.90.242.231.
ssh azureuser@<publicIpAddress>
Lorsque vous êtes invité à indiquer un mot de passe, entrez le mot de passe que vous avez utilisé dans Créer des machines virtuelles.
La connexion réussit, car le port 22 autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application myAsgMgmtServers dans lequel se situe l’interface réseau attachée à la machine virtuelle myVmMgmt.
Utilisez la commande suivante pour établir une connexion SSH avec la machine virtuelle myVmWeb à partir de la machine virtuelle myVmMgmt :
ssh azureuser@myVmWeb
La connexion réussit car une règle de sécurité par défaut au sein de chaque groupe de sécurité réseau autorise le trafic par tous les ports entre toutes les adresses IP au sein d’un réseau virtuel. Vous ne pouvez pas établir une connexion SSH myVmWeb depuis Internet, car la règle de sécurité pour le myAsgWebServers n’autorise pas les données entrantes venant d’Internet sur le port 22.
Utilisez les commandes suivantes pour installer le serveur web nginx sur la machine virtuelle myVmWeb :
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
La machine virtuelle myVmWeb autorise la récupération de nginx par le trafic sortant vers Internet car une règle de sécurité par défaut autorise tout le trafic sortant vers Internet. Fermez la session SSH myVmWeb, ce qui vous laisse à l’invite de commandes username@myVmMgmt:~$
de la machine virtuelle myVmMgmt. Pour récupérer l’écran d’accueil nginx à partir de la machine virtuelle myVmWeb, entrez la commande suivante :
curl myVmWeb
Déconnectez-vous de la machine virtuelle myVmMgmt. Pour confirmer que vous pouvez accéder au serveur web myVmWeb sans être dans Azure, entrez curl <publicIpAddress>
à partir de votre propre ordinateur. La connexion réussit, car le port 80 autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application myAsgWebServers dans lequel se situe l’interface réseau attachée à la machine virtuelle myVmWeb.
Nettoyer les ressources
Quand vous n’avez plus besoin d’un groupe de ressources, utilisez az group delete pour le supprimer, ainsi que toutes les ressources qu’il contient.
az group delete --name myResourceGroup --yes
Étapes suivantes
Dans cet article, vous avez créé un groupe de sécurité réseau et vous l’avez associé à un sous-réseau d’un réseau virtuel. Pour en savoir plus sur les groupes de sécurité réseau, consultez Vue d’ensemble d’un groupe de sécurité réseau et Gérer un groupe de sécurité réseau.
Azure achemine par défaut le trafic entre les sous-réseaux. À la place, vous pouvez choisir par exemple d’acheminer le trafic entre les sous-réseaux via une machine virtuelle, agissant comme un pare-feu. Pour savoir comment procéder, consultez Créer une table de routage.