OpenVPN: Unterschied zwischen den Versionen

Aus Foxwiki
Markierung: Ersetzt
Zeile 46: Zeile 46:
<div class="mw-collapsible-content">'''Antwort5'''</div>
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
</div>
= Wikipedia =
'''OpenVPN''' ist eine [[freie Software]] zum Aufbau eines [[Virtual Private Network|Virtuellen Privaten Netzwerkes]] (VPN) über eine [[Verschlüsselung|verschlüsselte]] [[Transport Layer Security|TLS]]-Verbindung. Zur Verschlüsselung kann [[OpenSSL]] oder [[mbed TLS]] benutzt werden. OpenVPN verwendet wahlweise [[User Datagram Protocol|UDP]] oder [[Transmission Control Protocol|TCP]] zum Transport.
OpenVPN steht unter der [[GNU General Public License|GNU GPL]] und unterstützt die [[Betriebssystem]]e [[Linux]] (z.&nbsp;B. [[Android (Betriebssystem)|Android]], [[Maemo]] und [[MeeGo]] sowie das Router-Linux [[OpenWrt]]), [[Solaris (Betriebssystem)|Solaris]], [[OpenBSD]], [[FreeBSD]], [[NetBSD]], [[macOS]], [[QNX]], [[Microsoft Windows|Windows]] Vista/7/8/10 und [[iOS (Betriebssystem)|iOS]]. Weiterhin stehen angepasste Implementierungen für eine Vielzahl von Linux-basierten Endgeräten wie z.&nbsp;B. [[Set-Top-Box|Settop-Boxen]] der Firma [[Dream Multimedia]] oder für Router der [[Fritz!Box]]-Linie der Firma [[AVM GmbH|AVM]] zur Verfügung.
== Hintergrund ==
Oft soll eine sichere, von Dritten nicht lesbare Kommunikation über ein unsicheres [[Rechnernetz|Netzwerk]] durchgeführt werden. Ein solches unsicheres Netz ist etwa das [[Internet]] oder auch ein lokales, nicht verschlüsseltes [[Wireless Local Area Network|Wireless LAN]]. Dabei sind zwei Aspekte wesentlich: Eine hinreichende [[Verschlüsselung]] der Kommunikationsinhalte und die [[Authentifizierung]] der beteiligten Kommunikationspartner.
Diese Sicherheitseigenschaften können durch geeignete [[Netzwerkprotokoll|Protokolle]] (z.&nbsp;B. [[Secure Shell|SSH]], [[Hypertext Transfer Protocol Secure|HTTPS]], [[SSH File Transfer Protocol|SFTP]]) von jeder Anwendung bereitgestellt werden. Alternativ kann diese Sicherheit auch von einer zentralen Stelle, unabhängig von den einzelnen Anwendungen, wünschenswert sein. Die Vorteile dieses zentralen Ansatzes liegen in der nur einmaligen Implementierung der Sicherheitsfunktionen, dem geringeren Wartungsaufwand und der Möglichkeit, auch die Kommunikation von Software anderer Hersteller zu sichern, auf die kein Einfluss besteht.
Eine solche, zentral bereitgestellte Sicherung ist ein [[Virtual Private Network]] (VPN). OpenVPN stellt eine von vielen Implementierungen eines VPNs dar.
== Funktionsweise ==
Kommunikationspartner können einzelne Computer sein oder ein Netzwerk von Computern. Typische Anwendungsfälle sind die Verbindung einzelner Außendienstmitarbeiter in das Netzwerk ihrer Firma, die Verbindung einer Filiale mit dem Rechenzentrum oder die Verbindung örtlich verteilter Server oder Rechenzentren untereinander. In jedem Fall baut einer der beiden Kommunikationsteilnehmer die Verbindung auf (Client), und der andere wartet auf eingehende Verbindungen (Server). Dazu muss der Server unter einer festen [[IP-Adresse]] oder unter einem festen [[Hostname]]n erreichbar sein. Dies kann für Computer, die aufgrund von Einwählverbindungen mit ständig wechselnden IP-Adressen konfrontiert sind, auch mit Hilfe eines [[Dynamisches DNS|dynamischen DNS-Dienstes]] erfolgen.
Befindet sich vor dem VPN-Gateway ein [[Paketfilter]] oder [[Proxy (Rechnernetz)|Proxy]] oder wird eine Adressumsetzung ([[Network Address Translation|NAT]]) durchgeführt, so müssen diese Dienste so konfiguriert werden, dass ein in der Konfiguration von OpenVPN zu vergebender UDP- oder TCP-[[Port (Protokoll)|Port]] durchgelassen wird und zwar für Input, Forward und Output. Eine OpenVPN-Serverinstanz kann dabei nur für einen Port und ein Protokoll konfiguriert werden. Ein gemischter Betrieb, in welcher eine Clientverbindung wahlweise auf TCP oder UDP ermöglicht ist, ist nur mit zwei parallel laufenden Serverinstanzen realisierbar. OpenVPN zog nach der [[Beta-Phase]] der Version 2.0 vom damals standardmäßig verwendeten Port 5000 auf den für OpenVPN registrierten Port 1194 um.<ref name="Protocol">{{Internetquelle|url=https://openvpn.net/index.php/open-source/documentation/miscellaneous/protocol-compatibility.html|titel=Protocol Compatibility|hrsg=OpenVPN Technologies|zugriff=2016-02-17}}</ref> Der konkret verwendete Port kann beliebig in der Konfiguration verändert werden.
== Erkennbarkeit ==
OpenVPN-Verbindungen können trivial mittels einer [[Deep Packet Inspection]] an den bekannten Header-Daten der übertragenen Pakete erkannt werden, unabhängig welches Protokoll oder welcher Port verwendet wird.<ref>{{Internetquelle | url = https://www.bestvpn.com/guides/how-to-hide-openvpn-traffic-an-introduction/ | titel = How to hide OpenVPN traffic – an introduction | zugriff = 2018-09-18 }}</ref> Zwar kann durch die Deep Packet Inspection nicht der Inhalt im verschlüsselten Tunnel ermittelt werden, aber es kann beispielsweise mit der Erkennung die Verbindung blockiert, die Kommunikationspartner ermittelt und die Daten dazu protokolliert werden. Dieser Punkt ist vor allem dann wesentlich, wenn der Einsatz von VPN-Verbindungen in bestimmten Umgebungen nicht zulässig ist, beispielsweise in Ländern, die verschlüsselte Kommunikationsverbindungen verbieten oder zivilrechtlich bei der Umgehung von Netzsperren in Firmennetzwerken.
== Betriebsmodi ==
OpenVPN kennt zwei Betriebsmodi: Routing und Bridging, die in den folgenden Abschnitten dargestellt werden.
=== Routing ===
Der [[Router|Routing]]-Modus ist die einfachste Form der sicheren Kommunikation und stellt einen verschlüsselten Tunnel zwischen zwei Gegenstellen her, über den ausschließlich IP-Pakete geleitet werden ([[Layer 3#Schicht 3 – Vermittlungsschicht|Layer 3]]). Dazu wird jeder Gegenstelle eine virtuelle IP-Adresse eines fiktiven [[Subnetz]]es zugewiesen (z.&nbsp;B. 10.8.0.1 und 10.8.0.2).
Der Zugriff auf das dahinter liegende Netzwerk ist grundsätzlich nicht direkt möglich (Point-to-Point Verbindung). Um die dortigen Adressen zu erreichen, muss die Gegenstelle die Datenpakete mittels IP-Forwarding und Einträgen in der Routingtabelle weitervermitteln oder auf [[Network Address Translation]] zurückgreifen.
=== Bridging ===
Im Gegensatz zum Routing ist im [[Bridge (Netzwerk)|Bridging]]-Modus ein vollständiges Tunneln von Ethernet-Frames ([[OSI-Modell#Schicht 2 – Sicherungsschicht|Layer 2]]) möglich. Es erlaubt somit beispielsweise auch den Einsatz von alternativen Protokollen wie [[Internetwork Packet Exchange|IPX]] und das Senden von [[Wake On LAN|Wake-On-LAN]]-Paketen.
Ein Client integriert sich völlig transparent in das Einwahlnetz und erhält eine IP-Adresse des dortigen Subnetzes zugewiesen, so dass auch Broadcasts weitergeleitet werden. Letzteres ist insbesondere für die automatische Windows-Namensauflösung des SMB-Protokolls nötig.
Um sich in das vorhandene Subnetz einklinken zu können, muss die von OpenVPN verwendete virtuelle Netzwerkkarte, das sog. ''{{lang|en|TAP-Device}}'', über eine Netzwerkbrücke mit dem tatsächlichen Netzwerk verbunden werden.
Bridging ist etwas ineffizienter als Routing (schlechter skalierbar). Außerdem ist eine Beschränkung des Clientzugriffs schwieriger zu bewerkstelligen als beim Routing.
== Authentifizierung ==
Zur Authentifizierung stellt OpenVPN zwei wesentliche Methoden zur Verfügung:<ref name="Security">{{Internetquelle|url=https://openvpn.net/index.php/open-source/documentation/security-overview.html|titel=Security Overview|hrsg=OpenVPN Technologies|zugriff=2016-02-17}}</ref>
=== Pre-shared Key ===
Bei Austausch eines „{{lang|en|pre-shared key}}“ (ein statischer Schlüssel/Passwort) werden die Daten mit diesem ver- und entschlüsselt. Dieses Verfahren ist einfach anzuwenden. Es wird beispielsweise bei kommerziellen [[Proxy (Rechnernetz)|Proxy-Anbietern]], welche auch [[Anonymisierungsdienst]]e auf Basis von OpenVPN anbieten, verwendet. Diese Methode hat zwei Nachteile:
* Der Schlüssel kann durch unsachgemäßen Umgang [[Kompromittierung (Kryptologie)|kompromittiert]] werden (z.&nbsp;B. Aufschreiben, bei dem nach Gebrauch die Vernichtung vergessen wird)
* Brutforce-Attacken auf den Schlüssel ähnlich wie bei einem Passwort
Daher sollte der gewählte Schlüssel in hinreichender Länge generiert werden und aus einem möglichst großen Zeichensatz bestehen. Der Schlüssel sollte nicht selbst wie ein Passwort gewählt werden. Eine Speicherung des Schlüssels sollte auf ein Notwendigstes reduziert werden, indem der Schlüssel nur auf den Endpunkten der VPN-Verbindung liegt. Das Notieren oder Eintragen des Schlüssels in einer Passwortverwaltung stellt ein zusätzliches Sicherheitsrisiko dar. Auf dem Endgerät sollte der pre-shared-key durch ein Passwort verschlüsselt werden, um das Netzwerk bei Abhandenkommen des Gerätes nicht zu gefährden.<ref>{{Internetquelle |url=https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Internetsicherheit/isi_vpn_leitlinie_pdf.pdf?__blob=publicationFile&v=1#page=14 |titel=Virtuelles Privates Netz – BSI-Leitlinie zur Internet-Sicherheit |hrsg=[[Bundesamt für Sicherheit in der Informationstechnik]] |datum=2009 |zugriff=2018-09-18 }}</ref>
=== Zertifikate ===
Bei der Anwendung einer ''[[Digitales Zertifikat|zertifikatbasierten]] Authentifizierung'' über das [[Transport Layer Security|TLS]]-Protokoll werden private und öffentliche Schlüsselpaare beziehungsweise [[X.509]]-Zertifikate verwendet.
Der Server und die jeweiligen Nutzer besitzen je ein eigenes Zertifikat (öffentlich/privat). Der OpenVPN-Server lässt nur Verbindungen zu, die von einer ihm bekannten [[Zertifizierungsstelle]] signiert wurden. OpenVPN enthält Skripte, die die einfache Zertifikatserstellung ohne weitere Vorkenntnisse basierend auf [[OpenSSL]] ermöglichen (easy-rsa).
<!-- Gehört das hierhin??-->
Um eine Verbindung aufzubauen, schickt der [[Client]] Daten an den [[Server]] ([[Secure Sockets Layer|SSL]]-Version und zufällige Daten). Der Server schickt die gleichen Daten und sein Zertifikat zurück. Der Client autorisiert das Zertifikat. Bei beidseitiger Authentifizierung schickt der Client auch sein Zertifikat an den Server. Hat die Überprüfung geklappt, erstellt der Client das „{{lang|en|pre-master secret}}“ und verschlüsselt dies mit dem öffentlichen Schlüssel des Servers. Der Server entschlüsselt die Daten mit seinem privaten Schlüssel und erstellt das „{{lang|en|master-secret}}“. Mit diesem werden Sitzungsschlüssel erstellt. Das sind einmalige Schlüssel, mit denen die Daten ver- und entschlüsselt werden. Der Client teilt dem Server mit, dass ab nun alle Daten mit dem Sitzungsschlüssel verschlüsselt werden. Der Server bestätigt dies, der Tunnel ist aufgebaut. Nach einer gewissen Zeitspanne ersetzt OpenVPN den Sitzungsschlüssel automatisch.
Die zertifikatbasierte Authentifizierung gilt als die sicherste Form der Anmeldung. Um die Sicherheit zu erhöhen, empfiehlt es sich, die Zertifikate auf einer [[Smartcard]] auszulagern. OpenVPN unterstützt alle Karten, auf die mittels Windows-Crypto-API oder [[PKCS]] #11 zugegriffen werden kann.
== Frontends ==
Für OpenVPN gibt es neben der [[Kommandozeile]] diverse grafische Frontends. So existieren z.&nbsp;B. das ''OpenVPN GUI für [[Microsoft Windows|Windows]]'', das Programm ''Tunnelblick'' für [[macOS]], ''OpenVPN-Admin'', ein auf [[C-Sharp|C#]] basierendes, in [[Mono (Software)|Mono]] geschriebenes Frontend, KVpnc, eine in das [[K Desktop Environment]] eingebundene Applikation sowie eine Einbindung in [[NetworkManager]] ([[Gnome]] und K Desktop Environment).
Nachfolgend eine Liste der populären Programme für die jeweiligen Betriebssysteme und Geräte:<ref>[https://community.openvpn.net/openvpn/wiki/RelatedProjects#ClientGUI Client GUI]</ref>
=== Windows ===
* OpenVPN GUI
* OpenVPN MI GUI, eine Modifikation des Original-GUIs, das die OpenVPN-Managementschnittstelle verwendet und auch ohne Administratorrechte auskommt.
* OpenVPN Admin
* Securepoint OpenVPN Client Windows, kommt ohne Administratorrechte aus und hat einige Komfortfunktionen (Kennwörter speichern etc.).
* Viscosity (Kommerziell)
=== macOS ===
* Tunnelblick
* Viscosity
* Shimo
=== iOS ===
* GuizmOVPN
* OpenVPN Connect (offizielle Version)<ref>[https://www.heise.de/newsticker/meldung/Offizieller-OpenVPN-Client-fuer-iOS-1786006.html Heise – Offizieller OpenVPN-Client für iOS]</ref>
=== Linux ===
* [[NetworkManager]]
* KVPNC
* OpenVPN Admin
=== OpenWRT ===
* OpenVPN HowTo
=== Fritz!Box ===
* Fritz!Box OpenVPN HowTo
* Freetz OpenVPN HowTo
*OpenVPN Plugin für GP3
=== Dreambox ===
* OpenVPN Plugin für GP3
=== Android ===
* OpenVPN Connect (offizielle Version)
* OpenVPN für Android ohne Root by Arne Schwabe
=== Maemo ===
* OpenVPN für Maemo 5


[[Kategorie:Virtual Private Network]]
[[Kategorie:Virtual Private Network]]

Version vom 1. März 2023, 00:37 Uhr

topic - Kurzbeschreibung

Beschreibung

Installation

Anwendungen

Fehlerbehebung

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Siehe auch

Dokumentation

RFC

Man-Pages

Info-Pages

Links

Einzelnachweise

Projekt

Weblinks

  1. https://openvpn.net

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5