Connettersi alle Azure VM con Azure Bastion Host e i Shareable links

Azure Bastion è un servzio PAAS che permette di effettuare una connessione RDP oppure un accesso SSH alle macchine virtuali in Azure attraverso il portale web di Azure. Il servizio è collegato direttamente alla Virtual Network e consente l’accesso a tutte le macchine della VNET, anche se queste non hanno un indirizzo IP pubblico.

Il protocollo RDP ed il protocollo SSH, utilizzati dagli utenti per connettersi e gestire in remoto le macchine virtuali, sono stati in passato oggetto di vulnerabilità e sono sempre sotto attacco.

Gli utenti malintezionati cercano di poter ottenere l’accesso alle nostre macchine nel momento in cui queste sono esposte ad Internet tramite un indirizzo IP pubblico.

I vantaggi offerti da Azure Bastion sono diversi:

  • Utilizzo del browser (supportati Microsoft Edge e Google Chrome) per la connessione e protezione tramite SSL
  • Capacità di passare attraverso i firewall e le protezioni perimetrali grazie ad un client web HTML5 e all’utilizzo di un’unica porta (TCP 443)
  • Autenticazione al portale Azure con credenziali di Azure AD e utilizzo della Multi-Factor Authentication
  • Limitazione all’esposizione di indirizzi IP pubblici per le macchine virtuali
  • Intercettazione da parte di Microsoft delle connessioni malevoli e dei tentativi di port scanning effettuati a danno delle VM

Figura 1: Funzionamento di Azure Bastion

Azure Bastion è una risorsa di Azure che può essere creata direttamente dal portale.

Figura 2: Creazione di Azure bastion dal portale di Azure

Nel wizard di creazione di Azure Bastion inserite le Informazioni richieste, indicando a quale Virtual Network deve essere collegato. È anche possibile creare una nuova rete virtuale.

Azure Bastion richiede una subnet dedicata: AzureBastionSubnet. È necessario creare questa subnet nella stessa rete virtuale in cui si vuole distribuire Azure Bastion. La subnet deve avere la configurazione seguente:

  • Il nome della subnet deve essere AzureBastionSubnet.
  • Le dimensioni della subnet devono essere /26 o superiori (/25, /24 e così via).
  • La subnet deve trovarsi nella stessa rete virtuale e nello stesso gruppo di risorse dell’host bastion.
  • La subnet non può contenere risorse aggiuntive.

Se la subnet chiamata AzureBastionSubnet non è disponibile nella rete virtuale deve essere precedentemente create, altrimenti riceverete il messaggio di errore mostrato nella figura sotto:

Figura 3: Azure Bastion richiede la presenza di una subnet dedicata chiamata AzureBastionSubnet

Azure Bastion supporta due tipi di SKU: Basic e Standard. È possibile aggiornare uno SKU Basic a uno SKU Standard.

  • Lo SKU Basic offre funzionalità di base, consentendo ad Azure Bastion di gestire la connettività RDP/SSH alle macchine virtuali (VM) senza esporre gli indirizzi IP pubblici nelle macchine virtuali dell’applicazione di destinazione.
  • Lo SKU Standard abilita le funzionalità Premium.

La tabella seguente illustra la disponibilità delle funzionalità per ogni SKU corrispondente.

Figura 4: Funzionalità dei due SKU di Azure Bastion

Azure Bastion richiede anche un indirizzo IP pubblico. L’indirizzo IP pubblico deve avere la configurazione seguente:

  • Lo SKU dell’indirizzo IP pubblico deve essere Standard.
  • Il metodo di assegnazione/allocazione dell’indirizzo IP pubblico deve essere statico.

Durante il wizard di creazione di Azure Bastion sarà anche necessario dichiarare il numero di istanze da creare. Un’istanza è una macchina virtuale di Azure ottimizzata creata durante la configurazione di Azure Bastion. È completamente gestita da Azure ed esegue tutti i processi necessari per Azure Bastion. Un’istanza è detta anche unità di scala. Ci si connette alle macchine virtuali client tramite un’istanza di Azure Bastion. Quando si configura Azure Bastion usando lo SKU Basic, vengono create due istanze. Se si usa lo SKU Standard, è possibile specificare il numero di istanze. Questa operazione è denominata scalabilità host.

Ogni istanza può supportare 25 connessioni RDP simultanee e 50 connessioni SSH simultanee per carichi di lavoro medi

Figura 5: Configurazioni scelte per la creazione del nuovo Azure Bastion

Nella cheda Tags del wizard di creazione del nuov Azure Bastion indicate le etichette da associare alla risorsa. I tag sono elementi di metadati applicati alle risorse di Azure. Si tratta di coppie chiave-valore che consentono di identificare le risorse in base alle impostazioni rilevanti per l’azienda.

Figura 6: Tag da associare alla risorsa Azure Bastion

La funzionalità Shareable link (preview) consente agli utenti di connettersi a una risorsa di destinazione usando Azure Bastion senza accedere al portale di Azure.

