Øvelse – opret og administrer netværkssikkerhedsgrupper

Fuldført

Som løsningsarkitekt for produktionsvirksomheden vil du nu begynde at flytte ERP-appen og databaseserverne til Azure. Som et første skridt skal du teste din netværkssikkerhedsplan ved hjælp af to af dine servere.

I dette undermodul skal du konfigurere en netværkssikkerhedsgruppe og sikkerhedsregler for at begrænse netværkstrafik til bestemte servere. Du ønsker, at din appserver skal kunne oprette forbindelse til databaseserveren via HTTP. Du ønsker ikke, at databaseserveren skal kunne bruge HTTP til at oprette forbindelse til appserveren.

Diagram over netværkssikkerhedsgrupper i øvelsesscenarie.

Opret en virtuel netværks- og netværkssikkerhedsgruppe

Først skal du oprette det virtuelle netværk og undernet til dine serverressourcer. Du skal derefter oprette en netværkssikkerhedsgruppe.

  1. Kør følgende kommando i Azure Cloud Shell for at tildele sandkasseressourcegruppen til variablen rg:

    rg="<rgn>[sandbox resource group name]</rgn>"
    
  2. Kør følgende kommando i Cloud Shell for at oprette de ERP-servere virtuelle netværk og -programmer undernet:

    az network vnet create \
        --resource-group $rg \
        --name ERP-servers \
        --address-prefixes 10.0.0.0/16 \
        --subnet-name Applications \
        --subnet-prefixes 10.0.0.0/24
    
  3. Hvis du vil oprette de databaser undernet, skal du køre følgende kommando i Cloud Shell:

    az network vnet subnet create \
        --resource-group $rg \
        --vnet-name ERP-servers \
        --address-prefixes 10.0.1.0/24 \
        --name Databases
    
  4. Hvis du vil oprette ERP-SERVERS-NSG netværkssikkerhedsgruppe, skal du køre følgende kommando i Cloud Shell:

    az network nsg create \
        --resource-group $rg \
        --name ERP-SERVERS-NSG
    

Opret VM'er, der kører Ubuntu

Derefter skal du oprette to VM'er med navnet AppServer og DataServer. Du installerer AppServer-Applications-undernettet og DataServerDatabases undernet. Føj VM-netværksgrænsefladerne til ERP-SERVERS-NSG netværkssikkerhedsgruppe. Hvis du derefter vil teste din netværkssikkerhedsgruppe, skal du bruge disse VM'er.

  1. Hvis du vil oprette den AppServer VM, skal du køre følgende kommando i Cloud Shell. Erstat <password> med en kompleks adgangskode for administratorkontoen.

    wget -N https://raw.githubusercontent.com/MicrosoftDocs/mslearn-secure-and-isolate-with-nsg-and-service-endpoints/master/cloud-init.yml && \
    az vm create \
        --resource-group $rg \
        --name AppServer \
        --vnet-name ERP-servers \
        --subnet Applications \
        --nsg ERP-SERVERS-NSG \
        --image Ubuntu2204 \
        --size Standard_DS1_v2 \
         --generate-ssh-keys \
        --admin-username azureuser \
        --custom-data cloud-init.yml \
        --no-wait \
        --admin-password <password>
    
  2. Hvis du vil oprette den DataServer VM, skal du køre følgende kommando i Cloud Shell. Erstat <password> med en kompleks adgangskode for administratorkontoen.

    az vm create \
        --resource-group $rg \
        --name DataServer \
        --vnet-name ERP-servers \
        --subnet Databases \
        --nsg ERP-SERVERS-NSG \
        --size Standard_DS1_v2 \
        --image Ubuntu2204 \
        --generate-ssh-keys \
        --admin-username azureuser \
        --custom-data cloud-init.yml \
         --no-wait \
        --admin-password <password>
    
  3. Det kan tage flere minutter, før VM'erne kører. Kør følgende kommando i Cloud Shell for at bekræfte, at VM'erne kører:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, Provisioned:provisioningState, Power:powerState}" \
        --output table
    

    Når oprettelsen af din VM er fuldført, får du vist følgende output:

    Name        Provisioned    Power
    ----------  -------------  ----------
    AppServer   Succeeded      VM running
    DataServer  Succeeded      VM running
    

Kontrollér standardforbindelsen

