Esercitazione: Creare un gateway applicazione con un web application firewall tramite il portale di Azure

Questa esercitazione illustra come usare il portale di Azure per creare un gateway applicazione con un web application firewall (WAF). Il WAF usa regole di OWASP per proteggere l'applicazione. Queste regole includono la protezione contro attacchi di tipo SQL injection, attacchi tramite script da altri siti (XSS) e hijack delle sessioni. Al termine della creazione, si testa il gateway applicazione per verificare che funzioni correttamente. Con il gateway applicazione di Azure si indirizza il traffico Web dell'applicazione a risorse specifiche assegnando listener alle porte, creando regole e aggiungendo risorse a un pool back-end. Per semplicità, questa esercitazione usa una semplice configurazione con un indirizzo IP front-end pubblico, un listener di base per ospitare un singolo sito in questo gateway applicazione, due macchine virtuali Linux usate per il pool back-end e una regola di routing delle richieste di base.

In questa esercitazione verranno illustrate le procedure per:

  • Creare un gateway applicazione con WAF abilitato
  • Creare le macchine virtuali usate come server back-end
  • Creare un account di archiviazione e configurare la diagnostica
  • Testare il gateway applicazione

Diagramma dell'esempio web application firewall.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Accedere ad Azure

Accedere al portale di Azure.

Creare un gateway applicazione

  1. Selezionare Crea una risorsa nel menu a sinistra del portale di Azure. Verrà visualizzata la finestra Nuovo.

  2. Selezionare Rete e quindi Gateway applicazione nell'elenco In primo piano.

Scheda Informazioni di base

  1. Nella scheda Informazioni di base immettere questi valori per le impostazioni del gateway applicazione seguenti:

    • Gruppo di risorse: selezionare myResourceGroupAG come gruppo di risorse. Se non esiste, selezionare Crea nuovo per crearlo.

    • Nome del gateway applicazione: immettere myAppGateway come nome del gateway applicazione.

    • Livello: selezionare WAF V2.

    • Criteri WAF: selezionare Crea nuovo, digitare un nome per il nuovo criterio e quindi selezionare OK. In questo modo viene creato un criterio WAF di base con un set di regole core gestito.

      Screenshot della scheda Crea nuovo gateway applicazione: Informazioni di base.

  2. Per le comunicazioni tra le risorse create in Azure è necessaria una rete virtuale. È possibile creare una nuova rete virtuale oppure usarne una esistente. In questo esempio verrà creata una nuova rete virtuale in concomitanza con la creazione del gateway applicazione. Le istanze del gateway applicazione vengono create in subnet separate. In questo esempio vengono create due subnet: una per il gateway applicazione e l'altra per i server back-end.

    In Configura rete virtuale selezionare Crea nuovo per creare una nuova rete virtuale. Nella finestra Crea rete virtuale visualizzata immettere i valori seguenti per creare la rete virtuale e due subnet:

    • Name: immettere myVnet come nome della rete virtuale.

    • Nome subnet (subnet del gateway applicazione): Nella griglia Subnet verrà visualizzata una subnet denominata Predefinita. Modificare il nome della subnet in myAGSubnet.
      La subnet del gateway applicazione può contenere solo i gateway applicazione. Non sono consentite altre risorse.

    • Nome subnet (subnet del server back-end): Nella seconda riga della griglia Subnet immettere myBackendSubnet nella colonna Nome subnet.

    • Intervallo di indirizzi (subnet del server back-end): Nella seconda riga della griglia Subnet immettere un intervallo di indirizzi che non si sovrappone all'intervallo di indirizzi di myAGSubnet. Ad esempio, se l'intervallo di indirizzi di myAGSubnet è 10.21.0.0/24, immettere 10.21.1.0/24 per l'intervallo di indirizzi di myBackendSubnet.

    Selezionare OK per chiudere la finestra Crea rete virtuale e salvare le impostazioni della rete virtuale.

    Screenshot di Crea nuovo gateway applicazione: Creare una rete virtuale.

  3. Nella scheda Informazioni di base accettare i valori predefiniti per le altre impostazioni e quindi selezionare Successivo: Front-end.

Scheda Front-end

  1. Nella scheda Front- end verificare che Tipo di indirizzo IP front-end sia impostato su Pubblico.
    È possibile configurare l'indirizzo IP front-end come pubblico o Entrambi in base al caso d'uso. In questo esempio si sceglierà un indirizzo IP front-end pubblico.

    Nota

    Per lo SKU gateway applicazione v2, i tipi di indirizzo IP pubblicoed entrambi front-end sono attualmente supportati. La configurazione IP front-end privato non è attualmente supportata.

  2. Scegliere Aggiungi nuovo per Indirizzo IP pubblico e immettere myAGPublicIPAddress per il nome dell'indirizzo IP pubblico e quindi selezionare OK.

    Screenshot di Create new application gateway: Frontends (Crea nuovo gateway applicazione: front-end).

  3. Selezionare Avanti: Back-end.

