Was ist ein SOCKS5-Proxy haben wir in unserem Beitrag das Konzept vorgestellt. Hier schauen wir in das Protokoll hinein: Welche Bytes gehen zwischen Client und Server hin und her, wie wird die Adresse angegeben, und warum macht dieses Design SOCKS5 zu einem universelleren Werkzeug als einen HTTP-Proxy?
SOCKS5 ist ein ausgesprochen schlichtes Protokoll, das in RFC 1928 definiert ist. Seine Schlichtheit ist die Quelle seiner Stärke: Es interpretiert die Daten der Anwendungsschicht überhaupt nicht, sondern transportiert lediglich TCP- (und optional UDP-)Traffic.
Der dreistufige Handshake
Ist keine Authentifizierung erforderlich, reduzieren sich die drei Runden auf zwei. Gegenüber der CONNECT-Methode des HTTP-Proxys sind etwas mehr Runden nötig, die Bytes sind dafür deutlich kleiner.
Phase 1 – Begrüßung
Der Client teilt in seinem ersten Paket die Protokollversion und die von ihm unterstützten Authentifizierungsmethoden mit:
Der Server teilt seine Wahl mit einer ein Byte langen Antwort mit: 0x00 (keine Authentifizierung erforderlich), 0x02 (Benutzer/Passwort) oder 0xFF (keine akzeptable Methode).
Der Server 0xFF zurückgibt und die Verbindung schließt, bedeutet das, dass Ihr Client die vom Server erwartete Authentifizierungsmethode nicht anbietet. Das ist die häufigste Ursache für die Beschwerde "Die Verbindung wurde stillschweigend geschlossen".
Phase 2 – Authentifizierung
Wurde die Methode 0x02 gewählt, findet die in RFC 1929 definierte Unterverhandlung statt: Versions-Byte, Länge des Benutzernamens und Benutzername, Länge des Passworts und Passwort. Der Server gibt Erfolg oder Misserfolg in einem einzelnen Byte zurück.
Für einen ausführlichen Vergleich und die praktische Konfiguration in unserem Beitrag zur SOCKS5-Authentifizierung können Sie nachlesen.
Phase 3 – CONNECT-Anfrage
Nach bestandener Authentifizierung teilt der Client das Ziel mit. Hier kommt die wichtigste Design-Entscheidung von SOCKS5 ins Spiel: Die Adresse kann in drei verschiedenen Formen angegeben werden.
ATYP=0x03 bedeutet Domainname; in diesem Fall übernimmt der Proxy die DNS-Auflösung. Dieses eine Byte ist der Schlüssel zur Vermeidung von DNS-Leaks.
Warum universeller als ein HTTP-Proxy?
Ein HTTP-Proxy liest die Anfrage und interpretiert sie; SOCKS5 transportiert sie lediglich. Deshalb können über SOCKS5 E-Mail-, Spiele-, Dateiübertragungs- und Browser-Traffic gleichzeitig laufen.
| Merkmal | Parameter | SOCKS5 |
|---|---|---|
| Arbeitsschicht | Anwendung (7) | Sitzung (5) |
| Protokollunterstützung | Nur HTTP(S) | Beliebiges TCP, optional UDP |
| Interpretation des Inhalts | Ja | Nein |
| Hinzufügen von Headern | Möglich | Nicht möglich |
| Caching | Möglich | Nicht möglich |
| DNS-Aufloesung | Auf der Proxy-Seite | Wählbar (ATYP) |
| Handshake-Runden | 1 (CONNECT) | 2–3 |
Für einen ausführlichen Vergleich Unterschied zwischen HTTP-Proxy und SOCKS5 .
Verschlüsselt SOCKS5?
Nein. Das ist das häufigste Missverständnis. SOCKS5 ist ein Transportprotokoll; es bietet keine Verschlüsselung. Die Sicherheit Ihres Traffics hängt von der Verschlüsselung der transportierten Inhalte selbst ab:
- Wenn es über HTTPS läuft: TLS schützt Ende-zu-Ende; der Proxy kann den Inhalt nicht sehen.
- Bei reinem HTTP: Der Proxy-Betreiber kann den Inhalt mitlesen.
- Zugangsdaten: Benutzername und Passwort von SOCKS5 werden im Klartext übertragen.
Die Zugangsdaten von SOCKS5 werden unverschlüsselt übertragen. Wenn Sie einen SOCKS5-Proxy in einem nicht vertrauenswürdigen Netz nutzen, können Ihre Zugangsdaten von einem Beobachter dazwischen mitgelesen werden. In diesem Szenario ist es sicherer, SOCKS5 über einen SSH-Tunnel zu nutzen – die Methode in einem eigenen Beitrag erklärt.
Praktischer Einsatz
socks5h im Schema h bedeutet "hostname" und sorgt dafür, dass die DNS-Auflösung auf der Proxy-Seite erfolgt. Um Leaks zu vermeiden, sollten Sie es immer bevorzugen.
Wann sollten Sie SOCKS5 wählen?
Wählen Sie SOCKS5
- Wenn Sie Protokolle außerhalb von HTTP transportieren (E-Mail, FTP, Spiele).
- Wenn Sie die DNS-Auflösung auf der Proxy-Seite durchführen möchten.
- Wenn UDP-Traffic benötigt wird.
- Wenn Sie nicht möchten, dass der Proxy Ihre Header verändert.
- Wenn die Anwendung nur SOCKS unterstützt.
HTTP-Proxy genuegt
- Wenn Sie ausschließlich Web-Traffic transportieren.
- Wenn Sie Caching wünschen.
- Wenn Ihr Tool nur HTTP-Proxys unterstützt.
- Wenn die geringstmögliche Zahl an Handshake-Runden wichtig ist.
- Wenn Filterregeln auf Unternehmensebene benötigt werden.
Zusammenfassung
SOCKS5 ist ein schlichtes Protokoll der Sitzungsschicht, das TCP- und UDP-Traffic transportiert, ohne jemals in die Anwendungsdaten zu sehen. Dank des dreistufigen Handshakes, der Unterstützung dreier Adresstypen und der Option Domainname bietet es die Möglichkeit, DNS-Leaks zu verhindern. Es stellt keine Verschlüsselung bereit; die Sicherheit hängt von der Verschlüsselung der transportierten Inhalte ab. Wenn Sie Traffic außerhalb des Webs transportieren müssen, ist es das richtige Werkzeug. Für Produktdetails unsere SOCKS5-Proxy-Seite, zum Testen unser Proxy-Check-Tool können Sie nachlesen.