it-swarm-eu.dev

Was ist der Sicherheitsunterschied zwischen einer VPN- und einer SSL-Verbindung?

Ich möchte eine Client-Server-Anwendung entwerfen, bei der der Server im Internet platziert wird. Ich gehe davon aus, dass ich die Client-Server-Verbindung über VPN (wird IPSec verwendet?) Oder über eine SSL-Verbindung (möglicherweise https) einrichten kann. Was sind die Unterschiede zwischen VPN/IPsec und SSL/https zum Sichern einer Client-Server-Verbindung über das Internet?

65
Jonas

VPN bedeutet "Virtual Private Network". Es handelt sich um ein generisches Konzept, das einen Teil eines größeren Netzwerks (z. B. das Internet insgesamt) bezeichnet, der logisch vom größeren Netzwerk durch nicht hardwarebezogene Mittel isoliert ist (was "virtuell" bedeutet): Es ist nicht so, dass wir unterschiedliche verwenden Kabel und Schalter; Die Isolierung erfolgt vielmehr mithilfe der Kryptographie.

SSL (jetzt als TLS bekannt) ist eine Technologie, die ein bidirektionales Transportmedium verwendet und ein gesichertes bidirektionales Medium bereitstellt. Das zugrunde liegende Transportmedium muss "größtenteils zuverlässig" sein (wenn es nicht angegriffen wird, werden Datenbytes in der richtigen Reihenfolge ohne Verlust und ohne Wiederholung übertragen). SSL bietet Vertraulichkeit, Integrität (aktive Änderungen werden zuverlässig erkannt) und eine gewisse Authentifizierung (normalerweise Serverauthentifizierung, möglicherweise gegenseitige Client-Server-Authentifizierung, wenn Zertifikate auf beiden Seiten verwendet werden).

VPN und SSL sind also nicht auf derselben Ebene. Ein VPN Implementierung erfordert irgendwann eine Kryptographie. Einige VPN-Implementierungen verwenden tatsächlich SSL, was zu einem mehrschichtigen System führt: Das VPN überträgt IP-Pakete (des virtuellen Netzwerks), indem es sie auf einer SSL-Verbindung serialisiert, die selbst TCP als Transportmedium) verwendet. IPsec ist eine weitere Technologie, die tiefer in die Pakete integriert ist, einige dieser Schichten unterdrückt und daher etwas effizienter ist (weniger Bandbreiten-Overhead) Andererseits muss IPSec ziemlich tief im Netzwerkcode des Betriebssystems verwaltet werden, während ein SSL-basiertes VPN nur einen Weg benötigt, um eingehenden und ausgehenden Datenverkehr zu entführen. Der Rest kann in Software auf Benutzerebene ausgefallen sein.

Soweit ich Ihre Frage verstehe, haben Sie eine Anwendung, in der einige Computer über das Internet kommunizieren müssen. Sie haben einige Sicherheitsanforderungen und denken darüber nach, entweder SSL (über TCP über IP) oder möglicherweise HTTPS (HTTP-über-SSL-über-TCP-über-IP) oder zu verwenden Einrichten eines VPN zwischen Client und Server und Verwenden von "plain" TCP in diesem privaten Netzwerk (der Punkt des VPN ist, dass Sie ein sicheres Netzwerk erhalten, in dem Sie sich keine Sorgen mehr um die Vertraulichkeit machen müssen). Bei SSL muss Ihr Verbindungscode die Sicherheit berücksichtigen. Aus programmtechnischer Sicht öffnen Sie eine SSL-Verbindung nicht so, als wäre sie "nur ein Socket". Einige Bibliotheken machen es relativ einfach, aber Sie müssen es dennoch Verwalten der Sicherheit auf Anwendungsebene Andererseits wird ein VPN auf Betriebssystemebene konfiguriert, sodass die Sicherheit nicht zwischen Ihrer Anwendung auf dem Client und Ihrer Anwendung auf dem Server, sondern zwischen dem Client-Betriebssystem und dem Server-Betriebssystem besteht : Das ist nicht dasselbe Sicherheitsmodell, obwohl sich der Unterschied in vielen Situationen als nicht relevant herausstellt.

In der Praxis bedeutet ein VPN, dass auf dem Client-Betriebssystem ein Konfigurationsschritt erforderlich ist. Es ist ziemlich invasiv. Die Verwendung von zwei VPN-basierten Anwendungen auf demselben Client kann problematisch sein (sicherheitstechnisch, da der Client dann als Brücke fungiert, die zwei VPNs miteinander verbindet, die nominell voneinander isoliert werden sollten, und auch in der Praxis aufgrund von Adresskollisionen Platz). Wenn der Client ein Kunde ist, scheint es eine unmögliche Aufgabe zu sein, ein VPN ordnungsgemäß zu konfigurieren. Allerdings bedeutet ein VPN, dass Anwendungen sich der Sicherheit nicht bewusst sein müssen. Dies erleichtert die Integration von Software von Drittanbietern in Ihre Anwendung erheblich.

