VPN (Virtual Private Network)

aus HaBo WiKi, der freien Wissensdatenbank von http://www.hackerboard.de
(Weitergeleitet von VPN (Virtual Privat Network))
Wechseln zu: Navigation, Suche

VPN (Virtual Private Network - dt.: virtuelles privates Netz) ist ein reines Softwareprodukt (daher „virtuell“) und dient der Vernetzung von entfernten Geräten durch ein anderes (meist öffentliches) Netzwerk hindurch.

Um dies zu realisieren, wird über ein physikalisches Netz ein virtuelles Teilnetz gelegt, welches logisch (jedoch nicht physikalisch) vom Rest des Netzes abgekapselt arbeitet: Das VPN. Es basiert auf einer Tunneltechnik, ist weitgehend unabhängig der physikalischen Topologie individuell konfigurierbar, kundenspezifisch und in sich geschlossen (daher „privat“).

Ihrem Ursprung nach bildeten VPNs innerhalb eines öffentlichen Wählnetzes logische Teilnetze, wie Netze der Sprachkommunikation, X.25, Frame Relay oder ISDN. Heute wird VPN umgangssprachlich eher mit einem (meist verschlüsselten) virtuellen Netzwerk assoziiert, welches sich über ein physikalisch vorhandenes TCP/IP-Netz legt, wie z.B. das Internet. Daran angelehnt behandelt der Artikel dieses sprachgebräuchliche (IP-) VPN.

70p623 Thanks alot - your answer solved all my problems after several days struggling

Technische Details

Für den IP-Verkehr setzt VPN in der Regel auf den OSI-Schichten 2 oder 3 auf. Dies ist technisch möglich, da es nicht die IP-Adressen der originalen Netzwerkpakete manipuliert (das ginge nur auf der OSI-Schicht 3 oder höher). VPN verwendet einen gänzlich anderen Ansatz zur Adressumsetzung, welcher es sogar erlaubt, beliebige Protokolle mit andersartigen Adressierungsmechanismen (z.B. IPX/SPX) über ein IP-Netz zu übertragen. Ohne sie zu manipulieren werden dazu die Originalpakete in ein Tunnelingprotokoll gepackt, wobei sich dieses – wie im Abschnitt „Leicht erklärt“ bereits angesprochen – separat adressieren lässt. Je nach verwendetem VPN-Protokoll können zudem Kompression und Verschlüsselung der Pakete Anwendung finden.

Das Internetprotokoll (IP) dient VPN lediglich als Transportmittel. Der Inhalt der Netzwerkpakete und die Art des Tunnels werden durch andere Protokolle bestimmt. Wie im VPN-Artikel der Wikipedia auflistet, ist es z.B. möglich, eine VPN-Verbindung mithilfe eines der folgenden Protokolle aufzubauen: via IPSec (Internet Security Protocol - für Site-to-Site-VPNs und End-to-Site geeignet), TLS/SSL (Transport Layer Security oder Secure Sockets Layer - wird hauptsächlich für End-to-Site eingesetzt), ViPNet (besonders für End-to-End, aber auch für End-to-Site und Site-to-Site geeignet), L2TP und PPTP (Layer 2 Tunneling Protocol und Point-to-Point Tunneling Protocol - beides Layer 2 VPN Protokolle).

Hinweis: Alternativ zu PPTP kann mithilfe von PPPD (PPP-Dämon) und SSH in Kombination der gesamte IP-Verkehr durch einen Tunnel geleitet werden. Die Lösung ist ähnlich dem PPTP ohne dessen Sicherheitsprobleme.