Nu skal du prøve at åbne en Secure Shell-session (SSH) til hver af dine VM'er. Husk, at du indtil videre har installeret en netværkssikkerhedsgruppe med standardregler.

  1. Hvis du vil oprette forbindelse til dine VM'er, skal du bruge SSH direkte fra Cloud Shell. For at gøre dette skal du bruge de offentlige IP-adresser, der er tildelt til dine VM'er. Hvis du vil have vist de IP-adresser, du skal bruge til at oprette forbindelse til VM'erne, skal du køre følgende kommando i Cloud Shell:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, PrivateIP:privateIps, PublicIP:publicIps}" \
        --output table
    
  2. Hvis du vil gøre det nemmere at oprette forbindelse til dine VM'er i resten af denne øvelse, skal du tildele de offentlige IP-adresser til variabler. Hvis du vil gemme den offentlige IP-adresse for AppServer- og DataServer til en variabel, skal du køre følgende kommando i Cloud Shell:

    APPSERVERIP="$(az vm list-ip-addresses \
                     --resource-group $rg \
                     --name AppServer \
                     --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                     --output tsv)"
    
    DATASERVERIP="$(az vm list-ip-addresses \
                     --resource-group $rg \
                     --name DataServer \
                     --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                     --output tsv)"
    
  3. Hvis du vil kontrollere, om du kan oprette forbindelse til din AppServer VM, skal du køre følgende kommando i Cloud Shell:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Du får vist en Connection timed out meddelelse.

  4. Hvis du vil kontrollere, om du kan oprette forbindelse til din DataServer VM, skal du køre følgende kommando i Cloud Shell:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    

    Du får den samme meddelelse om forbindelsesfejl.

Husk, at standardreglerne nægter al indgående trafik til et virtuelt netværk, medmindre denne trafik kommer fra det samme virtuelle netværk. Reglen Afvis alle indgående blokerede de indgående SSH-forbindelser, du lige har forsøgt.

indgående

Navn Prioritet Kilde-IP Destinations-IP Adgang
Tillad indgående VNet 65000 VIRTUAL_NETWORK VIRTUAL_NETWORK Tillade
Afvis alle indgående 65500 * * Benægte

Opret en sikkerhedsregel for SSH

Som du nu har oplevet, omfatter standardreglerne i din ERP-SERVERS-NSG- netværkssikkerhedsgruppe en Afvis alle indgående regel. Du skal nu tilføje en regel, så du kan bruge SSH til at oprette forbindelse til AppServer- og DataServer.

  1. Hvis du vil oprette en ny indgående sikkerhedsregel for at aktivere SSH-adgang, skal du køre følgende kommando i Cloud Shell:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name AllowSSHRule \
        --direction Inbound \
        --priority 100 \
        --source-address-prefixes '*' \
        --source-port-ranges '*' \
        --destination-address-prefixes '*' \
        --destination-port-ranges 22 \
        --access Allow \
        --protocol Tcp \
        --description "Allow inbound SSH"
    
  2. Hvis du vil kontrollere, om du nu kan oprette forbindelse til din AppServer VM, skal du køre følgende kommando i Cloud Shell:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Reglen for netværkssikkerhedsgruppen kan tage et minut eller to at træde i kraft. Hvis du modtager en meddelelse om forbindelsesfejl, skal du vente et øjeblik og prøve igen.

  3. Du bør nu kunne oprette forbindelse. Skriv yesefter meddelelsen om Are you sure you want to continue connecting (yes/no)?.

  4. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  5. Hvis du vil lukke sessionen for AppServer, skal du angive exit.

  6. Hvis du vil kontrollere, om du nu kan oprette forbindelse til din DataServer VM, skal du køre følgende kommando i Cloud Shell:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    
  7. Du bør nu kunne oprette forbindelse. Skriv yesefter meddelelsen om Are you sure you want to continue connecting (yes/no)?.

  8. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  9. Hvis du vil lukke sessionen DataServer, skal du angive exit.

Opret en sikkerhedsregel for at forhindre webadgang

Tilføj nu en regel, så AppServer- kan kommunikere med DataServer via HTTP, men DataServer kan ikke kommunikere med AppServer via HTTP. Dette er de interne IP-adresser for disse servere:

Servernavn IP-adresse
AppServer 10.0.0.4
DataServer 10.0.1.4
  1. Hvis du vil oprette en ny indgående sikkerhedsregel for at nægte HTTP-adgang via port 80, skal du køre følgende kommando i Cloud Shell:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name httpRule \
        --direction Inbound \
        --priority 150 \
        --source-address-prefixes 10.0.1.4 \
        --source-port-ranges '*' \
        --destination-address-prefixes 10.0.0.4 \
        --destination-port-ranges 80 \
        --access Deny \
        --protocol Tcp \
        --description "Deny from DataServer to AppServer on port 80"
    