77
Thomas Pornin

Beide haben Sicherheitsprobleme, wenn sie nicht richtig konfiguriert sind. Aber zuerst beginnen wir mit einigen Definitionen:

Cisco hat eine gute Definition eines VPN:

VPN kann verschiedene Formen annehmen. Ein VPN kann sich zwischen zwei Endsystemen oder zwischen zwei oder mehr Netzwerken befinden. Ein VPN kann mithilfe von Tunneln oder Verschlüsselung (auf im Wesentlichen jeder Ebene des Protokollstapels) oder beidem oder alternativ mithilfe von MPLS oder einer der Methoden des „virtuellen Routers“ erstellt werden. Ein VPN kann aus Netzwerken bestehen, die über Mietleitungen, Frame Relay oder Geldautomaten mit dem Netzwerk eines Dienstanbieters verbunden sind, oder ein VPN kann aus DFÜ-Teilnehmern bestehen, die eine Verbindung zu zentralisierten Diensten oder anderen DFÜ-Teilnehmern herstellen. https://www.Cisco.com/c/en_in/products/security/vpn-endpoint-security-clients/what-is-vpn.html

Wie für SSL:

SSL (Secure Sockets Layer), auch als TLS (Transport Layer Security) bezeichnet, ist ein Protokoll, mit dem zwei Programme auf sichere Weise miteinander kommunizieren können. Wie bei TCP/IP können Programme mit SSL "Sockets" und Endpunkte für die Kommunikation erstellen und Verbindungen zwischen diesen Sockets herstellen. SSL, das auf TCP aufbaut, bietet jedoch zusätzliche Verschlüsselungsmöglichkeiten. http://www.boutell.com/newfaq/definitions/ssl.html

In Bezug auf Ihre Frage besteht der Hauptunterschied darin, dass SSL häufig den Browser zum Verschlüsseln von Daten zwischen Endbenutzer und Server verwendet und häufig für Bereiche von Websites verwendet wird, die den Schutz der Vertraulichkeit und Integrität der Daten erfordern.

VPN/IPSEC erfordert eine spezielle VPN-Client-Software und dient im Allgemeinen zum Fernzugriff auf Systeme oder Netzwerke. Es besteht auch die Möglichkeit, L2TP oder L2F anstelle von IPSEC zu wählen.

SSL-VPNs werden jedoch immer häufiger eingesetzt, um den Zugriff auf Netzwerke/Systeme über den Webbrowser zu ermöglichen. Dieser Ansatz hat viele Vorteile, da er den allgemeinen Webbrowser verwendet, um die sichere Verbindung zu ermöglichen. Die Granularität dieses Ansatzes ist auch eine gute Möglichkeit, den Zugriff auf bestimmte Anwendungen zu steuern.

Was Sicherheitsfragen betrifft -

SSL -

  • Schwache Sicherheitsverschlüsselungen können dazu führen, dass Man-in-the-Middle-Angriffe gegen den Endbenutzer ausgeführt werden können, was zu einem Verlust der Vertraulichkeit/Integrität der Daten führt.

    • Eine schlecht konfigurierte Mischung aus HTTP/HTTPS-Inhalten kann auch zu einem Verlust der Vertraulichkeit/Integrität der Daten führen.

IPSEC -

15
David Stubley

Einige sehr gute Antworten hier, ich werde nicht wiederholen, was bereits gesagt wurde.
Ein Punkt, den ich jedoch nicht gefunden habe: SSL ist auf Ad-hoc-Basis viel einfacher einzurichten, insbesondere wenn Sie keine Client-Zertifikate benötigen.
IPsec erfordert andererseits immer Client-Zertifikate (unter der Annahme eines normalen, typischen Setups), und es gibt auch andere Schwierigkeiten bei der Ersteinrichtung und Verteilung.

Als solches ist IPsec normalerweise besser für ein kontrolliertes Netzwerk geeignet und weniger für das wilde, unbekannte Internet. Weitere Informationen finden Sie unter dieser anderen Frage: " IPSec-Fakten (Internet Protocol Security) ".

Wenn Sie also zu Ihrer eigentlichen Frage zurückkehren, erwarten Sie in fast allen Fällen, in denen Sie den Server ins Internet stellen, nicht, dass Ihre Benutzer eine Verbindung über ein VPN herstellen. (Ausnahmen gibt es natürlich.)
Richten Sie stattdessen einfach SSL-Zertifikate auf Ihrem Server ein, richten Sie Ihre Clients darauf und los geht's (stellen Sie einfach sicher, dass Sie das Zertifikat explizit validieren, je nachdem, welche Sprache/Technologie/Bibliothek Sie verwenden. ' wieder benutzen ...)

7
AviD