Die Arten über die eine Firewall den VPN-Tunnel unterstützen kann

  1. Einige Firewalls können als VPN-Einwahlknoten für externe „Home-Anwender“ fungieren (manchmal wird dies nicht durch einen eigenen Dienst auf der Firewall, sondern durch einen VPN-Konzentrator realisiert, was bedeutet, dass die eingehenden VPN-Anfragen an einen eigenen VPN-Server weitergereicht werden).
  2. Professionelle Firewalls bieten oft eine VPN-Verbindung zu einer weiteren Firewall an und ermöglichen es so, zwei „private Netze“ über das Internet hinweg miteinander zu verbinden (also eine Kopplung von zwei Firmennetzen über 2 VPN Gateways, welche sich in der Firewall befinden).
  3. Die meisten Firewalls bieten lediglich eine Unterstützung bestimmter VPN-Tunnel an – also eine Möglichkeit, durch die Firewall hindurch eine VPN-Verbindung zu einem externen VPN-Knoten aufzubauen. Vor allem bei älteren Firewalls gilt dies lediglich für einen einzigen Client, da der VPN-Rückgabekanal mit dem Rechner verbunden werden muß (per Port-Forwarding-Regel). Um eine entsprechende Regel dynamisch zu erzeugen, bieten einige Firewalls den „VPN Pass-Through“-Modus an, der es ermöglicht, dass ein beliebiger Client die Verbindung anfordern kann. Abhängig von der Firewall wird dadurch auch erreicht, dass ein beliebiger anderer Client eine VPN-Verbindung aufnehmen kann, nachdem die bestehende VPN-Verbindung abgebaut wurde. Neuere Modelle kennen die VPN-Protokolle und sind dadurch in der Lage, die Verbindungen zu verwalten, wodurch die Zuordnung der Rückgabeports für mehrere VPN-Verbindungen parallel möglich wird.

xXr9a3 That's way the bestest answer so far!

Der VPN-Tunnel

Der Beitrag lehnt sich an das Beispiel aus dem Tunnel-Beitrag an. Im Folgenden wird die VPN-Kommunikation über "Port X" zur besseren Lesbarkeit stark vereinfacht formuliert.

Einen Rechner per VPN auf ein anderes Netz zugreifen lassen (Site-to-End)

In diesem Beispiel läuft auf dem Internetserver ein VPN-Dienst, der an einem festen Port X auf Anfragen wartet. Dieser Server wird im folgenden VPN-Server genannt. Aus dem internen Netz wird über eine VPN-Client-Software eine VPN-Sitzung eröffnet:

[VPN-Client = Verbindung zum VPN-Server:PortX herstellen]--privates Netz 1
-->[Firewall = PortX erlaubt]--externes Netz-->
[VPN-Server:PortX = VPN-Dienst:Authentifizierung durchführen + Sitzung erstellen 
+ der Sitzung virtuell eine interne IP-Adresse zuweisen]
Der VPN-Server:
Jeder Sitzung wird eine freie, interne IP-Adresse aus einem Pool zugewiesen, den der VPN-Server verwaltet. Alle künftig eingehenden Pakete der Sitzung erhalten diese IP-Adresse als Absender, ehe sie in das interne, private Netz weitergeleitet werden.
Der VPN-Client:
Nachdem die Sitzung aufgebaut wurde, verwaltet die VPN-Client-Software die Netzwerkkarten des PCs (wie das genau funktioniert, wird unter „Die virtuelle Netzwerkkarte einer VPN-Sitzung“ erklärt). Die Tunnelsoftware fängt die ausgehenden Anfragen des Client ab, wobei die Pakete als Absender die vom VPN-Server zugewiesene IP-Adresse der VPN-Sitzung erhalten. Nun werden die Pakete inklusive der Absenderadresse verschlüsselt, in das VPN-Protokoll eingebettet und unter der realen Absenderadresse des Clients an den VPN-Partner geschickt. Dann passieren die Pakete den Tunnel:
[Client = Netzwerkanfrage an ZielRechnerImPrivatenNetz2:PortA]
-->[VPN-Client-Software = Verschlüsselung + Pakete in das VPN-Protokoll einbetten 
+ Weiterleitung an VPN-Server:PortX]--privates Netz 1
-->[Firewall = PortX ist erlaubt]--externes Netz (z.B. Internet)
-->Weiterleiten an den VPN-Server:PortX
Der VPN-Server:
Der VPN-Server nimmt die Pakete entgegen, merkt sich deren Absenderadresse, holt die ursprünglichen Netzwerkpakete dort heraus und entschlüsselt sie. Da dank der VPN-Clientsoftware die nun ausgepackten Pakete bereits mit der zur VPN-Sitzung gehörenden internen IP-Adresse als Absender versehen wurden (im folgenden „gespoofte Adresse“ genannt), kann der VPN-Server die Pakete ohne weitere Bearbeitung in das eigene, private Netz weiterreichen:
VPN-Server:PortX=Eingang-->[VPN-Dienst = Extrahieren der Ursprungspakete 
+ Entschlüsselung + Weiterleitung ins eigene, private Netz]--privates Netz 2
-->[ZielRechnerImPrivatenNetz2:PortA = Pakete empfangen]
Der Zielrechner:
Der Zielrechner nimmt die Anfrage entgegen, bearbeitet sie und schickt die Antwort wieder zurück zur gespooften Absenderadresse. Da der VPN-Server den Adressraum (das Subnetz) der gespooften IP-Adressen verwaltet, oder aber über virtuelle Netzwerkadapter diesen Adressraum abbildet, werden die Antwortpakete von den Netzwerkkomponenten dorthin geschickt. Der VPN-Server konvertiert nun die Pakete für den VPN-Tunnel, trägt die ursprüngliche (reale) Absenderadresse der Sitzung als Zieladresse ein und leitet die VPN-Pakete dorthin weiter. So gelangen die Antwortpakete zum PC zurück.