Test HTTP-forbindelse mellem virtuelle maskiner

Her skal du kontrollere, om din nye regel fungerer. AppServer- skal kunne kommunikere med DataServer via HTTP. DataServer- bør ikke kunne kommunikere med AppServer- via HTTP.

  1. Hvis du vil oprette forbindelse til din AppServer VM, skal du køre følgende kommando i Cloud Shell. Kontrollér, om AppServer- kan kommunikere med DataServer via HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  3. Svaret skal indeholde en 200 OK meddelelse.

  4. Hvis du vil oprette forbindelse til din DataServer VM, skal du køre følgende kommando i Cloud Shell. Kontrollér, om DataServer kan kommunikere med AppServer via HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  6. Dette bør ikke lykkes, fordi du har blokeret adgang via port 80. Efter flere minutter skal du få en Connection timed out meddelelse. Hvis du vil stoppe kommandoen før timeout, skal du vælge Ctrl+C.

Udrul en appsikkerhedsgruppe

Opret derefter en appsikkerhedsgruppe for databaseservere, så alle servere i denne gruppe kan tildeles de samme indstillinger. Du planlægger at installere flere databaseservere og vil forhindre disse servere i at få adgang til appservere via HTTP. Når du tildeler kilder i appsikkerhedsgruppen, behøver du ikke manuelt at vedligeholde en liste over IP-adresser i netværkssikkerhedsgruppen. Du tildeler i stedet netværksgrænsefladerne for de VM'er, du vil administrere, til appsikkerhedsgruppen.

Diagram over appsikkerhedsgrupper i øvelsesscenarie.

  1. Hvis du vil oprette en ny appsikkerhedsgruppe med navnet ERP-DB-SERVERS-ASG-, skal du køre følgende kommando i Cloud Shell:

    az network asg create \
        --resource-group $rg \
        --name ERP-DB-SERVERS-ASG
    
  2. Hvis du vil knytte DataServer til appsikkerhedsgruppen, skal du køre følgende kommando i Cloud Shell:

    az network nic ip-config update \
        --resource-group $rg \
        --application-security-groups ERP-DB-SERVERS-ASG \
        --name ipconfigDataServer \
        --nic-name DataServerVMNic \
        --vnet-name ERP-servers \
        --subnet Databases
    
  3. Hvis du vil opdatere HTTP-reglen i ERP-SERVERS-NSG netværkssikkerhedsgruppe, skal du køre følgende kommando i Cloud Shell. Den skal referere til sikkerhedsgruppen ERP-DB-Servers app.

    az network nsg rule update \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name httpRule \
        --direction Inbound \
        --priority 150 \
        --source-address-prefixes "" \
        --source-port-ranges '*' \
        --source-asgs ERP-DB-SERVERS-ASG \
        --destination-address-prefixes 10.0.0.4 \
        --destination-port-ranges 80 \
        --access Deny \
        --protocol Tcp \
        --description "Deny from DataServer to AppServer on port 80 using application security group"
    

Test den opdaterede HTTP-sikkerhedsregel

  1. Hvis du vil oprette forbindelse til din AppServer VM, skal du køre følgende kommando i Cloud Shell. Kontrollér, om AppServer- kan kommunikere med DataServer via HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  3. Som før skal svaret indeholde en 200 OK meddelelse. Indstillingerne for appsikkerhedsgruppen kan tage et minut eller to at træde i kraft. Hvis du ikke modtager meddelelsen 200 OK første gang, skal du vente et øjeblik og prøve igen.

  4. Hvis du vil oprette forbindelse til din DataServer, skal du køre følgende kommando i Cloud Shell. Kontrollér, om DataServer kan kommunikere med AppServer via HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Angiv den adgangskode, du definerede, da du oprettede den virtuelle maskine.

  6. Som før bør dette ikke lykkes, fordi du har blokeret adgang via port 80. Efter flere minutter skal du få en Connection timed out meddelelse. Hvis du vil stoppe kommandoen før timeout, skal du vælge Ctrl+C.

Du har nu bekræftet, at reglen for netværkssikkerhedsgruppen fungerer ved hjælp af en appsikkerhedsgruppe på samme måde, som da du brugte en kilde-IP-adresse. Hvis vi har tilføjet flere dataservere, kan vi nemt sikre, at de har den korrekte netværkssikkerhed, ved at føje de nye servere til ERP-DB-SERVERS-ASG-.