Oefening: Netwerkbeveiligingsgroepen maken en beheren

Voltooid

Als oplossingsarchitect voor het productiebedrijf wilt u nu beginnen met het verplaatsen van de ERP-app en databaseservers naar Azure. Als eerste stap gaat u uw netwerkbeveiligingsplan testen met behulp van twee van uw servers.

In dit onderdeel configureert u een netwerkbeveiligingsgroep en beveiligingsregels om netwerkverkeer te beperken tot specifieke servers. U wilt dat uw app-server via HTTP verbinding kan maken met uw databaseserver. U wilt niet dat de databaseserver HTTP kan gebruiken om verbinding te maken met de app-server.

Diagram van het oefeningsscenario netwerkbeveiligingsgroepen.

Een virtueel netwerk en netwerkbeveiligingsgroep maken

Eerst maakt u het virtuele netwerk en subnetten voor uw serverresources. Vervolgens maakt u een netwerkbeveiligingsgroep.

  1. Voer in Azure Cloud Shell de volgende opdracht uit om de sandbox-resourcegroep toe te wijzen aan de variabele rg:

    rg="<rgn>[sandbox resource group name]</rgn>"
    
  2. Als u het virtuele ERP-servers-netwerk en het subnet Toepassingen wilt maken, voert u de volgende opdracht uit in Cloud Shell:

    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. Voer de volgende opdracht uit in Cloud Shell om het subnet Databases te maken:

    az network vnet subnet create \
        --resource-group $rg \
        --vnet-name ERP-servers \
        --address-prefixes 10.0.1.0/24 \
        --name Databases
    
  4. Voer de volgende opdracht uit in Cloud Shell om de ERP-SERVERS-NSG-netwerkbeveiligingsgroep te maken:

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

VM's maken waarop Ubuntu wordt uitgevoerd

Vervolgens maakt u twee VM's met de naam AppServer en DataServer. U implementeert AppServer naar het subnet Toepassingen en DataServer naar het subnet Databases. Voeg de VM-netwerkinterfaces toe aan de netwerkbeveiligingsgroep ERP-SERVERS-NSG. Gebruik vervolgens deze VM's voor het testen van uw netwerkbeveiligingsgroep.

  1. Voer de volgende opdracht uit in Cloud Shell om de AppServer-VM te bouwen. Vervang voor het beheerdersaccount door <password> een complex wachtwoord.

    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. Als u de DataServer-VM wilt bouwen, voert u de volgende opdracht uit in Cloud Shell. Vervang voor het beheerdersaccount door <password> een complex wachtwoord.

    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. Het kan enkele minuten duren voordat de virtuele machines gereed zijn voor uitvoering. Voer de volgende opdracht uit in Cloud Shell om te bevestigen dat de VM's worden uitgevoerd:

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

    Wanneer het maken van de VIRTUELE machine is voltooid, ziet u de volgende uitvoer:

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

Controleer de standaardverbinding

Nu probeert u een SSH-sessie (Secure Shell) te openen in elk van uw VM's. Vergeet niet dat u tot nu toe een netwerkbeveiligingsgroep met standaardregels hebt geïmplementeerd.

  1. Gebruik SSH rechtstreeks vanuit Cloud Shell om verbinding met uw VM's te maken. Hiervoor hebt u de openbare IP-adressen nodig die aan uw VM's zijn toegewezen. Voer de volgende opdracht uit in Cloud Shell om de IP-adressen weer te geven die u gebruikt om verbinding te maken met de VM's:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, PrivateIP:privateIps, PublicIP:publicIps}" \
        --output table
    
  2. Wijs de openbare IP-adressen toe aan variabelen om het gemakkelijker te maken om verbinding te maken met uw VM's tijdens de rest van deze oefening. Voer de volgende opdracht uit in Cloud Shell om het openbare IP-adres van AppServer en DataServer op te slaan in een variabele:

    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. Als u wilt controleren of u verbinding kunt maken met uw AppServer-VM , voert u de volgende opdracht uit in Cloud Shell:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    U krijgt een bericht Connection timed out.

  4. Als u wilt controleren of u verbinding kunt maken met uw DataServer-VM , voert u de volgende opdracht uit in Cloud Shell:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    

    U krijgt dezelfde melding dat de verbinding is verbroken.

Vergeet niet dat de standaardregels al het inkomende verkeer in een virtueel netwerk weigeren, tenzij dit verkeer afkomstig is van hetzelfde virtuele netwerk. De regel ​​Al het inkomende verkeer weigeren heeft de inkomende SSH-verbindingen geblokkeerd die u zojuist hebt geprobeerd.

Inkomend

Naam Prioriteit Bron-IP Doel-IP Access
VNet inkomend verkeer toestaan 65000 VIRTUAL_NETWORK VIRTUAL_NETWORK Toestaan
Al het inkomende verkeer weigeren 65500 * * Weigeren

Een beveiligingsregel maken voor SSH