Aus der Sicht des Anwenders ist die VPN-Verbindung eine Point-To-Point-Verbindung zwischen seinem Computer und dem Netz des VPN-Servers. Die Rechner aus dem dazwischen liegenden, eigenen Netz des PCs sind für ihn somit nicht mehr erreichbar. Für den Benutzer sieht es also so aus, als würden die Daten über eine exklusive (dedizierte) Verbindung gesendet. Will man diesen Effekt verhindern, so muss man die VPN-Verbindung in einem so genannten „Split-Tunneling“-Modus laufen lassen.

Merkmale der VPN-Verbindung:

  • Die Daten ab dem VPN-Server bis zum Zielrechner werden unverschlüsselt übertragen.
  • Der VPN-Server und auch die Rechner aus seinem Netz können auf die Dienste des VPN-Clients genauso zugreifen, als stände er in ihrem eigenen Netz. Die Dienste müssen jedoch an den virtuellen VPN-Netzwerkadapter gebunden sein.
  • Weder der VPN-Server, noch die Rechner aus seinem Netz sind jedoch in der Lage, auf die anderen Rechner zuzugreifen, welche im physikalischen Netz des VPN-Clients stehen.

Zwei Rechner per VPN miteinander verbinden (Host-to-Host)

Der VPN-Tunnel dient nicht nur dazu, durch eine Firewall zu tunneln, sondern auch dazu, dass Rechner im eigenen Netz verschlüsselt miteinander kommunizieren können. Das funktioniert genauso, wie oben beschrieben, jedoch wird der VPN-Server dahingehend konfiguriert, dass keine Anfragen an seine Rechner weitergeleitet werden. So sind nur Anfragen zulässig, die sich an den VPN-Server selbst richten:

[VPN-Client = Anfrage an VPN-Server:PortA]-->[VPN-Client-Software = Verschlüsselung
+ Pakete in das VPN-Protokoll einbetten + Weiterleitung an den VPN-Server:PortX]--privates Netz
-->[VPN-Server:PortX = VPN-Dienst: Extrahieren der Ursprungspakete + Entschlüsselung
+ Weiterleitung an den Bestimmungsport A]
-->[VPN-Server:PortA = Pakete erreichen den gewünschten Dienst des VPN-Servers]

Zwei Netzwerke über VPN miteinander verbinden (Site-to-Site)

Hier befindet sich auf beiden Seiten ein VPN-Server (auch VPN-Gateway genannt), welche sich beim Aufbau des Tunnels gegenseitig authentifizieren. Beide VPN-Gateways verwalten ihre eigenen Subnetze. Netzwerkpakete, die an ein Subnetz des jeweils anderen VPN-Gateways adressiert sind, werden nun über die (in der Regel verschlüsselte) VPN-Verbindung in das andere Netzwerk übertragen:

