Utilizzo di Azure Bastion per l'accesso sicuro alle macchine virtuali

Utilizzo di Azure Bastion per l'accesso sicuro alle macchine virtuali

04/01/2025

Questo articolo tecnico ed educativo ha lo scopo di guidare analisti della sicurezza, amministratori IT e ingegneri di sistema nell'implementazione e nella configurazione di Azure Bastion per l'accesso sicuro alle macchine virtuali (VM) in Azure. In un ambiente cloud, la sicurezza dell'accesso alle VM è essenziale per proteggere risorse e dati. Tradizionalmente, l’accesso alle macchine virtuali tramite RDP (Remote Desktop Protocol) o SSH (Secure Shell) richiedeva l’esposizione di porte pubbliche a Internet, il che aumentava significativamente la superficie di attacco. Azure Bastion offre una soluzione solida e sicura per eliminare questa esposizione fornendo un accesso sicuro senza la necessità di VPN o IP pubblici [1].

Introduzione

La migrazione delle infrastrutture verso il cloud ha portato numerosi vantaggi in termini di scalabilità e flessibilità. Tuttavia, la sicurezza rimane una delle principali preoccupazioni. L'accesso alle macchine virtuali è un punto critico, poiché spesso sono il cuore di molte applicazioni e servizi. Esporre le porte RDP (3389) o SSH (22) direttamente a Internet è una pratica di sicurezza sconsiderata, poiché le rende facili bersagli per attacchi di forza bruta e altri exploit [2].

Azure Bastion è un servizio PaaS (Platform as a Service) completamente gestito di cui viene eseguito il provisioning nella rete virtuale. Ti consente di connetterti alle macchine virtuali nella tua rete virtuale direttamente dal portale di Azure, utilizzando RDP e SSH, senza la necessità di IP pubblici sulle VM, agenti installati sulle VM o client/configurazioni speciali sulla tua macchina locale. Bastion funge da proxy sicuro, instradando il traffico RDP/SSH attraverso una connessione TLS (Transport Layer Security) sicura al browser dell'utente, proteggendo le VM dall'esposizione diretta a Internet [3].

Questa guida illustra i prerequisiti, come effettuare il provisioning e configurare Azure Bastion, come connettersi alle macchine virtuali Windows e Linux utilizzando RDP e SSH, come gestire le sessioni e come testare e convalidare l'accesso sicuro. Verranno fornite istruzioni dettagliate, esempi pratici e spiegazioni concise in modo che il lettore possa implementare, testare e convalidare queste funzionalità. Inoltre verranno discussi consigli di sicurezza, controlli di conformità e best practice per garantire un accesso remoto sicuro ed efficiente alle vostre macchine virtuali, in modo autonomo, professionale e affidabile.

Perché Azure Bastion è fondamentale per l'accesso alle VM?

  • Sicurezza avanzata: elimina la necessità di IP pubblici sulle VM, proteggendole dagli attacchi diretti da Internet. L'accesso avviene tramite TLS attraverso il browser.
  • Accesso semplificato: si connette alle macchine virtuali direttamente dal portale di Azure, senza la necessità di client o VPN RDP/SSH nativi.
  • Zero Trust: si allinea ai principi di Zero Trust, garantendo che l'accesso sia sempre verificato e autorizzato, indipendentemente dalla posizione dell'utente.
  • Controllo e monitoraggio: consente di monitorare e gestire le sessioni, con l'opzione di registrazione della sessione (disponibile sullo SKU Premium) per scopi di controllo e conformità.
  • Costi e complessità ridotti: essendo un servizio PaaS completamente gestito, elimina la necessità di gestire i propri jump box o VPN complesse.
  • Protezione dalla scansione delle porte: le VM non hanno IP pubblici, il che le rende invisibili agli scanner delle porte e ai bot dannosi su Internet.

Prerequisiti

