Privacy Policy Cookie Policy Terms and Conditions SOCKS - Wikipedia

SOCKS

aus Wikipedia, der freien Enzyklopädie

Das SOCKS Protokoll ist ein Internet-Proxy-Protokoll, das Client-Server-Anwendungen erlaubt, transparent die Dienste einer Firewall zu nutzen. SOCKS ist eine Abkürzung für "SOCKetS".

Clients hinter einer Firewall, die eine Verbindung zu einem externen Server aufbauen wollen, verbinden stattdessen zu einem SOCKS-Proxy. Dieser Proxy-Server überprüft die Berechtigung des Clients, den externen Server zu kontaktieren und leitet die Anfrage an den Server weiter.

Das SOCKS-Protokoll wurde ursprünglich von NEC entwickelt (SOCKS 4). Die aktuelle Version 5 des Protokolls, wie beschrieben in RFC 1928, erweitert die vorherigen Versionen um Unterstützung für UDP, Authentifizierung und IPv6.

Im OSI-Schichtmodell ist es eine Zwischenschicht zwischen der Anwendungsschicht und der Transportschicht.

Inhaltsverzeichnis

[Bearbeiten] Das SOCKS 4 Protokoll

Eine typische SOCKS 4-Verbindungsanfrage sieht wie folgt aus (Jede Nummer ist ein Byte):

Client: 4 1 0 80 66 102 7 99

(4 ist die SOCKS-Version, 1 ist die Verbindungsanfrage, 0 80 ist der Port, 66 102 7 99 die IP-Adresse, zu der der Client verbinden möchte)

Server: 0 90 0 80 66 102 7 99

(0 90 bedeutet, dass die Anfrage angenommen wurde, 0 80 ist der Port, 66 102 7 99 die IP-Adresse, zu der die Verbindung aufgebaut wurde)

Danach werden alle Daten, die der Client an den SOCKS-Proxy schickt, an 66.102.7.99 weitergeleitet. Umgekehrt werden alle Daten von 66.102.7.99 an den SOCKS-Proxy gesendet, welcher sie an den Client weiterleitet.

[Bearbeiten] Das SOCKS 5 Protokoll

[Bearbeiten] Auswahl der Authentifizierung

Anders als bei SOCKS 4, wird vor der eigentlichen Verbindungsanfrage, eine „version identifier/method selection message“ gesendet. Diese Nachricht enthält verschiedene Authentifizierungsmethoden, die der Client akzeptiert und von denen sich der Server eine zur Verwendung aussucht. Dies sieht so aus: (Die Zahlen geben die Anzahl der Bytes an)

+----+----------+----------+
|VER | NMETHODS | METHODS  |
+----+----------+----------+
| 1  |    1     | 1 to 255 |
+----+----------+----------+

VER wird auf die Version, also 0x05, gesetzt. NMETHODS gibt die Anzahl der vorgeschlagenen Authentifizierungsmethoden an. METHODS sind dann schließlich die vorgeschlagenen Authentifizierungsmethoden. Es gibt folgende Möglichkeiten:

Byte Bedeutung Erklärung
0x00 NO AUTHENTICATION REQUIRED Keine Authentifizierung benötigt
0x01 GSSAPI GSSAPI, siehe RFC 2743. Genutzt u. a. von Kerberos.
0x02 USERNAME/PASSWORD Authentifizierung mit Benutzername und Password
0x03 bis 0x7F IANA ASSIGNED Werden von der IANA vergeben
0x80 bis 0xFE RESERVED FOR PRIVATE METHODS Für nicht öffentliche Methoden reserviert
0xFF NO ACCEPTABLE METHODS Keine akzeptable Methode

Der Server akzeptiert daraufhin eine der vorgeschlagenen Authentifizierungsmethoden:

+----+--------+
|VER | METHOD |
+----+--------+
| 1  |   1    |
+----+--------+

VER ist die Version, also wieder 0x05 METHOD ist die akzeptierte und damit verwendete Methode. 0xFF bedeutet: Keine Methode akzeptabel und der Client muss die Verbindung trennen.

[Bearbeiten] Die Verbindungsanfrage

Sie sieht bei SOCKS5 so aus:

+----+-----+-------+------+----------+----------+
|VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT |
+----+-----+-------+------+----------+----------+
| 1  |  1  | X'00' |  1   | Variable |    2     |
+----+-----+-------+------+----------+----------+

VER ist wieder die Version, 0x05.
CMD ist der Befehl den der Server ausführen soll:

  • 0x01 Eine TCP-Verbindung aufbauen
  • 0x02 Eine TCP-Verbindung entgegennehmen, d. h. einen Server aufmachen.
  • 0x03 Eine UDP-Weiterleitung einrichten

RSV ist reserviert und muss 0x00 sein.
ATYP ist der Typ der Zieladresse:

  • 0x01 für eine IP V4 Adresse
  • 0x03 für einen Domainnamen
  • 0x04 für eine IP V6 Adresse

DST.ADDR ist die Zieladresse.
DST.PORT ist der Zielport.

Die Antwort des Servers sieht genau so aus. Der einzige Unterschied ist, dass CMD in REP, d. h. Antwort, umbenannt wird. Folgende Werte sind für REP erlaubt:

Byte Bedeutung Erklärung
0x00 succeeded Verbindung erfolgreich hergestellt
0x01 general SOCKS server failure Serverfehler
0x02 connection not allowed by ruleset Verbindung wegen der Serverkonfiguration nicht erlaubt.
0x03 Network unreachable Das Zielnetzwerk ist nicht erreichbar
0x04 Host unreachable Der Zielhost ist nicht erreichbar
0x05 Connection refused Verbindung abgelehnt
0x06 TTL expired Zielrechner zu weit entfernt
0x07 Command not supported CMD der Anfrage wird nicht unterstützt
0x08 Address type not supported ATYP der Anfrage wird nicht unterstützt
0x09 bis 0xFF unassigned Nicht vergeben

[Bearbeiten] SOCKS-Server

Liste von SOCKS-Servern:

[Bearbeiten] SOCKS-Clients

Es existieren Programme, die es anderen Programmen ermöglichen, externe Netzwerke über SOCKS zu erreichen, ohne dass sie spezielle Unterstützung dafür mitbringen müssen:

Liste von SOCKS-Clients:

[Bearbeiten] Weblinks

Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -