Filtrera nätverkstrafik med en nätverkssäkerhetsgrupp med hjälp av Azure CLI

Du kan filtrera inkommande och utgående nätverkstrafik till och från ett undernät i ett virtuellt nätverk med en nätverkssäkerhetsgrupp. Nätverkssäkerhetsgrupper innehåller säkerhetsregler som filtrerar nätverkstrafik efter IP-adress, port och protokoll. Säkerhetsregler tillämpas på resurser som har distribuerats i ett undernät. I den här artikeln kan du se hur du:

  • Skapa en nätverkssäkerhetsgrupp och säkerhetsregler
  • Skapa ett virtuellt nätverk och associera en nätverkssäkerhetsgrupp med ett undernät
  • Distribuera virtuella datorer (VM) i ett undernät
  • Testa trafikfilter

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

  • Den här artikeln kräver version 2.0.28 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Skapa en nätverkssäkerhetsgrupp

En nätverkssäkerhetsgrupp innehåller säkerhetsregler. Säkerhetsregler anger en källa och ett mål. Källor och mål kan vara programsäkerhetsgrupper.

Skapa programsäkerhetsgrupper

Skapa först en resursgrupp för alla resurser som skapas i den här artikeln med az group create. I följande exempel skapas en resursgrupp på platsen eastus:

az group create \
  --name myResourceGroup \
  --location eastus

Skapa en programsäkerhetsgrupp med az network asg create. En programsäkerhetsgrupp gör att du kan gruppera servrar med liknande portfiltreringskrav. I följande exempel skapas två programsäkerhetsgrupper.

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgWebServers \
  --location eastus

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgMgmtServers \
  --location eastus

Skapa en nätverkssäkerhetsgrupp

Skapa en nätverkssäkerhetsgrupp med az network nsg create. I följande exempel skapas en nätverkssäkerhetsgrupp med namnet myNsg:

# Create a network security group
az network nsg create \
  --resource-group myResourceGroup \
  --name myNsg

Skapa säkerhetsregler

Skapa en säkerhetsregel med az network nsg rule create. I följande exempel skapas en regel som tillåter inkommande trafik från Internet till programsäkerhetsgruppen myWebServers via port 80 och 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

I följande exempel skapas en regel som tillåter inkommande trafik från Internet till programsäkerhetsgruppen myMgmtServers via 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

I den här artikeln exponeras SSH (port 22) på Internet för den virtuella datorn myAsgMgmtServers . För produktionsmiljöer rekommenderar vi att du ansluter till Azure-resurser som du vill hantera med hjälp av en VPN- eller privat nätverksanslutning i stället för att exponera port 22 på Internet.

Skapa ett virtuellt nätverk

Skapa ett virtuellt nätverk med kommandot az network vnet create. I följande exempel skapas ett virtuellt nätverk med namnet myVirtualNetwork:

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefixes 10.0.0.0/16

Lägg till ett undernät i ett virtuellt nätverk med az network vnet subnet create. I följande exempel läggs ett undernät med namnet mySubnet till i det virtuella nätverket och nätverkssäkerhetsgruppen myNsg associeras med det:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name mySubnet \
  --address-prefix 10.0.0.0/24 \
  --network-security-group myNsg

Skapa virtuella datorer

Skapa två virtuella datorer i det virtuella nätverket så att du kan verifiera trafikfiltrering i ett senare steg.

Skapa en virtuell dator med az vm create. I följande exempel skapas en virtuell dator som fungerar som en webbserver. Alternativet --asgs myAsgWebServers gör att Azure gör nätverksgränssnittet som skapas för den virtuella datorn till medlem i programsäkerhetsgruppen myAsgWebServers .

Alternativet --nsg "" har angetts för att förhindra att Azure skapar en standardnätverkssäkerhetsgrupp för nätverksgränssnittet som Azure skapar när den virtuella datorn skapas. För att effektivisera den här artikeln används ett lösenord. Nycklar används vanligtvis i produktionsdistributioner. Om du använder nycklar måste du även konfigurera SSH-agentvidarebefordring för de återstående stegen. Mer information finns i dokumentationen för din SSH-klient. Ersätt <replace-with-your-password> i följande kommando med ett lösenord som du väljer.

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