Per implementare Azure Bastion, saranno necessari i seguenti elementi:

  1. Abbonamento Azure attivo: un abbonamento Azure per creare e gestire risorse.
  2. Accesso amministrativo: un account con il ruolo di "Proprietario" o "Collaboratore" sulla sottoscrizione o sul gruppo di risorse in cui si trovano le VM.
  3. Rete virtuale di Azure (VNet): una rete virtuale esistente che contiene le macchine virtuali a cui desideri connetterti.
  4. Sottorete dedicata per Azure Bastion: una sottorete all'interno della rete virtuale con il nome "AzureBastionSubnet" e un prefisso almeno "/27" (ad esempio: "10.0.2.0/27"). Questa sottorete è esclusiva di Bastion e non può essere utilizzata per altre risorse [4].
  5. Macchine virtuali (VM): macchine virtuali Windows o Linux esistenti nella stessa rete virtuale (o reti virtuali con peering) a cui si desidera connettersi.

Passo dopo passo: configurazione di Azure Bastion

Effettuiamo il provisioning di Azure Bastion e usiamolo per connetterci a una macchina virtuale.

1. Creazione della sottorete "AzureBastionSubnet".

Primae distribuire Bastion, è necessario creare una sottorete dedicata.

  1. Apri il browser e accedi al portale di Azure: "https://portal.azure.com".
  2. Accedi con un account che disponga delle autorizzazioni necessarie.
  3. Nel campo di ricerca in alto, digita "Reti virtuali" e selezionalo dai risultati.
  4. Seleziona la rete virtuale in cui si trovano le tue VM.
  5. Nel riquadro di navigazione a sinistra, in "Impostazioni", seleziona Sottoreti.
  6. Fare clic su "+Sottorete".

  7. Aggiungi sottorete:

    • Nome: immettere "AzureBastionSubnet" (questo nome è obbligatorio).
    • Intervallo di indirizzi di sottorete: fornire un intervallo di indirizzi con un prefisso minimo di "/27" (ad esempio "10.0.2.0/27").
    • Lascia le altre impostazioni come predefinite.
  8. Fare clic su Salva.

    • Spiegazione: "AzureBastionSubnet" è il luogo in cui verrà distribuito il servizio Azure Bastion. È fondamentale che il nome sia esattamente "AzureBastionSubnet" in modo che il provisioning del servizio possa essere eseguito correttamente.

2. Provisioning di Bastion di Azure

Ora che la sottorete è pronta, possiamo distribuire il servizio Bastion.

  1. Nel portale di Azure, nel campo di ricerca in alto, digita "Bastion" e selezionalo dai risultati.
  2. Fare clic su "+ Crea".

  3. Nozioni di base:

    • Abbonamento: seleziona il tuo abbonamento.
    • Gruppo di risorse: selezionare lo stesso gruppo di risorse della rete virtuale.
    • Nome: assegna un nome alla tua istanza Bastion (ad esempio myBastionHost).
    • Regione: selezionare la stessa regione della rete virtuale.
    • Livello: seleziona "Base" (per RDP/SSH di base) o "Standard" (per funzionalità aggiuntive come la registrazione della sessione, la condivisione dei collegamenti, ecc.). Per questa guida utilizzeremo "Basic".
  4. Rete virtuale:

    • Rete virtuale: seleziona la rete virtuale in cui hai creato "AzureBastionSubnet".
    • Sottorete: "AzureBastionSubnet" verrà selezionata automaticamente.
    • Indirizzo IP pubblico: fare clic su "Crea nuovo". Assegna un nome all'IP pubblico (ad esempio "myBastionPublicIP"). Questo IP pubblico è per il servizio Bastion e non è esposto alle tue VM.
  5. Fare clic su "Rivedi + crea" e quindi su Crea.

    • Spiegazione: il provisioning di Azure Bastion può richiedere da 5 a 10 minuti. Una volta distribuito, sarà pronto per essere utilizzato per accedere alle tue VM.

3. Connessione a una VM Windows tramite RDP

Colleghiamoci a una VM Windows senza esporre la sua porta RDP.

  1. Nel portale di Azure passare alla VM Windows.
  2. Nel riquadro di navigazione a sinistra, seleziona Connetti.
  3. Seleziona Bastione.
  4. Immettere le credenziali utente e la password della VM Windows.
  5. Fare clic su Connetti.

    • Azione prevista: si aprirà una nuova scheda del browser e verrà visualizzato il desktop della VM Windows. La connessione è completamente basata su HTML5 nel browser.