Suchen Sie nach diesen Optionen, um ein sicheres VPN zu erstellen? SSL ist im Allgemeinen einfacher bereitzustellen und wird für ein Desktop-zu-Netzwerk-VPN besser unterstützt, z. B. wenn ein Mitarbeiter zu Hause eine Verbindung zum Unternehmensnetzwerk herstellt. Wenn Sie eine komplexere Bereitstellung durchführen, z. B. ein Netzwerk-zu-Netzwerk-verschlüsseltes VPN (z. B. zwischen zwei verschiedenen Organisationen), bietet IPSEC eine bessere Kontrolle und mehr Anpassungsoptionen.

Es gibt ein anständiges Whitepaper zu diesem Thema von Juniper Networks, obwohl es möglicherweise auf die Stärken ihrer Produkte verzerrt ist.

5
Eugene Kogan

Nun, der Unterschied ähnelt dem Unterschied zwischen einem Kreis und einem Quadrat (beide sind Formen, unterscheiden sich aber stark). Beide sichern die Kommunikation, tun dies jedoch auf verschiedenen Ebenen und auf unterschiedliche Weise. IPSEC ist drahtgebundene Verschlüsselung und Autorisierung, während SSL anwendungsspezifisch ist.

IPSEC hat Zugriffskontrolle, SSL nicht.

Können Sie genauer sagen, was Sie herausfinden möchten?

2
Steve

Dies könnte eine sehr lange Antwort sein, aber ich werde die kurze versuchen.

Wenn Sie https verwenden, verschlüsselt Ihr Browser (fungiert als SSL-Client) nur diese Verbindung zum Webserver.

Wenn Sie VPN verwenden, benötigen Sie einen speziellen Client und stellen einen Tunnel zwischen dem Client und dem Server her. Dann können Sie konfigurieren, welcher Verkehr durch den Tunnel fließt. Dies kann alles oder nur Ihr http-Verkehr sein.

Wenn Sie nur eine Client/Server-Anwendung einrichten möchten, die mit http kommunizieren kann, sollte der https-Verkehr die einfachste Lösung sein, wenn er verschlüsselt werden muss. Es ist viel komplizierter, ein VPN einzurichten und zu warten.

2
Christian

Dies hängt von Ihrem Bedrohungsmodell, der Art des benötigten Client-Server-Protokolls und Ihren Kunden ab.

Ist dies für nicht anspruchsvolle Endbenutzer gedacht? Verwenden Sie dann SSL - an diesem Punkt werden durch die VPN-Komplexität nur viele potenzielle Benutzer ausgeschaltet.

Möchten Sie den Client als Browser-App bereitstellen (Perahps mit Javascript)? Andererseits scheint https/ssl der richtige Weg zu sein.

Muss der Server den Client jemals asynchron über etwas benachrichtigen? Dann ist HTTPS möglicherweise nicht das, was Sie wollen (obwohl dies möglich ist).

Wie groß ist das Risiko von Phishing? Wenn es für Angreifer einfach wäre, Leute als MITM zu ihnen zu locken, ist SSL wahrscheinlich besser, da es jeden Server gegenüber dem Client authentifiziert. Ein typisches VPN hilft dem Benutzer nicht, einem Angreifer auszuweichen, der in andere Hosts des VPN eingedrungen ist. Dies wäre wahrscheinlich kein großes Risiko, aber es hängt wiederum davon ab, was Sie tun.

Wenn Sie dies in der Cloud bereitstellen (sowohl Client als auch Server), erhalten Sie möglicherweise fast kostenlos eine Art VPN, mit dem einige sehr gelegentliche Bedrohungen behoben werden können.

2
nealmcb

Ich bin weit entfernt von einem Sicherheitsexperten, aber ich denke, der wichtigste Unterschied zwischen den beiden liegt nicht in den anderen Antworten.

Über VPN erfolgt die Kommunikation folgendermaßen:

HTTP client <-[raw]-> VPN client
  <-[encrypted]-> 
VPN server <-[raw]-> HTTP server

Bei HTTPs geht es so:

HTTP client
  <-[encrypted]-> 
HTTP server

Durch VPN können ungeschützte Daten also im lokalen Netzwerk der Clients und im lokalen Netzwerk der Server übertragen werden. Wenn Sie diesen Netzwerken nicht vollständig vertrauen, ist es eine gute Idee, HTTPs zu verwenden. Beachten Sie, dass sich die VPN- und HTTP-Client-Client-Server-Server-Paare nicht unbedingt auf identischen Computern befinden, z. Router können als VPN-Server oder -Clients konfiguriert werden.

Da diese Technologien auf einer anderen Ebene arbeiten, schließen sie sich nicht gegenseitig aus. Sie können also beide verwenden, wenn Sie eine andere Schutzschicht wünschen und sich der damit verbundene Leistungsabfall nicht stört, oder Sie können einfach nur eine davon verwenden passt besser zu Ihren Bedürfnissen. Soweit ich weiß, gelten beide Technologien als sicher, wenn sie ordnungsgemäß konfiguriert sind.

0
inf3rno