Dopo due anni e mezzo dalla pubblicazione della versione 2.5, è stato rilasciato OpenVPN 2.6.0, un pacchetto per la creazione di reti private virtuali che consente di stabilire una connessione crittografata tra due macchine client o di gestire un server VPN centralizzato per il funzionamento simultaneo di più client. Il codice di OpenVPN è distribuito sotto licenza GPLv2 e i pacchetti binari pronti sono disponibili per Debian, Ubuntu, CentOS, RHEL e Windows.
Novità principali:
- È garantito il supporto per un numero illimitato di connessioni.
- Includo il modulo del kernel ovpn-dco, che consente di migliorare notevolmente le prestazioni. VPN. Il miglioramento delle prestazioni è ottenuto trasferendo tutte le operazioni di crittografia, elaborazione dei pacchetti e gestione del canale di comunicazione nel kernel Linux, il che elimina le spese generali associate ai cambi di contesto, ottimizza il funzionamento attraverso accessi diretti alle API interne del kernel ed evita la lenta trasmissione dei dati tra il kernel e lo spazio utente (la crittografia, la decrittazione e il routing vengono eseguiti dal modulo senza inviare il traffico al gestore dello spazio utente).
Nei test condotti, rispetto a una configurazione basata su interfaccia tun, l'uso del modulo lato client e server con la crittografia AES-256-GCM ha permesso di ottenere un incremento della larghezza di banda di 8 volte (da 370 Mbit/s a 2950 Mbit/s). Utilizzando il modulo solo dal lato client, la larghezza di banda per il traffico in uscita è aumentata di tre volte, mentre non è cambiata per il traffico in ingresso. Con l'uso del modulo solo dal lato server, la larghezza di banda è aumentata di 4 volte per il traffico in ingresso e del 35% per quello in uscita.
- È stata fornita la possibilità di utilizzare la modalità TLS con certificati autofirmati (con l'opzione "—peer-fingerprint", non è necessario specificare i parametri "—ca" e "—capath", evitando così di avviare un server PKI basato su Easy-RSA o software simile).
- Nel server UDP è stata implementata una modalità di negoziazione della connessione basata su Cookie, in cui viene utilizzato un Cookie basato su HMAC come identificatore di sessione, consentendo al server di effettuare la verifica senza mantenere uno stato.
- È stata aggiunta la supporto per la build con la libreria OpenSSL 3.0. È stato aggiunto il parametro «—tls-cert-profile insecure» per selezionare il livello minimo di sicurezza di OpenSSL.
- Sono stati aggiunti nuovi comandi di controllo remote-entry-count e remote-entry-get per conteggiare il numero di connessioni esterne e fornire l'elenco di esse.
- Nel processo di negoziazione delle chiavi, il metodo prioritario per ottenere il materiale per la generazione delle chiavi è ora il meccanismo EKM (Exported Keying Material, RFC 5705), invece del meccanismo specifico di OpenVPN PRF. Per utilizzare EKM è necessaria la libreria OpenSSL o mbed TLS 2.18+.
- È stata garantita la compatibilità con OpenSSL in modalità FIPS, consentendo l'uso di OpenVPN su sistemi che soddisfano i requisiti di sicurezza FIPS 140-2.
- In mlock è stata implementata una verifica per riservare una memoria di dimensioni sufficienti. Quando sono disponibili meno di 100 MB di RAM, viene effettuata una chiamata a setrlimit() per aumentare il limite.
- È stata aggiunta l'opzione «—peer-fingerprint» per verificare l'accuratezza o il vincolo del certificato in base all'impronta digitale basata sull'hash SHA256, senza utilizzare tls-verify.
- Per gli script è stata introdotta la possibilità di autenticazione posticipata (deferred), implementata tramite l'opzione «—auth-user-pass-verify». Negli script e nei plugin è stata aggiunta la funzionalità per informare il cliente sullo stato di attesa (pending) durante l'autenticazione posticipata.
- È stata aggiunta la modalità di compatibilità (—compat-mode), che consente di connettersi a server più vecchi che utilizzano OpenVPN 2.3.x o versioni precedenti.
- Nell'elenco passato tramite il parametro «—data-ciphers», è consentito specificare il prefisso «?» per identificare gli algoritmi di crittografia facoltativi, che saranno utilizzati solo se supportati nella SSL-libreria.
- È stata introdotta l'opzione «—session-timeout», che consente di limitare il tempo massimo di sessione.
- Nel file di configurazione è possibile specificare nome e password utilizzando il tag .
- È stata fornita la possibilità di ottimizzare dinamicamente l'MTU del client, in base ai dati sull'MTU forniti dal server. Per modificare la dimensione massima dell'MTU è stata introdotta l'opzione «—tun-mtu-max» (default 1600).
- È stato aggiunto il parametro «—max-packet-size» per definire la dimensione massima dei pacchetti di controllo.
- È stata rimossa la supporto per la modalità di avvio di OpenVPN attraverso inetd. L'opzione ncp-disable è stata eliminata. Sono state dichiarate obsolete l'opzione verify-hash e la modalità delle chiavi statiche (rimane solo TLS). I protocolli TLS 1.0 e 1.1 sono stati classificati come obsoleti (il parametro tls-version-min è impostato su 1.2 per default). È stata rimossa l'implementazione integrata del generatore di numeri pseudocasuali (—prng), si consiglia di utilizzare l'implementazione PRNG delle librerie crittografiche mbed TLS o OpenSSL. È stata interrotta la supporto per il filtro dei pacchetti PF (Packet Filtering). La compressione è disattivata per default (—allow-compression=no).
- CHACHA20-POLY1305 è stato aggiunto all'elenco dei cipher predefiniti.
Fonte: opennet.ru