Det tar några minuter att skapa den virtuella datorn. När den virtuella datorn har skapats returneras utdata som liknar följande exempel:

{
  "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"
}

Anteckna publicIpAddress. Den här adressen används för att komma åt den virtuella datorn från Internet i ett senare steg. Skapa en virtuell dator som fungerar som en hanteringsserver:

az vm create \
  --resource-group myResourceGroup \
  --name myVmMgmt \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgMgmtServers \
  --admin-username azureuser \
  --admin-password $adminPassword

Det tar några minuter att skapa den virtuella datorn. När den virtuella datorn har skapats noterar du publicIpAddress i de returnerade utdata. Den här adressen används för att komma åt den virtuella datorn i nästa steg. Fortsätt inte med nästa steg förrän Azure har skapat den virtuella datorn.

Testa trafikfilter

Använd kommandot som följer för att skapa en SSH-session med den virtuella datorn myVmMgmt . Ersätt <publicIpAddress> med den offentliga IP-adressen för den virtuella datorn. I exemplet ovan är IP-adressen 13.90.242.231.

ssh azureuser@<publicIpAddress>

När du uppmanas att ange ett lösenord anger du det lösenord som du angav i Skapa virtuella datorer.

Anslutningen lyckas eftersom port 22 tillåts inkommande från Internet till programsäkerhetsgruppen myAsgMgmtServers som nätverksgränssnittet som är kopplat till den virtuella datorn myVmMgmt finns i.

Använd följande kommando för att SSH till den virtuella datorn myVmWeb från den virtuella datorn myVmMgmt :

ssh azureuser@myVmWeb

Anslutningen lyckas eftersom en standardsäkerhetsregel i varje nätverkssäkerhetsgrupp tillåter trafik via alla portar mellan alla IP-adresser i ett virtuellt nätverk. Du kan inte SSH till den virtuella datorn myVmWeb från Internet eftersom säkerhetsregeln för myAsgWebServers inte tillåter inkommande port 22 från Internet.

Använd följande kommandon för att installera nginx-webbservern på den virtuella datorn myVmWeb :

# Update package source
sudo apt-get -y update

# Install NGINX
sudo apt-get -y install nginx

Den virtuella datorn myVmWeb tillåts utgående till Internet för att hämta nginx eftersom en standardsäkerhetsregel tillåter all utgående trafik till Internet. Avsluta myVmWeb SSH-sessionen, som lämnar dig i username@myVmMgmt:~$ kommandotolken för den virtuella datorn myVmMgmt. Om du vill hämta välkomstskärmen för nginx från den virtuella datorn myVmWeb anger du följande kommando:

curl myVmWeb

Utloggning av den virtuella datorn myVmMgmt . Bekräfta att du kan komma åt myVmWeb-webbservern utanför Azure genom att ange curl <publicIpAddress> från din egen dator. Anslutningen lyckas eftersom port 80 tillåts inkommande från Internet till programsäkerhetsgruppen myAsgWebServers som nätverksgränssnittet som är kopplat till den virtuella datorn myVmWeb finns i.

Rensa resurser

När den inte längre behövs använder du az group delete för att ta bort resursgruppen och alla resurser som den innehåller.

az group delete --name myResourceGroup --yes

Nästa steg

I den här artikeln har du skapat en nätverkssäkerhetsgrupp och associerat den med ett virtuellt nätverksundernät. Mer information om nätverkssäkerhetsgrupper finns i Översikt över nätverkssäkerhetsgrupper och Hantera en nätverkssäkerhetsgrupp.

Azure dirigerar som standard trafik mellan undernät. Du kan i stället välja att exempelvis dirigera trafik mellan undernät via en virtuell dator, som fungerar som en brandvägg. Mer information finns i Skapa en routningstabell.