[beliebige Rechner]<--internes Netz1
-->[VPN-Gateway]<===verschlüsselte Verbindung im externen Netz 
(z.B. Internet)===>[VPN-Gateway]<--internes Netz2-->[beliebige Rechner]

Es sieht für den Anwender so aus, als wenn jemand die beiden Netzwerke einfach über ein Kabel miteinander verbunden hätte (rein metaphorisch gesprochen / es wird keine VPN-Client-Software benötigt). Das bedeutet auch, dass beide Netzwerke kompatibel zueinander sein müssen (ganz wie bei der Verbindung zweier Netzwerksegmente auch).

  • Viele professionelle Firewalls enthalten VPN-Gateways. Sie sind auch in der Lage, die zu tunnelnden Pakete zu filtern, da sie diese analysieren, bevor sie verschlüsselt werden – also noch bevor sie den Tunnel passieren.
  • Will man über dieselbe Firewall auch auf das Internet zugreifen, so muss sie im „Split Tunneling“-Modus betrieben werden, was allerdings die Angriffmöglichkeiten auf die VPN-Verbindung erhöht.

Die virtuelle Netzwerkkarte einer VPN-Sitzung

Die Tunnelsoftware sorgt dafür, dass die Rechner aus dem physikalischen Netz des Clients keine Verbindung mehr zum Client aufbauen können und ausschließlich Anfragen des VPN-Servers diesen Client erreichen. Zudem werden sämtliche ausgehenden Anfragen dieser Karte abgefangen, verschlüsselt und in das VPN-Protokoll eingebettet. Nun stellt sich die Frage, wie der VPN-Client das realisiert:

Zunächst legt die VPN-Client-Software bei der Erstellung einer Sitzung eine eigene, interne virtuelle Netzwerkkarte an (den VPN-Adapter). Der VPN-Adapter bleibt nur lokal adressierbar und lässt sich somit nicht vom Netz aus ansprechen. Per Systemroute können alle Programme dieses Rechners ihre Netzwerkpakete nur noch an den VPN-Adapter schicken. Alle dort eingehenden Pakete werden nun automatisch von der Tunnel-Software in Empfang genommen.

Der VPN-Netzwerkadapter erhält dieselbe IP-Adresse, welche der Session auf dem VPN-Server zugewiesen wurde (siehe unter „Einen Rechner per VPN auf ein anderes Netz zugreifen lassen“). Zum einen wird dadurch dem Client die Möglichkeit gegeben, über Standardmethoden die gerade aktuelle, eigene IP-Adresse innerhalb des (VPN-) Netzes zu erfragen. Zum anderen erhalten auch alle darüber verschickten Netzwerkpakete bereits hier eine für das Zielnetz gültige Absenderadresse. Allerdings werden diese Pakete von der Tunnelsoftware nun verschlüsselt und in das separat adressierbare VPN-Protokoll verpackt (tatsächlich ist es das IP-Protokoll, welches dem VPN-Protokoll als Transportmittel dient und die Adressierung realisiert). Die Pakete werden nun über den physikalischen Adapter zum Tunnelpartner ins Netz geschickt. Auf diese Weise erhalten sie die reale Absenderadresse des PCs und nicht die des VPN-Adapters. Nur so können die Antwortpakete adressierungstechnisch auch wieder zum PC gelangen.

Erst wenn der VPN-Server die ursprünglichen Pakete aus dem VPN-Protokoll heraus extrahiert hat, kommen auch wieder ihre ursprünglichen Adressen zum Vorschein (Zielsystem=Rechner aus dem Netz hinter dem VPN-Server und Absender=Adresse des VPN-Netzwerkadapters).

[Netzwerkanfrage des Clients: Ziel=RechnerXYZAusDemPrivatenNetz2:PortA /
Absender=IP-AdresseDesVPN-Netzwerkadapters:PortB]
-->[VPN-Client-Software=Verschlüsselung + Pakete in das VPN-Protokoll einbetten 
+ Adressierung der neu erstellen Pakete: Ziel=VPN-Server:PortX /  
Absender=IP-AdresseDesPhysikalischenNetzwerkadaptersDesClients:PortY]--privates Netz 1
-->[Firewall=PortX ist erlaubt]--externes Netz (z.B. Internet)
-->[VPN-Server:PortX=Extrahieren der Ursprungspakete + Entschlüsselung
+ Weiterleitung ins eigene, private Netz an die in dem Ursprungspaket enthaltene Adresse]
--privates Netz 2-->[RechnerXYZAusDemPrivatenNetz2:PortA=Pakete empfangen]

