Secure Socket Tunneling Protocol
SSTP (Secure Socket Tunneling Protocol) | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Familie: | Internetprotokollfamilie | ||||||||||||||||||||||||||||||||||||||||||||||||||
Einsatzgebiet: | Aufbau eines Virtual Private Network | ||||||||||||||||||||||||||||||||||||||||||||||||||
Port: | 443/TCP | ||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
Standards: | Nicht durch die IETF standardisiert | ||||||||||||||||||||||||||||||||||||||||||||||||||
Revision | 14.0 (8. August 2013) |
Das Secure Socket Tunneling Protocol (SSTP) ist ein Virtual Private Network (VPN)-Tunnel-Protokoll von Microsoft aus dem Jahr 2007. Es ermöglicht den Aufbau eines VPN-Tunnels über Sicheres HTTP (SSL/TLS) auf Port 443. Damit sollen Probleme beseitigt werden, die durch Blockierung an Web Proxies, Firewalls und NAT-Routern auftreten, wenn andere Tunnelprotokolle wie Point-to-Point Tunneling Protocol (PPTP) oder Layer 2 Tunneling Protocol über IPSec (L2TP/IPSec) verwendet werden.[2]
Entwicklung
SSTP ist Microsofts Lösung für VPN-Zugriffe mit PPP über SSL (SSL-VPN). Microsoft erhoffte sich mit diesem Verfahren die Supportanfragen, die im Zusammenhang mit IPSec-basierten VPNs auftraten, deutlich reduzieren zu können, da diese oft von Firewalls und Routern blockiert werden. Obwohl das Verfahren auf vielen Standards basiert, strebte Microsoft für SSTP keine Standardisierung im Rahmen der IETF an.[2]
Das Verfahren wurde primär als (Nutzer)-Fernzugriffslösung für ein End-to-Site Szenario entwickelt, um über den bekannten Port 443/TCP durch Firewalls und Gateways hindurch auf Server- und Netzwerkstrukturen zugreifen zu können. Ein Einsatz als Verbindung zwischen Netzwerken, einem Site-to-Site Szenario, ist von Seiten Microsoft nicht vorgesehen; mit einer speziellen Implementierung, beispielsweise auf Routern, jedoch möglich.[3]
Spezifikationen
Die technischen Spezifikationen von (MS-)SSTP sind im Rahmen des Microsoft Communication Protocol Program (MCPP) veröffentlicht, welches die unentgeltliche Bereitstellung von technischen Dokumenten für Microsoft Betriebssysteme regelt.[4]
SSTP verwendet SSL 3.0 und HTTP 1.1 mit 64 bit content length encoding und funktioniert sowohl unter IPv4 als auch unter IPv6. Für die PPP-Authentisierung können MS-CHAPv2, EAP-MS-CHAPv2, EAP-Smart-card und Protected Extensible Authentication Protocol (PEAP) verwendet werden. Als Verschlüsselungsalgorithmen werden die für SSL verfügbaren Verfahren unterstützt (AES, RC4, 3DES).[3][5][6]
Serverseitig wird für für die Einrichtung von SSTP-VPNs Windows Server 2008 oder höher (Windows Server 2008 R2 oder Windows Server 2012) mit installiertem Routing and Remote Access Service (RRAS) benötigt. Clientseitig ist SSTP verfügbar ab Windows Vista Service Pack 1. Ein SSTP-Client für Linux, FreeBSD und Mac OS ist auf Sourceforge zum Download verfügbar. [7] Ist Clientseitig die Protokollauswahl auf Automatik eingestellt, wird der erste Verbindungsaufbau in der Reihenfolge PPTP → L2TP → SSTP versucht.[5]
Ablauf des Verbindungsaufbaus
- Der Client baut eine TCP-Verbindung zum Server auf Port 443 auf.
- Auf dieser TCP-Verbindung erfolgt der SSL/TLS Handshake mit dem Server (→ siehe: TLS Handshake). Während dieser Phase erhält der Client das X.509 Serverzertifikat und überprüft es. Wenn das Zertifikat nicht gültig ist, wird der Verbindungsaufbau abgebrochen. Zu diesem Zeitpunkt erfolgt keine Client-Authentisierung.
- Der Client baut über die SSL/TLS Verbindung eine HTTP-Sitzung mit dem Server auf. (→ siehe: HTTP-Request)
- Der Client sendet SSTP-Kontrollpakete über über die HTTPS-Sitzung. Wenn der SSTP-Status auf beiden Seiten bereit ist, erfolgt eine link-up Signalisierung an die PPP Sicherungsschicht auf beiden Seiten.
- Über SSL/TLS und SSTP erfolgt der PPP-Verbindungsaufbau (→ siehe: Herstellung einer PPP-Verbindung). Als Teil der PPP-Authentifizierungsphase, authentisiert sich der Client gegenüber dem Server (und abhängig vom Authentifizierungsverfahren auch der Server gegenüber dem Client)
- Nach Fertigstellung der PPP-Aushandlung werden auf beiden Seiten IP-Interfaces mit privaten IP-Adressen erstellt, über die Client und Server dann mit SSTP kommunizieren.
Beispiel
- Angenommen der Server hat die öffentliche IP-Adresse: 100.100.100.1 und der Client hat die öffentliche IP-Adresse: 200.200.200.1
- Nach Aushandlung der PPP-Verbindung über SSTP hat der Server ein zusätzliches Interface mit der IP: 192.168.0.1 und der Client ein zusätzliches Interface mit der IP: 192.168.0.2
- Der Nutzer pingt vom Client aus den Server mit der IP: 192.168.0.1 an.
- Der Ping wird abgesetzt via IP via PPP via SSTP (mit der Quelladresse: 192.168.0.2 und der Zieladresse: 192.168.0.1)
- SSTP sendet die Anforderung zur SSL-Schicht, die die Verschlüsselung vornimmt, von dort via TCP via IP (mit der Quelladresse: 200.200.200.1 und der Zieladresse: 100.100.100.1) über die öffentliche Schnittstelle.
- Der Server nimmt die Anforderung auf dem öffentlichen Interface entgegen und leitet sie via IP via TCP an die SSL-Schicht, die die Entschlüsselung vornimmt, von dort via SSTP via PPP via IP an die Zieladresse: 192.168.0.1.
SSTP Paket-Struktur
Header
Die folgende Header-Struktur gilt für alle Typen von SSTP-Paketen:[8]
Bit offset | Bits 0–7 | 8–14 | 15 | 16–31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Version | Reserviert | C | Länge | ||||||||||||||||||||||||||||
32+ | Daten |
- Version (8 bits) – Übermittlung und Aushandlung der verwendeten SSTP Version..
- Reserviert (7 bits) – Reserviert für zukünftige Verwendung.
- C (1 bit) – Kontrollbit, das anzeigt, ob das SSTP-Paket ein SSTP-Kontroll-Paket (1) oder ein SSTP-Daten-Paket (0) ist.
- Länge (16 bits) – Paketlänge, zusammengesetzt aus zwei Werten: Reserviert (4 bits) – Reserviert für zukünftige Verwendung und Paket-Länge (12 bits) – Länge des gesamten SSTP-Pakets, einschließlich SSTP-Header.
- Daten (variabel) – Wenn das Kontrollbit C gesetzt ist, enthält das Datenfeld eine Kontroll-Nachricht. Andernfalls enthält das Datenfeld ein höheres Protokoll. Aktuell ist hier nur Point-to-Point Protocol (PPP) möglich.
Kontroll-Nachricht
Das Datenfeld des SSTP-Headers enthält eine SSTP Kontroll-Nachricht, wenn das Kontrollbit C im Header gesetzt ist.
Bit offset | Bits 0–15 | 16–31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Nachricht-Typ | Attribut Zähler | ||||||||||||||||||||||||||||||
32+ | Attribute |
- Nachricht-Typ (16 bits) – Bestimmt den Typ der übermittelten Kontroll-Nachricht
- Attribut Zähler (16 bits) – Bestimmt die Anzahl der übermittelten Attribute.
- Attribute (variabel) – Enthält die Liste der zum SSTP-Kontrollpaket gehörigen Attribute. Die Anzahl der Attribute wird durch das Feld Attribut-Zähler festgelegt.
Weblinks
- SSTP-Client für Linux, FreeBSD, MacOS auf Sourceforge.net
- MS-SSTP: Secure Socket Tunneling Protocol (SSTP) pdf (2,5 MB) auf microsoft.com
- MS-SSTP: Secure Socket Tunneling Protocol (SSTP) html auf msdn
- Dr. Götz Güttich, Ulrich Roderer: Workshop: SSTP-VPNs mit Windows Server 2008 und neueren Windows-Systemen, 08. April 2010 auf datacenter-insider.de
Siehe auch
Einzelnachweise
- ↑ Christophe Alladoum: Analysis Protocol SSTP Microsoft. hsc.fr, 12. Juli 2011, abgerufen am 5. September 2013 (englisch).
- ↑ a b John Fontana: Microsoft develops new tunneling protocol SSTP for secure networks, wherever you are. techworld.com, 22. Januar 2007, abgerufen am 5. September 2013 (englisch).
- ↑ a b Samir Jain: SSTP FAQ - Part 1: Generic. blogs.technet.com, 10. Januar 2007, abgerufen am 5. September 2013 (englisch).
- ↑ Dwight Chestnut: Microsoft Communication Protocol. ehow.com, abgerufen am 5. September 2013 (englisch).
- ↑ a b Samir Jain: SSTP FAQ - Part 2: Client Specific. blogs.technet.com, 17. Januar 2007, abgerufen am 5. September 2013 (englisch).
- ↑ Cipher Suites in Schannel. msdn, 16. Juli 2013, abgerufen Format invalid (englisch).
- ↑ sourceforge sstp-client. Sourceforge, abgerufen am 5. September 2013 (englisch).
- ↑ MS-SSTP Specification auf msdn (englisch)