Esercizio: Configurare l'accesso di rete

Completato

In questo esercizio si configurerà l'accesso alla macchina virtuale 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. Si creerà 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.

  1. 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)"    
    
  2. 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.

  3. Come passaggio facoltativo, provare ad accedere al server Web da un browser:

    1. 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.

    2. Copiare l'indirizzo IP visualizzato negli Appunti.

    3. 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, verrà visualizzata una schermata simile alla seguente:

      Screenshot of a web browser showing an error message that says the connection timed out.

    4. 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.

  1. 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    
    

    Verrà visualizzato quanto segue:

    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.

  2. 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.

  3. 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    
    

    Verrà visualizzato quanto segue:

    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. Ciò 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).

  1. 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.

  2. 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.

  1. Eseguire lo stesso comando curl eseguito in precedenza:

    curl --connect-timeout 5 http://$IPADDRESS
    

    Verrà visualizzato quanto segue:

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
  2. Come passaggio facoltativo, aggiornare la scheda del browser che punta al server Web. Verrà visualizzato quanto segue:

    A screenshot of a web browser showing the home page from the web server. The home page displays a welcome message.

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.