4. Connessione a una VM Linux tramite SSH

Connettiamoci a una VM Linux senza esporre la sua porta SSH.

  1. Nel portale di Azure passare alla VM Linux.
  2. Nel riquadro di navigazione a sinistra, seleziona Connetti.
  3. Seleziona Bastione.
  4. Scegli il "Tipo di autenticazione": "Nome utente e password" o "Chiave privata SSH".
    • Se "Nome utente e password", inserisci le credenziali della tua VM Linux.
    • Se SSH Private Key, carica il file della tua chiave privata (.pem o .ppk).
  5. Fare clic su Connetti.

    • Azione prevista: si aprirà una nuova scheda del browser e vedrai il terminale della tua VM Linux, che ti consentirà di eseguire comandi SSH.

Convalida e test

È fondamentale verificare che l'accesso tramite Azure Bastion funzioni come previsto e che le macchine virtuali non siano accessibili in altri modi.

1. Verifica della connettività Bastion

  1. Scenario: prova ad accedere alle tue VM Windows e Linux utilizzando Azure Bastion, come descritto nei passaggi 3 e 4 sopra.
  2. Azione prevista: le connessioni RDP e SSH dovrebbero essere stabilite correttamente tramite il browser.
  3. Verifica:
    • Conferma di poter interagire con il desktop della VM Windows ed eseguire comandi nel terminale della VM Linux.