Scheda Back-end

Il pool back-end viene usato per instradare le richieste ai server back-end che gestiscono la richiesta. I pool back-end possono essere costituiti da schede di interfaccia di rete, set di scalabilità di macchine virtuali, indirizzi IP pubblici, indirizzi IP interni, nomi di dominio completi (FQDN) e back-end multi-tenant come Servizio app di Azure. In questo esempio si creerà un pool back-end vuoto con il gateway applicazione e successivamente si aggiungeranno destinazioni back-end al pool back-end.

  1. Nella scheda Back-end selezionare Aggiungi un pool back-end.

  2. Nella finestra Aggiungi un pool back-end visualizzata immettere i valori seguenti per creare un pool back-end vuoto:

    • Name: immettere myBackendPool come nome del pool back-end.
    • Aggiungi pool back-end senza destinazioni: selezionare per creare un pool back-end senza destinazioni. Le destinazioni back-end verranno aggiunte dopo la creazione del gateway applicazione.
  3. Nella finestra Aggiungi un pool back-end selezionare Aggiungi per salvare la configurazione del pool back-end e tornare alla scheda Back-end.

    Screenshot di Crea nuovo gateway applicazione: Back-end.

  4. Nella scheda Back-end selezionare Passaggio successivo: Configurazione.

Scheda Configurazione

Nella scheda Configurazione verranno connessi il front-end e il pool back-end creati tramite una regola di routing.

  1. Selezionare Aggiungi una regola di routing nella colonna Regole di routing .

  2. Nella finestra Aggiungi una regola di routing visualizzata immettere myRoutingRule per Nome regola.

  3. In Priorità digitare un numero di priorità.

  4. Una regola di routing richiede un listener. Nella scheda Listener nella finestra Aggiungi una regola di routing immettere i valori seguenti per il listener:

    • Nome listener: immettere myListener per il nome del listener.

    • IP front-end: selezionare Pubblico per scegliere l'indirizzo IP pubblico creato per il front-end.

      Accettare i valori predefiniti per le altre impostazioni nella scheda Listener, quindi selezionare la scheda Destinazioni back-end per configurare il resto della regola di routing.

    Screenshot che mostra l'opzione Create new application gateway: listener (Crea nuovo gateway applicazione: listener).

  5. Nella scheda Destinazioni back-end selezionare myBackendPool per Destinazione back-end.

  6. Per Le impostazioni back-end selezionare Aggiungi nuovo per creare una nuova impostazione back-end. Questa impostazione determina il comportamento della regola di routing. Nella finestra Aggiungi impostazione back-end visualizzata immettere myBackendSetting come nome delle impostazioni back-end. Accettare i valori predefiniti per le altre impostazioni nella finestra, quindi selezionare Aggiungi per tornare alla finestra Aggiungi una regola di routing .

    Screenshot che mostra l'impostazione Crea nuovo gateway applicazione, Back-end.

  7. Nella finestra Aggiungi una regola di routing selezionare Aggiungi per salvare la regola di routing e tornare alla scheda Configurazione.

    Screenshot che mostra La creazione di un nuovo gateway applicazione: regola di routing.

  8. Selezionare Avanti: Tag e quindi Passaggio successivo: Rivedi e crea.

Scheda Rivedi e crea

Rivedere le impostazioni nella scheda Rivedi e crea e quindi selezionare Crea per creare la rete virtuale, l'indirizzo IP pubblico e il gateway applicazione. La creazione del gateway applicazione in Azure può richiedere diversi minuti.

Attendere fino al termine della distribuzione prima di passare alla sezione successiva.

Aggiungere destinazioni back-end

In questo esempio vengono usate macchine virtuali come back-end di destinazione. È possibile usare macchine virtuali esistenti o crearne di nuove. Vengono create due macchine virtuali, usate da Azure come server back-end per il gateway applicazione.

A questo scopo, è necessario:

  1. Creare due nuove macchine virtuali Linux, myVM e myVM2, da usare come server back-end.
  2. Installare NGINX nelle macchine virtuali per verificare che il gateway applicazione sia stato creato correttamente.
  3. Aggiungere i server back-end al pool back-end.

