Integrare Remote Desktop Gateway con Azure Multi-factor Authentication

Abbiamo già visto nella guida Utilizzare la Azure Multi-Factor Authentication con Remote Desktop Gateway in Windows Server 2016 e Windows Server 2019 come sia possibile aumentare la sicurezza delle connessioni verso il Remote Desktop Server.

Poiché dal 1° Luglio 2019 Microsoft non permette di scaricare il server MFA per offrire l’autenticazione a due fattori, ho deciso di riscrivere la guida utilizzando la nuova modalità di integrazione con l’estensione di Azure MFA per i Network Policy Services.

Il Remote Desktop Gateway è uno dei ruoli dell’infrastruttura di Remote Desktop per consente agli utenti remoti di connettersi a qualsiasi risorsa interna alla LAN da Internet, utilizzando una connessione crittografata, senza dover configurare connessioni VPN (Virtual Private Network) verso l’azienda. Il server trasmette il traffico RDP attraverso la porta 443, utilizzando un tunnel HTTP over TLS/SSL (Transport Layer Security/Secure Sockets Layer). Questo siginifica che , indipendentemente dai server remoti che vogliamo raggiungere, è sufficiente avere un unico server Remote Desktop Gateway (o più di uno per avere alta disponibilità) esposto ad Internet ed un’unica porta aperta (TCP 443) per poterci connettere a tutta l’infrastruttura aziendale.

Per aumentare la sicurezza è possibile usare Azure MFA e l’utente per potersi autenticare dovrà inserire le proprie credenziali e utilizzare l’app Microsoft Authenticator, rispondere ad una telefonata o utilizzare un token hardware.

La procedura di autenticazione sarà quindi:

  1. L’utente si collega al portale web delle RemoteApp e inserisce le proprie credenziali
  2. L’utente fa doppio clic sull’icona dell’applicazione per lanciare la RemoteApp
  3. Se è stato abilitato il Web SSO sul Remote Desktop Web Access non verrà chieste all’utente di reinserire le credenziali di accesso alla RemoteApp
  4. L’utente riceve una telefonata oppure risponde ad una richiesta che appare sull’app Microsoft Authenticator (secondo fattore di autenticazione)
  5. L’utente è autenticato e la RemoteApp si apre

Come funziona la Multifactor Authentication (MFA) con il Remote Desktop Gateway

Il flusso di autenticazione è essenzialmente formato dalle seguenti fasi:

  1. Il server Remote Desktop Gateway riceve da un utente remoto una richiesta di autenticazione per la connessione a una risorsa, ad esempio una sessione desktop remoto o una RemoteApp. Fungendo da client RADIUS, il server Gateway Desktop remoto converte la richiesta in un messaggio di richiesta di accesso RADIUS e invia il messaggio al server RADIUS in cui è installata l’estensione NPS di Azure MFA.
  2. La combinazione di nome utente e password viene verificata in Active Directory e l’utente viene autenticato.
  3. Se vengono soddisfatte tutte le condizioni (ad esempio, le restrizioni relative all’ora del giorno o all’appartenenza al gruppo), l’estensione NPS di Azure MFA attiva una richiesta di autenticazione secondaria con l’autenticazione Azure AD MFA.
  4. Azure AD MFA comunica con Azure AD, recupera i dettagli dell’utente ed esegue l’autenticazione secondaria usando i metodi supportati.
  5. Al termine della richiesta di autenticazione a più fattori, Azure AD MFA comunica il risultato all’estensione NPS di Azure MFA.
  6. Il Server NPS in cui è installata l’estensione invia un messaggio di autorizzazione al server Remote Desktop Gateway.
  7. All’utente viene concesso l’accesso alla risorsa di rete richiesta tramite Remote Desktop Gateway.

Figura 1: Flusso di richiesta di autenticazione con Azure AD Multi-Factor Authentication

Prerequisiti

È necessario che abbiate un’infrastruttura con:

 

Configurare gli account per la verifica in due passaggi.

È importante considerare che l’utente deve essere abilitato per l’utilizzo di Azure MFA e che può utilizzare solo la verifica telefonica o l’app Microsoft Authenticator con notifiche push. Il metodo SMS text non funziona con Remote Desktop Gateway perché non offre la possibilità di immettere un codice di verifica.

Qui di seguito vengono mostrati i diversi passaggi per l’onboarding dell’app Microsoft Authenticator per un utente che si collegherà in desktop remoto.

Figura 2: Onboarding di Azure MFA per un utente

Figura 3: Download dell’app Microsoft Authenticator sul proprio smartphone

Figura 4: Aggiunta dell’account al Microsoft Authenticator

Figura 5: Test di utilizzo della Azure MFA

Figura 6: Test di utilizzo riuscito

Figura 7: Onboarding di Azure MFA con l’app Microsoft Authenticator completata

Installazione e configurazione dell’estensione NPS di Azure MFA

Prima di poter scaricare l’estensione NPS di Azure MFA è necessario procurarsi l’ID del tenant di Azure AD che verrà chiesto durante la fase di setup.

Figura 8: Tenant ID Di Azure AD

Procedete al download dell’estensione NPS e installatelo in un server che avrà il ruolo di NPS.

NOTA: L’estensione NPS NON può essere installata sul server di Remote Desktop Gateway.

Figura 9: Download dell’estensione NPS di Azure MFA

Figura 10: Installazione dell’estensione sul server NPS

Per garantire comunicazioni protette e sicure, è necessario configurare i certificati che l’estensione NPS può usare. È possibile creare e configurare il certificato utilizzando uno script PowerShell che esegue le seguenti azioni:

  • Crea un certificato autofirmato
  • Associa la chiave pubblica del certificato ad una managed identity in Azure AD
  • Salva il certificato nell’archivio del computer locale
  • Concede l’accesso alla chiave privata del certificato all’utente Network Service
  • Riavvia il servizio NPS

