Come configurare il servizio Azure Bastion per accedere in modo sicuro alle macchine virtuali

Azure Bastion è un servizio PaaS che offre un accesso RDP ed SSH sicuro e affidabile alle macchine virtuali, direttamente tramite il portale di Azure. Il provisioning del servizio Azure Bastion viene effettuato all’interno di una Virtual Network di Azure e supporta l’accesso a tutte le macchine virtuali su di essa attestate, senza dover assegnare degli indirizzi IP pubblici direttamente ai sistemi. In questo articolo viene riportato come attivare il servizio e quali accorgimenti è bene prendere in considerazione.

Il deployment di Azure Bastion è per virtual network e non per subscription oppure per singola virtual machine. Pertanto, completata la configurazione sarà possibile accedere direttamente dal portale Azure a tutte le macchine virtuali attestate sulla virtual network del Bastion host.

L’attivazione del servizio Azure Bastion richiede:

  • Una subnet almeno /27, la quale deve essere chiamata AzureBastionSubnet e sulla quale sarà attestato il Bastion host. Su questa subnet al momento non è supportata la configurazione di User Defined Routes.
  • Un indirizzo IP Pubblico statico che sarà assegnato alla risorsa Bastion. L’IP pubblico deve essere di SKU Standard e deve essere nella stessa region Azure sulla quale si intende attivare il servizio.

Sulla subnet AzureBastionSubnet è possibile applicare uno specifico Network Security Group (NSG). I NSG sono lo strumento principale per controllare il traffico di rete in Azure e consentono di filtrare le comunicazioni con apposite regole di deny e permit.

Per farlo è opportuno esaminare il traffico di rete necessario per Azure Bastion:

Figura 1 – Flussi di rete necessari per Azure Bastion

Il Network Security Group (NSG) sulla subnet AzureBastionSubnet dovrà contemplare le seguenti regole.

Inbound security rules

  • Traffico in ingresso da Internet: l’indirizzo IP Pubblico di Azure Bastion deve essere acceduto sulla porta TCP 443. Le porte 3389/22 *non* è necessario aprirle.
  • Traffico in ingresso dall’Azure Bastion control plane. Risulta necessario abilitare la porta 443 in entrata utilizzando il tag di servizio GatewayManager. Ciò consente al control plane, ovvero Gateway Manager, di poter comunicare con Azure Bastion.

Figura 2 – NSG AzureBastionSubnet – Inbound security rules

Outbound security rules

  • Traffico in uscita verso le VMs target: Azure Bastion raggiungerà le VM di destinazione tramite indirizzo IP privato. I NSG devono consentire il traffico in uscita verso le altre sottoreti di destinazione per le porte 3389 e 22.
  • Traffico in uscita verso altri endpoint pubblici in Azure. Azure Bastion deve essere in grado di connettersi a vari endpoint pubblici all’interno di Azure (ad esempio, per archiviare i logs di diagnostica e i metering logs). Per questo motivo, Azure Bastion deve essere autorizzato ad uscire con la porta 443 verso il tag di servizio AzureCloud.

Figura 3 – NSG AzureBastionSubnet – Outbound security rules

Per la sottorete sulla quale viene è attestata la macchina che deve essere acceduta da Azure Bastion è necessario prevedere le seguenti regole.

Inbound security rules

  • Traffico in ingresso da Azure Bastion: Azure Bastion raggiungerà la VM di destinazione tramite IP privato sulle porte RDP / SSH (rispettivamente le porte 3389 e 22). Pertanto, come best practice, è possibile aggiungere come sorgente solo la sottorete di Azure Bastion in questa regola.

Figura 4 – NSG sulla subnet target

La creazione dell’Azure Bastion host può essere fatta direttamente dal portale Azure completando i seguenti passaggi:

Figura 5 – Aggiunta del servizio Azure Bastion

Figura 6 – Parametri richiesti in fase di creazione del servizio Azure Bastion

Completata la configurazione del servizio Azure Bastion è possibile utilizzarlo come riportato in seguito.

Figura 7 – Accesso a una VM dal portale Azure

Figura 8 – Inserimento delle credenziali per accedere a una VM dal portale Azure

Figura 9 – Accesso RDP alla VM direttamente dal browser

Per consentire l’accesso al servizio è necessario assegnare i seguenti ruoli:

  • Reader role sulle virtual machine alle quali si vuole consentire l’accesso
  • Reader role sulle NIC con indirizzo IP privato della virtual machine
  • Reader role sulla risorsa Azure Bastion

Azure Bastion è un servizio a pagamento, per ottenere i dettagli sui costi è possibile accedere alla pagina Azure Bastion pricing.

Conclusioni

Azure Bastion garantisce un accesso remoto semplice e sicuro ai sistemi presenti in ambiente Azure. Diverse sono le funzionalità che saranno prossimamente rilasciate per questo servizio e che lo renderanno ancora più completo e flessibile. Tra queste il supporto per Virtual Network in peering e per la multi-factor authentication.