Esercizio: Configurare l'accesso di rete
In questo esercizio si configura l'accesso alla macchina virtuale (VM) creata in precedenza in questo modulo.
Importante
La sandbox di Microsoft Learn dovrebbe essere ancora in esecuzione. Se si è verificato il timeout della sandbox, è necessario ripetere l'esercizio precedente (Esercizio - Creare una macchina virtuale di Azure).
Per verificare che la macchina virtuale creata in precedenza sia ancora in esecuzione, usare il comando seguente:
az vm list
Se si riceve una risposta vuota []
, è necessario completare nuovamente il primo esercizio in questo modulo. Se nel risultato compaiono la macchina virtuale corrente e le relative impostazioni, è possibile continuare.
Al momento la macchina virtuale creata e in cui è stato installato Nginx non è accessibile da Internet. Viene creato un gruppo di sicurezza di rete che cambia questo comportamento consentendo l'accesso HTTP in ingresso sulla porta 80.
Attività 1: Accedere al server Web
In questa procedura si ottiene l'indirizzo IP per la macchina virtuale e si tenta di accedere alla home page del server Web.
Eseguire il comando
az vm list-ip-addresses
seguente per ottenere l'indirizzo IP della macchina virtuale e archiviare il risultato come variabile Bash:IPADDRESS="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name my-vm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Eseguire il comando
curl
seguente per scaricare la home page:curl --connect-timeout 5 http://$IPADDRESS
L'argomento
--connect-timeout
specifica di consentire fino a cinque secondi per l'attivazione della connessione. Dopo cinque secondi viene visualizzato un messaggio di errore che segnala il timeout della connessione:curl: (28) Connection timed out after 5001 milliseconds
Questo messaggio indica che la macchina virtuale non è diventata accessibile entro il periodo di timeout.
Come passaggio facoltativo, provare ad accedere al server Web da un browser:
Eseguire il comando seguente per stampare l'indirizzo IP della macchina virtuale nella console:
echo $IPADDRESS
Viene visualizzato un indirizzo IP, ad esempio 23.102.42.235.
Copiare l'indirizzo IP visualizzato negli Appunti.
Aprire una nuova scheda del browser e passare al server Web. Dopo alcuni istanti si noterà che la connessione non viene stabilita. Se si attende il timeout del browser, viene visualizzato qualcosa di simile a quanto segue:
Tenere aperta questa scheda nel browser per un uso successivo.
Attività 2: Elencare le regole dei gruppi di sicurezza di rete correnti
Il server Web non è accessibile. Per scoprirne il motivo, verranno esaminate le regole dei gruppi di sicurezza di rete correnti.
Eseguire il comando
az network nsg list
seguente per elencare i gruppi di sicurezza di rete associati alla macchina virtuale:az network nsg list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --query '[].name' \ --output tsv
Viene visualizzato questo output:
my-vmNSG
Ogni macchina virtuale in Azure è associata ad almeno un gruppo di sicurezza di rete. In questo caso, Azure ha creato un gruppo di sicurezza di rete con il nome my-vmNSG.
Eseguire il comando
az network nsg rule list
seguente per elencare le regole associate al gruppo di sicurezza di rete denominato my-vmNSG:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG
Nell'output viene visualizzato un blocco di testo esteso in formato JSON. Nel passaggio successivo verrà eseguito un comando simile che facilita la lettura di questo output.
Eseguire il comando
az network nsg rule list
una seconda volta. Questa volta, usare l'argomento--query
per recuperare solo il nome, la priorità, le porte interessate e l'accesso (consentito o negato) per ogni regola. L'argomento--output
formatta l'output come tabella in modo che sia facile da leggere.az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
Viene visualizzato questo output:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow
Si può notare la regola predefinita default-allow-ssh. Questa regola consente le connessioni in ingresso sulla porta 22 (SSH). SSH (Secure Shell) è un protocollo usato in Linux per consentire agli amministratori di accedere al sistema in modalità remota. La priorità di questa regola è 1000. Le regole vengono elaborate in ordine di priorità, con i numeri inferiori elaborati prima dei numeri più alti.
Per impostazione predefinita, un gruppo di sicurezza di rete di una macchina virtuale Linux consente l'accesso alla rete solo sulla porta 22. Questa porta consente agli amministratori di accedere al sistema. È anche necessario consentire le connessioni in ingresso sulla porta 80, che consente l'accesso tramite HTTP.
Attività 3: Creare la regola di sicurezza di rete
In questa parte dell'esercizio verrà creata una regola di sicurezza di rete che consente l'accesso in ingresso sulla porta 80 (HTTP).
Eseguire il comando
az network nsg rule create
seguente per creare una regola denominata allow-http che consente l'accesso in ingresso sulla porta 80:az network nsg rule create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --name allow-http \ --protocol tcp \ --priority 100 \ --destination-port-range 80 \ --access Allow
Ai fini dell'esercizio, la priorità viene impostata su 100. In questo caso, la priorità non è rilevante. È necessario prendere in considerazione la priorità in presenza di intervalli di porte sovrapposti.
Per verificare la configurazione, eseguire
az network nsg rule list
per visualizzare l'elenco aggiornato di regole:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
Vengono visualizzate sia la regola default-allow-ssh che la nuova regola, allow-http:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow allow-http 100 80 Allow
Attività 4: Accedere di nuovo al server Web
Ora che è stato configurato l'accesso di rete alla porta 80, provare ad accedere al server Web una seconda volta.
Nota
Dopo avere aggiornato il gruppo di sicurezza di rete, possono essere necessari alcuni minuti prima della propagazione delle regole aggiornate. Riprovare a eseguire il passaggio successivo, con pause tra i tentativi, fino a quando non si ottengono i risultati desiderati.
Eseguire lo stesso comando
curl
eseguito in precedenza:curl --connect-timeout 5 http://$IPADDRESS
Viene visualizzata questa risposta:
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
Come passaggio facoltativo, aggiornare la scheda del browser che punta al server Web. Viene visualizzata la home page:
Congratulazioni. In pratica, è possibile creare un gruppo di sicurezza di rete autonomo che includa le regole di accesso alla rete in ingresso e in uscita necessarie. In presenza di più macchine virtuali con lo stesso scopo, è possibile assegnare tale gruppo di sicurezza di rete a ogni macchina virtuale al momento della creazione. Questa tecnica consente di controllare l'accesso alla rete per più macchine virtuali con un unico set centralizzato di regole.
Eseguire la pulizia
La sandbox esegue automaticamente la pulizia delle risorse al termine di questo modulo.
Quando si lavora nella propria sottoscrizione, al termine di un progetto è buona norma determinare se le risorse create sono ancora necessarie. Le risorse che rimangono in esecuzione hanno un costo. È possibile eliminare risorse singole oppure gruppi di risorse per eliminare l'intero set di risorse.