Aprite un prompt di Windows PowerShell come amministratore, portatevi nella cartella c:\Program Files\Microsoft\AzureMfa\Config ed eseguite lo script AzureMfaNpsExtnConfigSetup.ps1

Lo script installerà sul server NPS, se non è presente, il modulo PowerShell di Azure AD. Quando richiesto autenticatevi con le credenziali di Global Admin ed incollare il Tenant ID di Azure AA che avete copiato precedentemente dal portale di Azure.

Figura 11: Login ad Azure AD con le credenziali di tenant administrator

Figura 12: Esecuzione dello script completata

Configurare i componenti NPS sul server di Remote Desktop Gateway

Sul server che ospita il ruolo di Remote Desktop Gateway, aprite RD Gateway Manager e dalla proprietà modificate le configurazioni nella scheda RD CAP Store indicando che il server utilizzerà un server centralizzato. Indicate il nome del server che ha il ruolo NPS e su cui avete installato l’estensione NPS per Azure MFA. Aggiungete anche il RADIUS secret che servirà per stabilire il trust con il server NPS.

Figura 13: Modifica del RD CAP Store sul RD Gateway

Figura 14: Il server RD Gateway utilizzerà un RADIUS remoto per le autenticazioni ed autorizzazioni

Per assicurarsi che ci sia tempo per convalidare le credenziali degli utenti e di eseguire la verifica in due passaggi (MFA) è necessario modificare il valore di timeout RADIUS. Nel server Remote Desktop Gateway aprite la console del Network Policy Server e in Remote RADIUS Server Groups modificate le proprietà del gruppo TS GATEWAY SERVER GROUP, che si è creato quando abbiamo configurato la RD CAP Store. Selezionate il server, fate clic su Edit e nella scheda Load Balancing modificare il valore predefinito da 3 a un valore compreso tra 30 e 60 secondi, come mostrato in figura:

Figura 15: Modifica del TIMEOUT RADIUS sul server RD Gateway

Potete anche verificare che le policy di accesso remoto utilizzeranno il server remoto specificato in precedenza. Nella figura sotto è mostrato come fare:

Figura 16: Verifica dell’utilizzo del server RADIUS centralizzato per le richieste di accesso remoto

Configurazione del server RADIUS in cui è installata l’estensione NPS di Azure MFA

Il server NPS in cui è installata l’estensione NPS deve essere in grado di scambiare messaggi RADIUS con il servizio NPS del Remote Desktop Gateway. Prima di tutto assicuratevi che il server sia registrato in Active Directory e che possa quindi accedere alle proprietà degli utenti.

NOTA: Assicuratevi anche che le porte RADIUS (UDP 1812, UDP 1813, UDP 1645, UDP 1646) siano aperte sul firewall di Windows. Qui di seguito un rapido comando per creare l’eccezione:

Figura 17: Registrazione del server NPS in Active Directory

Figura 18: Registrazione in Azure AD del server NPS completata

A questo punto registrate il Remote Desktop Gateway come RADIUS CLIENT. Inserite le informazioni di connessione e il RADIUS Secret che avete impostato precedentemente.

Figura 19: Registrazione del server Remote Desktop Gateway come RADIUS CLIENT

Figura 20: Il server RD Gateway è adesso un RADIUS Client

Configurazione delle Network Policy per consentire l’accesso al Remote Desktop Gateway

Il server NPS in cui abbiamo installato l’estensione NSP per Azure MFA è l’archivio centrale per i criteri di autorizzazione della connessione. Modificate quindi la Network Policy per consentire le connessioni in ingresso. Duplicate la policy Connessioni ad altri server di accesso e configuratela come mostrata nelle immagini sotto:

Figura 21: Duplicazione della policy Connessioni ad altri server di accesso

Figura 22: Modifica della policy di accesso nella scheda Overview

Figura 23: Modifica della policy di accesso nella scheda Constraints

Se volete potete anche modificare le Condizioni di accesso, ad esempio specificando che gli utenti devono appartenere ad un particolare gruppo di Active Directory.

Figura 24: Modifica della policy di accesso nella scheda Conditions

Assicuratevi che il nuovo criterio sia in cima alla lista e che sia abilitato.

Figura 25: Nuova Network Policy completata

Verifica della connessione al Remote Desktop Gateway e utilizzo di Azure MFA

Collegatevi al portale del Remote Desktop Web Access con un account consentito dai criteri di autorizzazione della connessione e abilitato per l’Azure AD MFA

Figura 26: Connessione alla RemoteApp utilizzando un Remote Desktop Gateway

Dopo aver immesso correttamente le credenziali per l’autenticazione primaria, la finestra di dialogo Connessione desktop remoto indica lo stato Avvio della connessione remota.

Figura 27: In attesa della conferma del metodo secondario di autenticazione – Azure MFA

L’utente riceverà sul proprio dispositivo la richiesta di Azure MFA con il metodo che ha configurato in precedenza.

   

Figura 28-29: Richiesta di Azure Authenticator sullo smartphone dell’utente

Se l’autenticazione viene eseguita correttamente con il metodo di autenticazione secondario configurato in precedenza per Azure MFA l’utente verrà connesso all’applicazione.

Figura 30: Autenticazione riuscita e creazione della sessione remota per l’utente

Figura 31: RemoteApp avviata correttamente

Conclusioni

La Multi-Factor Authentication ci aiuta a proteggere l’accesso ai nostri dati più importanti perché, oltre alla combinazione di username e password, richiede che venga fornita un’ulteriore prova della nostra identità. Grazie all’integrazione con Azure MFA anche l’accesso alle applicazioni on-premises può essere protetto con l’autenticazione a due fattori.