Creare una macchina virtuale

  1. Nel portale di Azure fare clic su Crea una risorsa. Verrà visualizzata la finestra Crea una risorsa .

  2. In Macchina virtuale selezionare Crea.

  3. Immettere questi valori nella scheda Informazioni di base per le seguenti impostazioni della macchina virtuale:

    • Gruppo di risorse: selezionare myResourceGroupAG come nome del gruppo di risorse.
    • Nome macchina virtuale: immettere myVM come nome della macchina virtuale.
    • Immagine: Ubuntu Server 20.04 LTS - Gen2.
    • Tipo di autenticazione: Password
    • Nome utente: immettere un nome per il nome utente amministratore.
    • Password: immettere una password per la password dell'amministratore.
    • Porte in ingresso pubbliche: selezionare Nessuna.
  4. Accettare tutte le altre impostazioni predefinite e quindi selezionare Avanti: Dischi.

  5. Accettare le impostazioni predefinite della scheda Dischi e quindi selezionare Avanti: Rete.

  6. Nella scheda Rete verificare che myVNet sia selezionato per la Rete virtuale e che la Subnet sia myBackendSubnet.

  7. In IP pubblico selezionare Nessuno.

  8. Accettare tutte le altre impostazioni predefinite e quindi selezionare Avanti: Gestione.

  9. Selezionare Avanti: Monitoraggio, impostare Diagnostica di avvio su Disabilita. Accettare tutte le altre impostazioni predefinite e quindi selezionare Rivedi e crea.

  10. Nella scheda Rivedi e crea rivedere le impostazioni, correggere eventuali errori di convalida e quindi selezionare Crea.

  11. Attendere il termine della creazione della macchina virtuale prima di continuare.

Installare NGINX per i test

In questo esempio si installa NGINX nelle macchine virtuali solo per verificare che Azure ha creato correttamente il gateway applicazione.

  1. Aprire un Cloud Shell Bash. A tale scopo, selezionare l'icona Cloud Shell nella barra di spostamento superiore del portale di Azure e quindi selezionare Bash dall'elenco a discesa.

    Screenshot che mostra la Cloud Shell Bash.

  2. Eseguire il comando seguente per installare NGINX nella macchina virtuale:

     az vm extension set \
     --publisher Microsoft.Azure.Extensions \
     --version 2.0 \
     --name CustomScript \
     --resource-group myResourceGroupAG \
     --vm-name myVM \
     --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
    
  3. Creare una seconda macchina virtuale e installare NGINX usando questi passaggi completati in precedenza. Usare myVM2 per il nome della macchina virtuale e per l'impostazione --vm-name del cmdlet.

Aggiungere i server back-end al pool back-end

  1. Fare clic su Tutte le risorse e quindi selezionare myAppGateway.

  2. Selezionare Pool back-end dal menu a sinistra.

  3. Selezionare myBackendPool.

  4. In Tipo di destinazione selezionare Macchina virtuale dall'elenco a discesa.

  5. In Destinazione selezionare l'interfaccia di rete associata per myVM dall'elenco a discesa.

  6. Ripetere per myVM2.

    Aggiungere server back-end

  7. Selezionare Salva.

  8. Attendere il completamento della distribuzione prima di procedere al passaggio successivo.

Testare il gateway applicazione

Anche se NGINX non è necessario creare il gateway applicazione, è stato installato per verificare se Azure ha creato correttamente il gateway applicazione. Usare il servizio Web per testare il gateway applicazione:

  1. Trovare l'indirizzo IP pubblico del gateway applicazione nella relativa pagina Panoramica. Screenshot di gateway applicazione indirizzo IP pubblico nella pagina Panoramica.

    In alternativa, è possibile selezionare Tutte le risorse, immettere myAGPublicIPAddress nella casella di ricerca e quindi selezionarlo nei risultati della ricerca. Azure mostra l'indirizzo IP pubblico nella pagina Panoramica.

  2. Copiare l'indirizzo IP pubblico e quindi incollarlo nella barra degli indirizzi del browser.

  3. Controllare la risposta. Una risposta valida verifica che il gateway applicazione sia stato creato correttamente e possa connettersi al back-end.

    Screenshot del test del gateway applicazione.

Pulire le risorse

Quando le risorse create con il gateway applicazione non sono più necessarie, rimuovere il gruppo di risorse. La rimozione del gruppo di risorse comporta anche la rimozione del gateway applicazione e di tutte le risorse correlate.

Per rimuovere il gruppo di risorse:

  1. Nel menu a sinistra del portale di Azure, selezionare Gruppi di risorse.
  2. Nella pagina Gruppo di risorse cercare myResourceGroupAG nell'elenco e selezionarlo.
  3. Nella pagina Gruppo di risorse selezionare Elimina gruppo di risorse.
  4. Immettere myResourceGroupAG in DIGITARE IL NOME DEL GRUPPO DI RISORSE e quindi selezionare Elimina.

Passaggi successivi