Script per l’aggiunta di un profilo SSL VPN a Sophos Connect tramite GPO

Sophos Connect client permetta l’utilizzo di file .pro per importare nel client la definizioni delle connessioni SSL VPN, tramite i file .pro è possibile gestire l’importazione automatica dei file .ovpn, a riguardo si veda Automatic provisioning, configuration files, and clients – Sophos Firewall:

Per indicazioni su come creare un file di testo con estensione .pro per il provisioning delle connessioni SSL VPN si veda Provisioning file templates – Sophos Firewall.

Per quanto riguarda l’automazione del deploy dei file .pro Sophos nella seguente pagina della documentazione Import VPN provisioning file through GPO – Sophos Firewall propone un batch script che attende che il servizio Servizio Sophos Connect (scvpn) sia attivo e quindi scarica un file .pro scaricandolo da un URL tramite una sessione PowerShell che utilizza il cmdlet Invoke-WebRequest, quindi importa il file copiandolo nella cartella “C:\Program Files (x86)\Sophos\Connect\import\”. 

Tale script deve poi essere utilizzato come script di avvio computer (a riguardo si veda Working with startup, shutdown, logon, and logoff scripts using the Local Group Policy Editor | Microsoft Learn), per comprendere il funzionamento che sta alla base si vedano queste note riportante nella documentazione:

“When users start their endpoints, the scvpn service starts, and the script downloads the .pro file from the server to the Sophos Connect import folder.

The Sophos Connect client automatically imports the .pro file from this folder and deletes the file from the folder. It then connects to the VPN portal through the gateway configured in the .pro file and pulls the remote access IPsec and SSL VPN configurations.”

Scendendo nel dettaglio se viene creato un file .pro nella cartella “C:\Program Files (x86)\Sophos\Connect\import\” questo viene letto dal servizio scvpn che provvederà ad interpretarlo e a creare la connessione SSL VPN nel client Sophos Connect, quindi il file nella cartella verrà eliminato. Affinché tutto funzioni è necessario che il Servizio Sophos Connect (scvpn) sia avviato.

Inoltre, sebbene nella documentazione non venga riportata, affinché la connessione venga importata nel Sophos Connect client è necessario che la sessione utente sia attiva, ovvero se l’import del file .pro avviene all’avvio del computer prima che si sia autenticati la connessione SSL VPN non risulterà presente nel Sophos Connect client.

Sebbene lo script proposto nella documentazione di Sophos sia funzionale presenta alcune lacune:

  1. Il ciclo che controlla se il Servizio Sophos Connect (scvpn) è in esecuzione va in loop infinito se il servizio non avvia per qualche problema.
  2. Scaricare il file del profilo da un url può non essere l’approccio migliore, a mio avviso conviene copiare sul client il file tramite una group policy preferences 
  3. Lo script non esegue la verifica che il profilo è già stato importato, è preferibile utilizzare il tool a riga di comando SCCLI presente nella cartella “C:\Program Files (x86)\Sophos\Connect” che permette di eseguire una query sui profili presenti in Sophos Connect clinet e anche di gestirne l’importazione evitando la copia del file .pro nella cartella “C:\Program Files (x86)\Sophos\Connect\import\”, a riguardo si veda Sophos Connect: List of commands.
  4. Eseguire lo script all’avio del computer senza che sia attiva la sessione utente non renderà disponibile la connessione SSL VPN nel Sophos Connect client.

Per ovviare a tali lacune ho sviluppato un batch script per l’aggiunta di un profilo SSL VPN a Sophos Connect che verifica la presenza del file “C:\Program Files (x86)\Sophos\Connect\sccli.exe” oltre al fatto che il servizio Servizio Sophos Connect (scvpn) sia in esecuzione tramite un ciclo di tre query sullo stato del servizio distanziate di 30 secondi. Se i controlli vengono superati il batch script tramite il tool a riga di comando sccli.exe controlla se il profilo è già presente in Sophos Connect client e in caso contrario lo importa. Per ogni passaggio il batch script genera un file di log.

Lo script è disponibile nel mio repository su GitHub PowerShell/SophosConnect at master · ermannog/PowerShell (github.com) dove è possibile scaricare lo script Add-ConnectionProfile.cmd e modificarne poi la la parte iniziale per impostare il file del profilo .pro e il nome della connessione SSL VPN, il batch script assume che il file del profilo sia nella stessa cartella in cui è memorizzato lo script.

@ECHO OFF
SETLOCAL

REM *** Impostazioni
SET PathFileProfile=%~dp0ProfileSSLVPNFileName.pro
SET ProfileName=ProfileSSLVPNName
SET PathDirSophosConnect=C:\Program Files (x86)\Sophos\Connect
SET PathFileLog=%~dp0%~n0.log

E’ possibile automatizzare l’installazione tramite le Group Policy Preferences avviando lo script tramite un’operazione pianificata utilizzando l’approccio che avevo descritto nel dettaglio nel post Automazione operazioni su client Active Directory tramite scripts: considerazioni e hardening in cui è possibile trovare anche considerazioni sugli aspetti di sicurezza di cui è necessario tenere conto.

Il mio suggerimento è quello di automatizzare il deploy del profilo SSL VPN in Sophos Connect tramite Group Policy Preferences che provvedano a copiare in locale lo script e il file .pro (impostando l’azione Aggiorna) e avviare lo script di aggiunta del profilo tramite una operazione pianificata che esegue lo script con l’utente SYSTEM all’accesso di qualsiasi utente. In questo modo anche se non si è connessi alla rete aziendale in caso di problemi con il Sophos Connect client sarà comunque possibile provare a disinstallarlo e al riavvio il profilo verrà aggiunto.