Nach zweieinhalb Jahren seit der Veröffentlichung von Version 2.5 ist das Release von OpenVPN 2.6.0 bereit. Dieses Softwarepaket ermöglicht die Einrichtung virtueller privater Netzwerke und schafft eine verschlüsselte Verbindung zwischen zwei Client-Geräten oder ermöglicht den Betrieb eines zentralen VPN-Servers, um mehreren Clients gleichzeitig zu dienen. Der OpenVPN-Code wird unter der GPLv2-Lizenz verbreitet, und fertige Binärpakete werden für Debian, Ubuntu, CentOS, RHEL und Windows bereitgestellt.
Hauptneuheiten:
- Es wird die Unterstützung einer unbegrenzten Anzahl von Verbindungen bereitgestellt.
- Das Kernel-Modul ovpn-dco ist integriert, was die Leistung erheblich steigert. VPN. Die Beschleunigung erfolgt durch die Auslagerung aller Verschlüsselungs-, Paketverarbeitungs- und Verkehrskanalverwaltungsoperationen in den Linux-Kernel. Dies erleichtert die Reduzierung von Overhead, der mit dem Kontextwechsel verbunden ist, ermöglicht Optimierungen durch direkten Zugriff auf die internen APIs des Kernels und beseitigt die langsame Datenübertragung zwischen dem Kernel und dem Benutzermodus (Verschlüsselung, Entschlüsselung und Routing erfolgt im Modul, ohne den Verkehr an den Handler im Benutzermodus zu senden).
In den durchgeführten Tests im Vergleich zu einer Konfiguration auf der Grundlage der tun-Schnittstelle ermöglichte die Verwendung des Moduls auf Client- und Serverseite mit dem AES-256-GCM-Verschlüsselungsalgorithmus eine Steigerung der Bandbreite um das Achtfache (von 370 Mbit/s auf 2950 Mbit/s). Bei der Verwendung des Moduls nur auf der Client-Seite erhöhte sich die Bandbreite für den ausgehenden Verkehr um das Dreifache, während sich die für den eingehenden Verkehr nicht änderte. Bei der Verwendung des Moduls nur auf der Serverseite stieg die Bandbreite für den eingehenden Verkehr um das Vierfache und für den ausgehenden um 35%.
- Es besteht die Möglichkeit, den TLS-Modus mit selbstsignierten Zertifikaten zu verwenden (bei Verwendung der Option «—peer-fingerprint» können die Parameter «—ca» und «—capath» weggelassen werden, wodurch ein PKI-Server auf Basis von Easy-RSA oder ähnlicher Software nicht gestartet werden muss).
- Im UDP-Server wurde ein Verbindungsvereinbarungsmodus implementiert, der auf Cookies basiert, wobei als Sitzungsidentifikator ein auf HMAC basierendes Cookie verwendet wird, was dem Server die Validierung ohne Speicherung des Status ermöglicht.
- Die Unterstützung für Builds mit der OpenSSL 3.0-Bibliothek wurde hinzugefügt. Der Parameter „—tls-cert-profile insecure“ ermöglicht die Auswahl des minimalen Sicherheitsniveaus von OpenSSL.
- Neue Steuerbefehle remote-entry-count und remote-entry-get wurden hinzugefügt, um die Anzahl externer Verbindungen zu zählen und deren Liste anzuzeigen.
- Im Prozess der Schlüsselverhandlung ist der EKM-Mechanismus (Exported Keying Material, RFC 5705) jetzt die bevorzugte Methode zur Bereitstellung von Material für die Schlüsselgenerierung, anstelle des spezifischen OpenVPN PRF-Mechanismus. Um EKM zu verwenden, ist die OpenSSL-Bibliothek oder mbed TLS 2.18+ erforderlich.
- Die Kompatibilität mit OpenSSL im FIPS-Modus wurde sichergestellt, was den Einsatz von OpenVPN auf Systemen ermöglicht, die den Sicherheitsanforderungen von FIPS 140-2 entsprechen.
- In mlock wurde eine Überprüfung des Speichervolumens implementiert. Bei weniger als 100 MB RAM wird ein setrlimit()-Aufruf zur Erhöhung des Limits durchgeführt.
- Die Option „—peer-fingerprint“ wurde hinzugefügt, um die Gültigkeit oder Zuordnung des Zertifikats anhand des SHA256-Hash-Werts des Fingerabdrucks ohne tls-verify zu überprüfen.
- Für Skripte wurde die Möglichkeit zur verzögerten Authentifizierung (deferred) eingeführt, die durch die Option „—auth-user-pass-verify“ realisiert wird. In Skripten und Plugins wurde die Unterstützung zur Benachrichtigung des Clients über die ausstehende (pending) Authentifizierung bei Verwendung der verzögerten Authentifizierung hinzugefügt.
- Es wurde ein Kompatibilitätsmodus (—compat-mode) hinzugefügt, der die Verbindung zu älteren Servern ermöglicht, die OpenVPN 2.3.x oder frühere Versionen verwenden.
- In der Liste, die über den Parameter „—data-ciphers“ übergeben wird, darf das Präfix „?“ verwendet werden, um optionale Verschlüsselungen anzugeben, die nur bei Unterstützung in SSL-der Bibliothek aktiviert werden.
- Die Option „—session-timeout“ wurde hinzugefügt, mit der die maximale Sitzungszeit eingeschränkt werden kann.
- Im Konfigurationsfile kann der Benutzername und das Passwort über das Tag angegeben werden.
- Die dynamische Anpassung der MTU des Clients auf Basis der vom Server übermittelten MTU-Daten wurde ermöglicht. Um die maximale Größe der MTU zu ändern, wurde die Option „—tun-mtu-max“ hinzugefügt (Standardwert 1600).
- Der Parameter „—max-packet-size“ wurde hinzugefügt, um die maximale Größe von Steuerpaketen zu bestimmen.
- Die Unterstützung für den OpenVPN-Startmodus über inetd wurde entfernt. Die Option ncp-disable wurde gestrichen. Die Optionen verify-hash und der statische Schlüsselmodes sind als veraltet markiert (nur TLS bleibt bestehen). Die Protokolle TLS 1.0 und 1.1 wurden ebenfalls als veraltet eingestuft (die Standard-Einstellung für tls-version-min ist auf 1.2 gesetzt). Die integrierte Implementierung des Pseudozufallszahlengenerators (—prng) wurde entfernt; es sollte die PRNG-Implementierung aus den Kryptobibliotheken mbed TLS oder OpenSSL verwendet werden. Die Unterstützung für die Packet Filtering (PF) wurde eingestellt. Die Kompression ist standardmäßig deaktiviert (—allow-compression=no).
- CHACHA20-POLY1305 wurde zur Standardverschlüsselungsliste hinzugefügt.
Quelle: opennet.ru
