OpenVPN

Da Wikipedia, l'enciclopedia libera.
OpenVPN
Logo
Sviluppatore James Yonan
Ultima versione 2.3.2 (3 giugno 2013)
Sistema operativo Multipiattaforma
Linguaggio
Genere Sicurezza informatica
Licenza GNU General Public License
(Licenza libera)
Sito web openvpn.net

OpenVPN è un programma VPN scritto da James Yonan e rilasciato con licenza GPL. È usato per creare tunnel crittografati punto-punto fra i computer. Permette agli host di autenticarsi l'uno con l'altro per mezzo di chiavi private condivise, certificati digitali o credenziali utente/password. Usa in modo massiccio le librerie di cifratura OpenSSL e usa il protocollo SSLv3/TLSv1. È disponibile su GNU/Linux, xBSD, Mac OS X, Solaris e Windows 2000/XP/Vista/7. Offre un ricco insieme di caratteristiche per il controllo e la sicurezza. Non è una VPN con interfaccia web, e non è compatibile con IPsec o altri programmi VPN. L'intero programma è un singolo eseguibile binario usato per le connessioni sia dal lato server che dal lato client, da un file di configurazione opzionale, e da uno o più file contenenti le chiavi, in funzione del metodo di autenticazione usato.

Crittografia[modifica | modifica wikitesto]

OpenVPN usa le librerie OpenSSL per la cifratura sia del canale dati che del canale di controllo. Fa eseguire a OpenSSL tutto il lavoro di cifratura e autenticazione, permettendo a OpenVPN di scegliere fra tutti gli algoritmi di cifratura disponibili nel pacchetto OpenSSL. Può usare l'accelerazione hardware per avere migliori prestazioni nella cifratura.

Autenticazione[modifica | modifica wikitesto]

OpenVPN permette ai computer diversi metodi di autenticarsi l'uno con l'altro:

Il metodo con chiave segreta condivisa è il più semplice e immediato da implementare, quello basato sui certificati è il più robusto e completo ma richiede la definizione di una Public Key Infrastructure (PKI). L'autenticazione con utente/password è una caratteristica nuova introdotta con la versione 2.0 e si può usare con o senza il certificato del client (il server deve comunque avere il proprio certificato). Il pacchetto tar del codice sorgente include uno script perl per verificare le credenziali utente/password per mezzo dei moduli PAM e dei plugin in C auth-pam.

Rete[modifica | modifica wikitesto]

OpenVPN concentra tutto il traffico dati e di controllo su una singola porta. Può usare una porta UDP (preferita e predefinita) oppure TCP. Può funzionare attraverso la maggior parte dei server proxy (HTTP incluso) e non ha problemi ad integrarsi col NAT. Il server può "inviare" alcune opzioni di configurazione di rete ai client. Fra queste, l'indirizzo IP, gli instradamenti, e alcune opzioni di connessione.

OpenVPN offre due tipi di interfaccia di rete avvalendosi del driver Universal TUN/TAP; può creare sia tunnel IP punto-punto al livello 3 dello stack OSI (configurazione routing), come anche interfacce Ethernet virtuali "tap" a livello 2 sulle quali veicolare l'intero traffico Ethernet, broadcast inclusi (configurazione bridging). OpenVPN può anche usare, come opzione, la libreria di compressione LZO per comprimere il flusso di dati.

IANA ha assegnato ufficialmente la porta 1194 a OpenVPN, e le versioni più recenti del programma ora la usano come predefinita. La versione 2.0 permette ad un processo di gestire più tunnel contemporanei, superando la restrizione di "un tunnel per processo" della serie 1.x.

Sicurezza[modifica | modifica wikitesto]

OpenVPN offre diverse caratteristiche di sicurezza interne: può rilasciare i privilegi di root (non disponibile su Microsoft Windows), può usare mlockall per evitare che dati sensibili siano paginati nella memoria virtuale su disco, e può essere costretto ad una chroot jail (non disponibile su Microsoft Windows) dopo l'inizializzazione.

Inoltre è disponibile anche la funzione di autenticazione di singolo pacchetto HMAC per aggiungere un ulteriore livello di sicurezza alla fase in cui viene instaurata la connessione (definito "HMAC Firewall" dall'autore); in questo caso ogni pacchetto che non presentasse la firma HMAC prestabilita verrebbe semplicemente scartato senza essere elaborato, il che permette di difendere l'host da:

Infine, configurando i client per accettare solo certificati di tipo server dalla macchina che richiede una connessione, può evitare attacchi del genere Man in the middle.

Inoltre OpenVPN aggiunge un livello intrinseco di sicurezza, per il semplice fatto di essere open source quindi può essere ispezionato il codice del software. Questo lascia la possibilità di verificare che non sono presenti backdoor o assimilati.

Collegamenti esterni[modifica | modifica wikitesto]