2. Verifica dell'inaccessibilità diretta delle macchine virtuali

  1. Scenario: prova ad accedere alle tue VM direttamente da Internet utilizzando un client RDP o SSH, puntando all'IP pubblico della VM (se presente) o all'IP privato (se sei all'esterno della rete virtuale).
  2. Azione prevista: i tentativi di connessione diretta dovrebbero fallire poiché le porte RDP/SSH non dovrebbero essere esposte pubblicamente.
  3. Verifica: *Se le tue VM hanno IP pubblici, controlla le regole del gruppo di sicurezza di rete (NSG) associate all'interfaccia di rete della VM o alla sottorete della VM. Assicurati che le porte 3389 (RDP) e 22 (SSH) non siano aperte a "Qualsiasi" o "Internet".
    • Idealmente, le VM a cui si accede tramite Bastion non dovrebbero avere IP pubblici associati.

3. Monitoraggio della sessione Bastion (SKU standard)

Se hai eseguito il provisioning di Bastion con lo SKU Standard, puoi monitorare le sessioni attive.

  1. Nel portale di Azure passare alla risorsa Azure Bastion (myBastionHost).
  2. Nel riquadro di navigazione a sinistra, sotto "Monitoraggio", seleziona Sessioni.
  3. Verrà visualizzato un elenco di sessioni RDP e SSH attive, incluso l'utente, l'IP di origine e la VM di destinazione.

Suggerimenti e best practice per la sicurezza

  • Rimuovi IP pubblici dalle macchine virtuali: dopo aver configurato Azure Bastion, rimuovi tutti gli IP pubblici dalle macchine virtuali. Questo è il principale vantaggio in termini di sicurezza di Bastion.
  • Configurare i gruppi di rete in modo appropriato: assicurarsi che i gruppi di sicurezza di rete (gruppi) delle subnet VM e "AzureBastionSubnet" siano configurati correttamente per consentire solo il traffico necessario. Bastion necessita dell'accesso alle porte RDP/SSH private delle VM, ma le VM non necessitano dell'accesso pubblico in ingresso.
  • Principio del privilegio minimo: assegna solo le autorizzazioni necessarie affinché gli utenti possano connettersi alle VM tramite Bastion. È possibile usare il controllo degli accessi in base al ruolo di Azure per controllare chi può usare Bastion.
  • Autenticazione forte: utilizza sempre l'autenticazione forte per le credenziali della tua VM. Combinalo con Azure AD per l'autenticazione e, se possibile, con l'accesso condizionale per richiedere l'autenticazione a più fattori per l'accesso al portale di Azure, che a sua volta controlla l'accesso a Bastion.
  • Registrazione delle sessioni (SKU Premium): per gli ambienti che richiedono conformità e controllo rigorosi, prendere in considerazione l'utilizzo dello SKU Azure Bastion Premium per registrare sessioni RDP e SSH. Ciò fornisce una registrazione visiva di ciò che è stato fatto sulle VM.
  • Monitoraggio dei log: monitora i log delle attività di Azure per Bastion e i log di sicurezza per le tue VM per rilevare attività sospette o tentativi di accesso non autorizzati.
  • Aggiornamenti e patch: mantieni aggiornate le tue VM con le ultime patch di sicurezza per mitigare le vulnerabilità interne.

Risoluzione dei problemi comuni

  • Non riesco a vedere l'opzione Bastion quando provo a connettermi alla VM:
    • Verificare che sia stato effettuato il provisioning di Azure Bastion nella stessa rete virtuale (o rete virtuale con peering) della VM.
    • Assicurarsi che "AzureBastionSubnet" esista e abbia il prefisso dell'indirizzo corretto (`/27" o superiore).
    • Controlla se Bastion è nello stato "In esecuzione" nel portale di Azure.
  • Errore di connessione RDP/SSH tramite Bastion:
    • Credenziali non valide: verificare che le credenziali dell'utente e della password (o la chiave SSH) siano corrette per la VM.
    • Problemi NSG: verificare che il NSG della subnet VM consenta il traffico in ingresso sulle porte 3389 (RDP) o 22 (SSH) di "AzureBastionSubnet".
    • Firewall VM: verifica che il firewall interno della VM non blocchi le connessioni RDP/SSH.
    • Il servizio RDP/SSH non è in esecuzione: assicurati che il servizio RDP (per Windows) o SSH (per Linux) sia in esecuzione sulla VM.
  • Prestazioni lente o disconnessioni:
    • Controlla la larghezza di banda della tua connessione Internet. Bastion trasmette in streaming il video della sessione al tuo browser.
    • Prendi in considerazione l'utilizzo dello SKU Standard o Premium di Bastion, che offre prestazioni migliori e funzionalità aggiuntive.
    • Verificare l'utilizzo elevato della CPU o della memoria sulla VM di destinazione, che potrebbe influire sulle prestazioni della sessione.
  • Non riesco ad accedere alle risorse VM interne tramite Bastion:
    • Azure Bastion fornisce la connettività alla VM. Una volta connesso alla VM, l'accesso ad altre risorse interne della rete virtuale dipenderà dalle configurazioni di rete della VM e dalle regole NSG applicabili.

Conclusione

Azure Bastion è un componente essenziale per la sicurezza degli ambienti cloud, fornendo un metodo sicuro e semplificato per l'accesso alle macchine virtuali. Eliminando l'esposizione diretta delle porte RDP/SSH a Internet, si riduce significativamente la superficie di attacco e si rafforza il livello di sicurezza generale. Un'implementazione attenta, l'integrazione con le migliori pratiche di sicurezza e il monitoraggio continuo sono fondamentali per massimizzare i vantaggi di Bastion. Con questo gCon questo approccio pratico, i professionisti della sicurezza e gli amministratori IT saranno ben attrezzati per configurare, convalidare e gestire Azure Bastion, garantendo che l'accesso alle loro macchine virtuali sia sempre sicuro e conforme.


Riferimenti:

[1]Microsoft Learn. Che cos'è Bastion Azure?. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview [2]Microsoft Learn. Considerazioni sulla progettazione e pianificazione per l'utilizzo di Azure Bastion per abilitare l'accesso remoto sicuro alle macchine virtuali in Azure. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access [3]Microsoft Learn. Connettiti a una VM Windows utilizzando RDP - Azure Bastion. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4]Microsoft Learn. Configura un host Bastion. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5]Microsoft Learn. Connettiti a una VM Linux utilizzando SSH - Azure Bastion. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6]Microsoft Learn. Monitoraggio e gestione delle sessioni di Azure Bastion. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7]Microsoft Learn. Configura la registrazione della sessione Bastion. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/bastion/session-recording