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 und soll Probleme beseitigen, 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
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.[3]
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 untersützt (AES, RC4, 3DES).[4][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 Authentisierungsalgorithmus 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 kommunizieren.
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
- 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
- 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
Einzelnachweise
- ↑ Christophe Alladoum: Analysis Protocol SSTP Microsoft. hsc.fr, 12. Juli 2011, abgerufen am 5. September 2013 (englisch).
- ↑ 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).
- ↑ Dwight Chestnut: Microsoft Communication Protocol. ehow.com, abgerufen am 5. September 2013 (englisch).
- ↑ Samir Jain: SSTP FAQ - Part 1: Generic. blogs.technet.com, 10. Januar 2007, 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