Netwerkverkeer filteren met een netwerkbeveiligingsgroep met behulp van de Azure CLI
U kunt het netwerkverkeer inkomend in en uitgaand naar een subnet van een virtueel netwerk filteren met een netwerkbeveiligingsgroep. Netwerkbeveiligingsgroepen bevatten beveiligingsregels die netwerkverkeer filteren op IP-adres, poort en protocol. Beveiligingsregels worden toegepast op resources die zijn geïmplementeerd in een subnet. In dit artikel leert u het volgende:
- Een netwerkbeveiligingsgroep en beveiligingsregels maken
- Een virtueel netwerk maken en een netwerkbeveiligingsgroep koppelen aan een subnet
- Virtuele machines (VM) implementeren in een subnet
- Verkeersfilters testen
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Voor dit artikel is versie 2.0.28 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Een netwerkbeveiligingsgroep maken
Een netwerkbeveiligingsgroep bevat beveiligingsregels. Beveiligingsregels geven een bron en doel op. Bronnen en doelen kunnen toepassingsbeveiligingsgroepen zijn.
Toepassingsbeveiligingsgroepen maken
Maak eerst een resourcegroep voor alle resources die in dit artikel zijn gemaakt met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam gemaakt op de locatie eastus:
az group create \
--name myResourceGroup \
--location eastus
Maak een toepassingsbeveiligingsgroep met az network asg create. Met een toepassingsbeveiligingsgroep kunt u servers met vergelijkbare poortfiltervereisten groeperen. In het volgende voorbeeld worden twee toepassingsbeveiligingsgroepen gemaakt.
az network asg create \
--resource-group myResourceGroup \
--name myAsgWebServers \
--location eastus
az network asg create \
--resource-group myResourceGroup \
--name myAsgMgmtServers \
--location eastus
Een netwerkbeveiligingsgroep maken
Maak een netwerkbeveiligingsgroep met az network nsg create. In het volgende voorbeeld wordt een netwerkbeveiligingsgroep met de naam myNsg gemaakt:
# Create a network security group
az network nsg create \
--resource-group myResourceGroup \
--name myNsg
Beveiligingsregels maken
Maak een beveiligingsregel met az network nsg rule create. In het volgende voorbeeld wordt een regel gemaakt die inkomend verkeer van internet naar de toepassingsbeveiligingsgroep myWebServers toestaat via de poorten 80 en 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
In het volgende voorbeeld wordt een regel gemaakt waarmee verkeer van internet naar de toepassingsbeveiligingsgroep myMgmtServers via poort 22 is toegestaan:
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
In dit artikel wordt SSH (poort 22) blootgesteld aan internet voor de VM myAsgMgmtServers . Voor productieomgevingen, in plaats van poort 22 beschikbaar te maken voor internet, is het raadzaam verbinding te maken met Azure-resources die u wilt beheren met behulp van een VPN- of privénetwerkverbinding.
Een virtueel netwerk maken
Maak een virtueel netwerk met az network vnet create. In het volgende voorbeeld wordt een virtueel netwerk met de naam myVirtualNetwork gemaakt:
az network vnet create \
--name myVirtualNetwork \
--resource-group myResourceGroup \
--address-prefixes 10.0.0.0/16
Voeg een subnet toe aan een virtueel netwerk met az network vnet subnet create. In het volgende voorbeeld wordt een subnet met de naam mySubnet toegevoegd aan het virtuele netwerk en wordt de netwerkbeveiligingsgroep myNsg hieraan gekoppeld:
az network vnet subnet create \
--vnet-name myVirtualNetwork \
--resource-group myResourceGroup \
--name mySubnet \
--address-prefix 10.0.0.0/24 \
--network-security-group myNsg
Virtuele machines maken
Maak twee virtuele machines in het virtuele netwerk, zodat u het filteren van verkeer in een latere stap kunt controleren.
Maak een VM met az vm create. In het volgende voorbeeld wordt een virtuele machine gemaakt die als een webserver fungeert. De --asgs myAsgWebServers
optie zorgt ervoor dat Azure de netwerkinterface maakt voor de VIRTUELE machine een lid van de toepassingsbeveiligingsgroep myAsgWebServers .
De --nsg ""
optie wordt opgegeven om te voorkomen dat Azure een standaardnetwerkbeveiligingsgroep maakt voor de netwerkinterface die Azure maakt wanneer de virtuele machine wordt gemaakt. Om dit artikel te stroomlijnen, wordt een wachtwoord gebruikt. Sleutels worden doorgaans gebruikt in productie-implementaties. Als u sleutels gebruikt, moet u ook het doorsturen van de SSH-agent configureren voor de resterende stappen. Zie de documentatie voor uw SSH-client voor meer informatie. Vervang <replace-with-your-password>
in de volgende opdracht door een wachtwoord van uw keuze.
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
Het maken van de virtuele machine duurt een paar minuten. Nadat de VIRTUELE machine is gemaakt, wordt uitvoer geretourneerd die vergelijkbaar is met het volgende voorbeeld:
{
"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"
}
Let op het openbare IP-adres. Dit adres wordt in een latere stap gebruikt voor toegang tot de virtuele machine vanaf internet. Maak een VM die fungeert als een beheerserver:
az vm create \
--resource-group myResourceGroup \
--name myVmMgmt \
--image Ubuntu2204 \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--nsg "" \
--asgs myAsgMgmtServers \
--admin-username azureuser \
--admin-password $adminPassword
Het maken van de virtuele machine duurt een paar minuten. Nadat de virtuele machine is gemaakt, noteert u het publicIpAddress in de geretourneerde uitvoer. Dit adres wordt gebruikt voor toegang tot de VIRTUELE machine in de volgende stap. Ga pas verder met de volgende stap als Azure klaar is met het maken van de virtuele machine.
Verkeersfilters testen
Gebruik de volgende opdracht om een SSH-sessie te maken met de vm myVmMgmt . Vervang <publicIpAddress> door het openbare IP-adres van uw VIRTUELE machine. In het bovenstaande voorbeeld is het IP-adres 13.90.242.231.
ssh azureuser@<publicIpAddress>
Wanneer u om een wachtwoord wordt gevraagd, voert u het wachtwoord in dat u hebt ingevoerd in Virtuele machines maken.
De verbinding slaagt, omdat poort 22 binnenkomend van internet is toegestaan naar de toepassingsbeveiligingsgroep myAsgMgmtServers waarin de netwerkinterface is gekoppeld aan de vm myVmMgmt .
Gebruik de volgende opdracht om SSH naar de myVmWeb-VM te gaan vanaf de vm myVmMgmt :
ssh azureuser@myVmWeb
De verbinding slaagt omdat een standaardbeveiligingsregel binnen elke netwerkbeveiligingsgroep verkeer via alle poorten tussen alle IP-adressen binnen een virtueel netwerk toestaat. U kunt geen SSH naar de myVmWeb-VM vanaf internet omdat de beveiligingsregel voor de myAsgWebServers poort 22 niet toestaat vanuit internet.
Gebruik de volgende opdrachten om de nginx-webserver te installeren op de vm myVmWeb :
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
De vm myVmWeb is uitgaand naar internet toegestaan om nginx op te halen omdat met een standaardbeveiligingsregel al het uitgaande verkeer naar internet is toegestaan. Sluit de myVmWeb SSH-sessie af, waardoor u bij de username@myVmMgmt:~$
prompt van de vm myVmMgmt wordt weergegeven. Voer de volgende opdracht in om het welkomstscherm van nginx op te halen van de vm myVmWeb :
curl myVmWeb
Afmelding van de vm myVmMgmt . Als u wilt bevestigen dat u toegang hebt tot de myVmWeb-webserver van buiten Azure, voert u dit curl <publicIpAddress>
in vanaf uw eigen computer. De verbinding slaagt, omdat poort 80 binnenkomend van internet is toegestaan naar de toepassingsbeveiligingsgroep myAsgWebServers waarin de netwerkinterface die is gekoppeld aan de myVmWeb-VM zich bevindt.
Resources opschonen
Wanneer u deze niet meer nodig hebt, gebruikt u az group delete om de resourcegroep en alle resources die deze bevat te verwijderen.
az group delete --name myResourceGroup --yes
Volgende stappen
In dit artikel hebt u een netwerkbeveiligingsgroep gemaakt en gekoppeld aan een subnet van een virtueel netwerk. Zie Overzicht van netwerkbeveiligingsgroepen en Een beveiligingsgroep beheren voor meer informatie over netwerkbeveiligingsgroepen.
Azure routeert standaard verkeer tussen subnetten. In plaats daarvan kunt u verkeer routeren tussen subnetten via een virtuele machine, die bijvoorbeeld als een firewall fungeert. Zie Een routetabel maken voor meer informatie.