Zoals u hebt gezien, bevatten de standaardregels in uw netwerkbeveiligingsgroep ERP-SERVERS-NSG een regel Al het inkomende verkeer weigeren. U voegt nu een regel toe zodat u SSH kunt gebruiken om verbinding te maken met AppServer en DataServer.

  1. Als u een nieuwe binnenkomende beveiligingsregel wilt maken om SSH-toegang in te schakelen, voert u de volgende opdracht uit in 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. Als u wilt controleren of u nu verbinding kunt maken met uw AppServer-VM , voert u de volgende opdracht uit in Cloud Shell:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Het kan een minuut of twee duren voordat de regel voor de netwerkbeveiligingsgroep van kracht wordt. Als u een foutbericht over een verbindingsfout ontvangt, wacht u even en probeert u het opnieuw.

  3. U moet nu verbinding kunnen maken. Na het bericht Are you sure you want to continue connecting (yes/no)? voert u yes in.

  4. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  5. Als u de AppServer-sessie wilt sluiten, voert u het volgende in exit.

  6. Als u wilt controleren of u nu verbinding kunt maken met uw DataServer-VM , voert u de volgende opdracht uit in Cloud Shell:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    
  7. U moet nu verbinding kunnen maken. Na het bericht Are you sure you want to continue connecting (yes/no)? voert u yes in.

  8. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  9. Voer in om de DataServerexit-sessie af te sluiten.

Een beveiligingsregel maken om webtoegang te voorkomen

Voeg nu een regel toe zodat AppServer kan communiceren met DataServer via HTTP, maar DataServer niet kan communiceren met AppServer via HTTP. Dit zijn de interne IP-adressen voor deze servers:

Servernaam IP-adres
AppServer 10.0.0.4
DataServer 10.0.1.4
  1. Als u een nieuwe beveiligingsregel voor inkomend verkeer wilt maken om HTTP-toegang via poort 80 te weigeren, voert u de volgende opdracht uit in 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"
    

HTTP-connectiviteit tussen virtuele machines testen

Hier moet u controleren of uw nieuwe regel werkt. AppServer moet kunnen communiceren met DataServer via HTTP. DataServer mag niet kunnen communiceren met AppServer via HTTP.

  1. Voer in Cloud Shell de volgende opdracht uit om verbinding te maken met uw AppServer-VM . Controleer of AppServer kan communiceren met DataServer via HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  3. Het antwoord moet een bericht 200 OK bevatten.

  4. Voer in Cloud Shell de volgende opdracht uit om verbinding te maken met uw DataServer-VM . Controleer of DataServer kan communiceren met AppServer via HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  6. Dit mag niet lukken omdat u de toegang via poort 80 hebt geblokkeerd. Na enkele minuten krijgt u een bericht Connection timed out. Als u de opdracht vóór de time-out wilt stoppen, selecteert u Ctrl+C.

Een app-beveiligingsgroep implementeren

Maak vervolgens een app-beveiligingsgroep voor databaseservers, zodat aan alle servers in deze groep dezelfde instellingen kunnen worden toegewezen. U bent van plan meer databaseservers te implementeren en wilt voorkomen dat deze servers via HTTP toegang krijgen tot app-servers. Door bronnen toe te wijzen in de beveiligingsgroep voor apps, hoeft u niet handmatig een lijst met IP-adressen in de netwerkbeveiligingsgroep bij te houden. In plaats daarvan wijst u de netwerkinterfaces van de VM's die u wilt beheren toe aan de app-beveiligingsgroep.

Diagram van oefeningsscenario's voor app-beveiligingsgroepen.

  1. Als u een nieuwe app-beveiligingsgroep met de naam ERP-DB-SERVERS-ASG wilt maken, voert u de volgende opdracht uit in Cloud Shell:

    az network asg create \
        --resource-group $rg \
        --name ERP-DB-SERVERS-ASG
    
  2. Als u DataServer wilt koppelen aan de app-beveiligingsgroep, voert u de volgende opdracht uit in 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. Voer de volgende opdracht uit in Cloud Shell om de HTTP-regel in de netwerkbeveiligingsgroep ERP-SERVERS-NSG bij te werken. Hierin moet worden verwezen naar de app-beveiligingsgroep ERP-DB-Servers.

    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"
    

De bijgewerkte HTTP-beveiligingsregel testen

  1. Voer de volgende opdracht uit in Cloud Shell om verbinding te maken met uw AppServer-VM . Controleer of AppServer kan communiceren met DataServer via HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  3. Net als hierboven moet het antwoord een bericht 200 OK bevatten. Het kan een paar minuten duren voordat de instellingen van de app-beveiligingsgroep zijn doorgevoerd. Als u het bericht 200 OK in eerste instantie niet ontvangt, wacht dan even en probeer het opnieuw.

  4. Voer de volgende opdracht uit in Cloud Shell om verbinding te maken met uw DataServer. Controleer of DataServer kan communiceren met AppServer via HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.

  6. Zoals eerder genoemd mag het niet lukken omdat u de toegang via poort 80 hebt geblokkeerd. Na enkele minuten krijgt u een bericht Connection timed out. Als u de opdracht vóór de time-out wilt stoppen, selecteert u Ctrl+C.

U hebt nu bevestigd dat de regel voor uw netwerkbeveiligingsgroep op dezelfde manier werkt als wanneer u een bron-IP-adres hebt gebruikt. Als we extra gegevensservers hebben toegevoegd, kunnen we er eenvoudig voor zorgen dat ze over de juiste netwerkbeveiliging beschikken door de nieuwe servers toe te voegen aan de ERP-DB-SERVERS-ASG.