Come accedere remotamente alle macchine virtuali in ambiente Azure

Poter accedere tramite RDP (Remote Desktop Protocol) oppure via SSH (Secure SHel) alle macchine virtuali presenti in Azure è un’esigenza fondamentale per gli amministratori di sistema. L’esposizione diretta di questi protocolli su Intenet è sicuramente una pratica da evitare in quanto comporta un elevato rischio di security. In questo articolo vengono riportate le differenti metodologie che è possibile adottare per accedere remotamente ai sistemi presenti su Azure e le caratteristiche di ciascuna di essa.

Anche recentemente Microsoft ha rilasciato un aggiornamento di sicurezza considerato critico e indirizzato alla risoluzione della vulnerabilità CVE-2019-0708 individuata sul servizio Remote Desktop per diversi sistemi operativi. Tale vulnerabilità permette l’esecuzione di codice tramite protocollo RDP consentendo così di prendere il controllo completo del sistema remoto. Questa vulnerabilità viene portata a titolo di esempio per evidenziare quanto sia effettivamente rischioso pubblicare in Internet questi protocolli di accesso. Per questa ragione è opportuno valutare l’adozione di una delle soluzioni in seguito riportate per avere una maggiore sicurezza.

Figura 1 – RDP/SSH attack

Accesso VPN

Per disporre di un semplice accesso amministrativo verso la Virtual Network di Azure è possibile attivare un VPN di tipologia Point-to-Site (P2S). Tramite le VPN P2S è possibile instaurare la connettività da una singola postazione verso l’ambiente Azure, in modo semplice e sicuro. Stabilita la connessione VPN si avrà la possibilità di accedere remotamente ai sistemi presenti in Azure. Per maggiori informazioni sulle VPN P2S vi invito a leggere l’articolo Azure Networking: l’accesso VPN Point-to-Site e le novità introdotte. Adottando questa metodologia è opportuno tenere in considerazioni il numero massimo di connessioni possibili per singolo Azure VPN Gateway.

Figura 2 – Protocolli disponibili per le VPN P2S

Just-in-Time VM Access

Si tratta di una funzionalità disponibile in Azure Security Center Standard Tier, che consente di applicare le configurazioni necessarie ai Network Security Group (NSG) e recentemente anche ad Azure Firewall per consentire un accesso amministrativo ai sistemi, opportunamente filtrato per IP sorgente e per un determinato periodo di tempo. Just-in-Time VM Access consente di effettuare le configurazioni necessarie per accedere remotamente ai sistemi in modo rapido, mirato e solo per un periodo temporale ben specifico. Senza l’utilizzo di questa funzionalità sarebbe necessario creare manualmente apposite regole all’interno dei NSG oppure in Azure Firewall (NAT Rule), ricordandosi di rimuoverle quando non più necessarie.

Figura 3 – Richiesta di accesso tramite Just-in-Time VM Access

Jumpbox

Uno scenario che viene in alcune situazioni utilizzato è la presenza di una macchina virtuale (Jumpbox) accessibile remotamente e dislocata in una subnet opportunamente isolata, che viene utilizzata per accedere a diversi altri sistemi in comunicazione con quella subnet. In una architettura di rete che rispecchia la topologia hub-spoke, tipicamente questo sistema viene posizionato nella rete di Hub, ma è comunque consigliato applicare dei filtri per fare in modo che tale sistema sia raggiungibile solo da determinati indirizzi IP pubblici, senza esporlo direttamente in Internet. In questo scenario è opportuno tenere in considerazione che si avranno a disposizione al massimo due connessioni remote contemporaneamente per singola Jumpbox.

Figura 4 – Posizionamento della Jumpbox in una architettura hub-spoke

Azure Bastion

Si tratta di un servizio PaaS, recentemente annunciato in preview da Microsoft, 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 esporre degli indirizzi IP pubblici.

Figura 5 – Architettura di Azure Bastion

Per maggiori dettagli a riguardo vi invito a leggere l’articolo Azure Bastion: un nuovo modello di sicurezza di Silvio Di Benedetto.

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

Al momento è opportuno tenere in considerazione che Azure Bastion e Just-in-Time VM Access non possono essere utilizzati per accedere agli stessi sistemi.

SSL Gateway

Una soluzione molta valida in termini di sicurezza potrebbe essere quella di implementare in ambiente Azure una architettura Remote Desktop Services, che prevede l’utilizzo del ruolo Remote Desktop Gateway, appositamente pensato per essere direttamente esposto verso Internet (porta TCP 443). Grazie a questo componente è possibile incapsulare il traffico RDP in un tunnel HTTP over TLS/SSL. Il Remote Desktop Gateway supporta inoltre la Multi-Factor Authentication che consente di aumentare ulteriormente il livello di sicurezza per l’accesso remoto alle risorse. Una soluzione analoga è disponibile anche in ambiente Citrix. In questo ambito sarà necessario considerare, oltre ai costi legati ai componenti Azure, anche i costi di licenza.

Figura 6 – Possibile architettura Remote Desktop Services in ambiente Azure

Conclusioni

Diverse sono le possibilità per garantire un accesso remoto sicuro ai sistemi presenti in ambiente Azure. Il nuovo servizio Azure Bastion è un metodo sicuro e semplice, ma che necessita di essere ampliato con ulteriori funzionalità, tra le più importanti c’è sicuramente il supporto per Virtual Network in peering e per la multi-factor authentication. Tali funzionalità con molta probabilità saranno già disponibili nel momento dell’effettivo rilascio. In attesa di poter utilizzare Azure Bastion in ambiente di produzione è possibile adottare gli altri metodi riportati, evitando così di dover esporre i sistemi in modo non protetto verso internet.