Firmare Digitalmente un File .RDP per mezzo di RDPSIGN.EXE

Nell’articolo Gestione automatizzata dei certificati su connessioni RDS Session Host ed RDP abbiamo analizzato tutta la catena di impostazioni al fine di realizzare una sessione RDP verso un Session Host in modo cifrato e verificato tramite certificati generati da una PKI interna di livello enterprise.

In questo contesto tuttavia, quando l’utente attiva la sessione verso un RDS Session Host a partire da un file .RDP riceve ancora un avviso, un warning, relativo al fatto che il file che sta utilizzando non è proveniente da un autore attendibile.

Figura 1 Warning Autore Sconosciuto

A questo punto l’ultimo tassello che completa tutta la catena coinvolta nell’accesso ad un server in Remote Desktop è la Firma del file di connessione, questa firma avviene mediante l’utility RDPSIGN.EXE ed un certificato, rilasciato dalla CA interna, in grado di essere impiegato per il “Code Signing”

Generazione del certificato per il Code Signing

Come visto nell’articolo citato in precedenza anche per questo tipo di certificato è necessario utilizzare un Template disponibile sulla CA e già predisposto per la Firma del Codice, si consiglia di duplicare e modificare il template con un nuovo riferimento, eventualmente aumentando il periodo di validità, anche perché normalmente questi file vengono utilizzati da molti utenti per tempi abbastanza lunghi, di default la validità del certificato segnato con questo Template è di 1 anno.

TAB General

in questa videata dovremo impostare il nome del nuovo template e la validità del certificato

Figura 2 Generazione del Template

TAB Request Handling

Verifica dello scopo del certificato, non è necessario modificarne le impostazioni.

Figura 3 Scopo del Certificato

TAB Extensions

In questo TAB ritroviamo, analogamente alle impostazioni modificate per il certificato usato dalla connessione, la dichiarazione dell’OID. In questo caso non si modifica nulla, ma è possibile verificare comunque la dichiarazione

Figura 4 Descrizione dell’Estensione

Figura 5 Visualizzazione OID

Autorizzazione all’emissione del Certificato

Come per ogni altro oggetto, è possibile impostare una serie di opzioni di sicurezza per definire chi potrà richiedere un certificato mediante questo template, in questo esempio si ipotizza l’uso da parte di un gruppo di utenti incaricati della gestione delle connessioni RDP

Figura 6 Impostazione della Sicurezza

Conclusa la duplicazione del Template, ed autorizzata l’emissione dalla CA, è possibile richiedere un certificato UTENTE di tipo Code Signing con cui firmare il il file RDP di connessione.

La richiesta, avviene da una qualunque postazione connessa al dominio accedendo alla gestione certificati utente richiedendone uno personale

Figura 7 Richiesta Certificato

Ottenuto il certificato dalla CA (nello store Utente ) è necessario recuperare il Thumbprint e con questo procedere alla firma del file RDP che deve essere precedentemente creato con le informazioni di connessione.

Recupero del Thumbprint

Aprendo certificato nelle proprietà, è possibile rilevare il valore che dovremo usare successivamente per “firmare” il file .RDP di connessione

Figura 8 Individuazione del valore di Thumbprint

Individuato e trascritto (la copia negli appunti può dar luogo a malfunzionamenti dovuti a caratteri spuri) il Thumbprint dovremo creare il File di connessione con l’utility MSTSC.EXE

Figura 9 Salvataggio del file di connessione

A questo punto da una Shell comandi è sufficiente richiamare il seguente comando

Rdpsign /sha256 <valore-del-thumbprint> <nome-del-file-rdp>

Nel nostro caso il comando completo sarà

Rdpsign /sha256 5211a2f1f124d42bacd12e1178f735c75e3a9e35 rdsh01srv.rdp

Figura 10 firma del file .RDP

La connessione avverrà a questo punto indicando in modo preciso l’utente che ha creato il file di accesso e l’utilizzatore può verificarne l’attendibilità, ed eventualmente fare in modo che non venga richiesta questa ulteriore verifica.

Figura 11 Messaggio riportante in nome utente che ha firmato il file

Creazione di una GPO per la dichiarazione di certificati “Attendibili”

La procedura vista fin qui, assieme a quella riportata nell’articolo precedente, è utilizzabile per realizzare un accesso lineare all’infrastruttura RDS, tuttavia come abbiano visto, all’utente è ancora presentato un ultimo Warning come in figura 11.

Tramite la creazione di una GPO utente è possibile dichiarare uno o più Thumbprint di firma in modo che le sessioni originate dai file segnati con questi certificati propongano direttamente l’autenticazione. Il percorso per la configurazione della GPO è User Configuration–>Policies–>Administrative Templates–>Windows Components–>Remote Desktop Services–>Remote Desktop Connection Client e i parametri andranno inseriti nella configuraziobe Specify SHA1 thumbprints of certificates representing trusted .rdp publishers

Figura 12 Creazione della GPO

Terminata la Configurazione della Group Policy, ed applicata all’utente, l’accesso avverrà in modo lineare richiedendo direttamente l’autenticazione.

Note

Il file RDP di connessione, quando segnato, presenta al suo interno la firma eseguita dall’utility RDPSIGN e qualora venisse alterato nelle componenti “critiche” come ad esempio il nome host, il file risulterebbe invalido a prescindere dalla GPO applicata, in quanto la firma non sarebbe più valida e quindi verrebbe riproposto il warning di fig.1

Riferimenti:

installazione e configurazione di una PKI Enterprise

Deploy PKI in Windows Server 2016 – Parte 1 Architettura di una PKI Two-Tier

Deploy PKI in Windows Server 2016 – Parte 2 Installazione e configurazione di una Root CA Offline

Deploy PKI in Windows Server 2016 – Parte 3 Installazione Subordinate CA

Rdpsign

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rdpsign