Oefening: Netwerkbeveiligingsgroepen maken en beheren
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.
Een virtueel netwerk en netwerkbeveiligingsgroep maken
Eerst maakt u het virtuele netwerk en subnetten voor uw serverresources. Vervolgens maakt u een netwerkbeveiligingsgroep.
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>"
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
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
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.
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>
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>
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.
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
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)"
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
.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.
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"
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.
U moet nu verbinding kunnen maken. Na het bericht
Are you sure you want to continue connecting (yes/no)?
voert uyes
in.Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
Als u de AppServer-sessie wilt sluiten, voert u het volgende in
exit
.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
U moet nu verbinding kunnen maken. Na het bericht
Are you sure you want to continue connecting (yes/no)?
voert uyes
in.Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
Voer in om de DataServer
exit
-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 |
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.
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'
Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
Het antwoord moet een bericht
200 OK
bevatten.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'
Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
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.
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
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
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
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'
Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
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 bericht200 OK
in eerste instantie niet ontvangt, wacht dan even en probeer het opnieuw.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'
Voer het wachtwoord in dat u hebt gedefinieerd tijdens het maken van de virtuele machine.
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.