Uno dei maggiori fastidi che si hanno quando bisogna accedere ad una VPN GlobalProtect da Linux è quella di installare il client ufficiale fornito da Palo Alto Networks. A differenza dei client per Windows e Mac, infatti, il client Linux non si può scaricare direttamente dal portal della VPN alla quale si vuole accedere (sempre ammesso che il portal sia abilitato), ma deve essere scaricato dal customer support portal, quindi bisogna avere un account di supporto valido.
L’altra scocciatura è che, se non avete la licenza GlobalProtect sul vostro firewall, l’accesso VPN da client Linux, iOS o Android non è consentita (leggete anche questo articolo della KB).
Una possibile soluzione per aggirare questo problema può essere quella di attivare l’opzione per il supporto X-Auth nel gateway:

In questo modo sarà possibile connettersi con un client VPN di terze parti, tipo vpnc, con tutte le limitazioni del caso.
Un’alternativa sicuramente più comoda e interessante, nonché a costo zero, è quella di utilizzare il client openconnect e il corrispondente plugin per NetworkManager, generalmente disponibile per la maggior parte delle distribuzioni Linux moderne:

Questo client funziona piuttosto bene quando l’autenticazione avviene tramite semplice username/password, e consente di connettersi ad un gateway GlobalProtect anche se sul firewall non è presente la corrispondente licenza.
Ho però riscontrato un problema quando si tenta di connettersi ad un portale/gateway che utilizza un authentication profile SAML con MFA. Alla prima connessione viene correttamente aperto un browser embedded all’interno del quale digitare le proprie credenziali e il codice TOTP, tuttavia l’autenticazione non va mai a buon fine e molto spesso il client va proprio in crash. Non so dire se il problema riguarda esclusivamente openconnect su KDE o se impatta anche GNOME, lo devo approfondire.
Non essendo riuscito a individuare la causa del problema e a trovare un rimedio, mi sono messo alla ricerca di un client alternativo e l’ho trovato su GitHub: GlobalProtect-openconnect.
Questo client è scritto prevalentemente in Rust, funziona sia su distribuzioni derivate da RedHat che su quelle derivate da Debian, ed è anche rilasciato con licenza GPLv3, il che lo rende perfetto per chi non vuole usare client proprietari e open source.
La semplicità d’uso e la notevole flessibilità di questo client, però, hanno un piccolo prezzo da pagare:

come potete osservare nell’immagine accanto, dopo un periodo di prova di sette giorni, per continuare ad utilizzare il client dovete pagare un piccolo abbonamento (mensile o annuale) oppure pagare una sola volta per la licenza lifetime. Ciascuna soluzione dà la possibilità di usare il client su 5 dispositivi diversi.
A seconda del numero di pc Linux che avete necessità di connettere alla vostra VPN, può essere una soluzione economicamente più sostenibile rispetto alla licenza GlobalProtect di Palo Alto.
Se però dovete connettere centinaia di pc Linux e smartphone Android/iOS, allora la questione cambia e forse è meglio optare per la soluzione ufficiale.
Inoltre devo ancora verificare se con questo client continuano a funzionare tutte le altre funzioni implementate dal client ufficiale quando il firewall è equipaggiato con la licenza GlobalProtect, come ad esempio gli HIP check, lo split tunnel basato su nomi di dominio, ecc. Anche questa è una cosa che cercherò di approfondire nei prossimi giorni.