Quando un utente senza credenziali di Azure fa clic su un collegamento condivisibile, viene aperta una pagina Web che richiede all’utente di accedere alla risorsa di destinazione tramite RDP o SSH. Gli utenti eseguono l’autenticazione usando nome utente e password o chiave privata, a seconda di ciò che è stato configurato nel portale di Azure per la risorsa di destinazione. Gli utenti possono connettersi alle stesse risorse a cui è attualmente possibile connettersi con Azure Bastion: macchine virtuali o set di scalabilità di macchine virtuali.

Figura 7: Attivazione delle funzionalità avanzata di Azure Bastion

Figura 8: Schermata riassuntiva delle configurazioni scelte per la creazione di Azure Bastion

Il deployment dell’Azure Bastion è durato circa 10 minuti. Nella figura sotto potete vedere la scheda Overview della risorsa Azure Bastion appena creata.

Figura 9: Scheda Overview di Azure Bastion

Se volete modificare il numero di istanze di Azure Bastion o abilitare altre funzionalità, potete utilizzare il nodo Configuration.

Figura 10: Configurazioni di Azure Bastion

Utilizzo di Azure Bastion

Per collegarsi in RDP o in SSH alle macchine virtuali di Azure basterà selezionare la VM e dal nodo Bastion effettuare la connessione, come mostrato in figura:

Figura 11: Connessione amministrativa alla VM utilizzando Azure Bastion

Figura 12: Connessione alla VM effettuata con successo

Come si può notare però per potersi connettere alla Azure VM è necessario accedere prima al portale di Azure e autenticarsi. Da un paio di giorni è invece disponibile in preview la funzionalità di Shareable link.

Shareable link (preview)

Come già scritto prima, la funzionalità Shareable link (preview) consente agli utenti di connettersi a una risorsa di destinazione (macchina virtuale o set di scalabilità di macchine virtuali) usando Azure Bastion senza accedere al portale di Azure.

Quando un utente senza credenziali per poter accedere al portale di Azure fa clic su un collegamento condivisibile, viene aperta una pagina Web che richiede all’utente di accedere alla risorsa di destinazione tramite RDP o SSH. Gli utenti eseguono l’autenticazione usando nome utente e password o chiave privata, a seconda di ciò che è stato configurato per la risorsa di destinazione. Il collegamento condivisibile non contiene credenziali: l’amministratore deve fornire le credenziali di accesso alla Azure VM all’utente.

Per creare uno Shareable link selezionate il nodo Shareable links dell’Azure Bastion Host e
fate clic su + Add. Scegliete le Azure VM di cui volete creare il link univoco. Azure Bastion Host creerà un link diverso per ogni VM che avete selezionato.

Figura 13: Creazione dello Shareable Link per ogni singola VM selezionata

Figura 14: Creazione dei singoli collegamenti alle Azure VM

A questo punto l’amministratore non dovrà fare altro che distribuire I link agli utenti. È possibile notare che ogni risorsa ha un collegamento separato e che lo stato del collegamento è Attivo. Per condividere un collegamento, copiarlo e inviarlo all’utente. Il collegamento non contiene credenziali di autenticazione.

L’utente che avrà ricevuto il link dovrà solo incollarlo nel browser. Apparirà una pagina, senza che gli venga chiesta nessuna autorizzazione, in cui dovrà inserire le credenziali per collegarsi alla VM di destinazione.

Figura 15: Lo Shareable link rimanda l’utente ad una pagina da cui potrà collegarsi alla Azure VM

Dopo aver inserito le credenziali di accesso alla Azure VM l’utente verrà collegato alla VM di destinazione del link.

Figura 16: Collegamento RDP alla Azure VM di destinazione effettuato con successo

Dal portale di Azure è possible visualizzare le sessioni attive sull’Azure Bastion Host.

Figura 17: Sessioni attive sull’Azure Bastion Host

Rimozione dei Shareable Links

Quando non è più necessario far accedere tramite queste connessioni temporanee i consulenti o alcuni utenti della vostra azienda, potete eliminare i Links che avete creato, in modo tale da inibire connessioni future non necessarie.

Conclusioni

La funzionalità offerta da Azure Bastion agevola moltissimo le connessioni verso le macchine virtuali Azure. Grazie ad un browser, alla possibilità di effettuare la multi-factor authentication per accedere al portale Azure, all’assenza di indirizzi IP pubblici associati alle VM in Azure e al fatto che non è necessario installare nessun agent nelle VM a cui vogliamo connetterci né installare alcun plugin nel browser, innalza la sicurezza ad un livello altissimo e ci permette di non temere più i tentativi di attacco e le vulnerabilità dei protocolli RDP ed SSH. In più, per tutti quegli utenti che non hanno accesso al portale di Azure è possibile creare gli shareable link, che di fatto agevolano le connessioni temporanee, magari perché devono collegarsi solo una volta per effettuare delle installazioni di applicazioni.