Es liegt nun an dem VPN-Server, die an das VPN-Netzwerkadapter adressierten Antwortpakete des Zielsystems abzufangen, in das VPN-Protokoll zu packen und die VPN-Pakete wieder an die physikalisch vorhandene Netzwerkadresse zurückzuschicken, damit sie den Client erreichen können.

Split-Tunneling und deren Angriffsflächen auf VPN-Verbindungen

Das Verständnis für den internen Aufbau der VPN-Kommunikation wird wichtig, wenn man den „Split Tunneling“-Modus der VPN-Verbindung verstehen will. Im „Split-Tunneling“-Modus wird der Client während der VPN-Sitzung nicht von seinem eigenen Netz abgeschottet. So werden per Routeseinstellungen lediglich die Verbindungen zu einem bestimmten Adressbereich über den virtuellen VPN-Adapter geschickt. Für die anderen Adressbereiche werden dem PC die restlichen Netzwerkadapter wieder zugänglich gemacht. Zudem lassen sich die externen Zugriffe auf den PC wieder aktivieren.

Ethickerds weisen darauf hin, dass dieser Modus zahlreiche Techniken ermöglicht, um die VPN-Sitzung zu kompromittieren. Sämtliche Netzwerkdienste des Clients (auch die einer Malware) können während der VPN-Verbindung noch immer von allen Rechnern seines eigenen Netzes in Anspruch genommen werden. Auch lassen sich auf diese Weise während der VPN-Verbindung unbemerkt beliebige Daten an einen internen Rechner schicken. Zudem kann über den Umweg der applikationsgebundenen Netzwerkkommunikation die Route ausgetrickst werden, um die Anfragen an einen Server im eigenen Netz umzuleiten.

Literatur

  • VPN mit Linux von Ralf Spenneberg; Addison-Wesley, ISBN 3-8273-2114-X (als PDF verfügbar: [1])
  • Virtuelle Private Netzwerke - Aufbau und Nutzen, Gerhard Lienemann; Vde Verlag, ISBN 3-8007-2638-6
  • VPN - Virtuelle Private Netzwerke von Manfred Lipp; Addison-Wesley, ISBN 3-8273-2252-9
  • Virtuelle Private Netzwerke mit Windows Server 2003 - Sichere Netzwerkanbindung mit VPNs, von Joseph Davies, Elliot Lewis; Microsoft, ISBN 3-86063-962-5

Weblinks (externe Links)

  • Virtual Private Network bei Wikipedia
  • Eine Erklärung zu VPN liefert das Online-Lexikon für Informationstechnologie „IT Wissen“ und glossar.de
  • Eine WAN-Verbindung via IPsec unter Linux ermöglichen das FreeS/WAN-Projekt, das Openswan-Projekt und das strongSwan-Projekt
  • Tinc bietet einen freien auf OpenSSL basierenden VPN für Linux und Windows
  • Die Konfiguration und Einrichtung eines VPNs unter Windows XP wird unter wintotal.de und easy-network.de beschrieben
  • iPIG bietet eine Verschlüsselung des Internetverkehrs unter Windows, wofür der Herstellerserver genutzt werden kann (frei bei bis zu 10MB Traffic am Tag). Alternativ dazu lässt sich mit iPIG auch ein eigener VPN-Server aufsetzen (kostenlos für max. 5 Accounts).
  • Das Hamachi Projekt ist gedacht, um den Traffic im eigenen Netz zu verschlüsseln. Dazu emuliert die Software über VPN ein separates verschlüsseltes LAN, welches über das eigene (physikalische) LAN gelegt wird.
  • Von Savecall wird beschrieben, wie VPN im Internet, per Ethernet oder mit einer MPLS-Verbindugn genutzt werden kann.