Socks5 Implementierung - Auswahl der Authentifizierung vor jeder Verbindungsanfrage?

p3Eq

zu nichts zu gebrauchen
Registriert
15 Juli 2013
Beiträge
358
Hallo zusammen,

ich sitze gerade daran, ein kleines Socks5-Proxy-Programm in Java zu schreiben. Oder genauer gesagt: Noch plane ich das Konzept der Software.
Im Grunde ist das Socks5-Protokoll ja sehr simpel und eigentlich sollte nicht allzu schwer zu implementieren sein, doch habe ich ein Verständnisproblem. Und zwar habe ich mir die genaue Spezifikation durchgelesen (bzw. die für mich relevanten Teile davon) und nochmal den Ablauf einer Verbindung angeschaut. Aus beiden ist für mich jedoch bisher nicht eindeutig hervorgegangen, ob bei jeder neuen Verbindungsanfrage, die das Proxy-Programm entgegen nimmt, zuvor eine Authentifizierungsmethode festgelegt werden muss, oder ob dies ein einmaliger Vorgang ist, der beispielsweise beim Start des Browsers durchgeführt wird und anschließend nur noch die Verbindungsanfragen entgegengenommen werden.

Wenn ich logisch argumentiere, würde ich sagen, dass die Authentifizierungsmethode vor jedem Verbindungsaufbau neu festgelegt wird, da im Praxisbetrieb oftmals viele verschiedene Nutzer den Proxy nutzen und sich immer wieder identifizieren müssen, da die Verbindungen sonst beispielsweise nur anhand von IP-Adressen einem bereits authentifzierten Nutzer zugeschrieben werden könnten, es aber sonst keinen Anhaltspunkt gäbe, einen Nutzer eindeutig zu erkennen. Zur Sicherheit, ob meine Vermutung richtig ist, frage ich hier aber lieber nochmal nach...

Lg
 
Re: Socks5 Implementierung - Auswahl der Authentifizierung vor jeder Verbindungsanfra

Die Aushandlung der Authentifizierungsmethode und ggf. die Authentifizierung muss für jede vom Client zum SOCKS-Host aufgebaute TCP-Verbindung erfolgen, bevor er einen Request zum Aufbau einer Verbindung über den Proxy sendet. Der Abschnitt
When a TCP-based client wishes to establish a connection to an object that is reachable only via a firewall (such determination is left up to the implementation), it must open a TCP connection to the appropriate SOCKS port on the SOCKS server system. The SOCKS service is conventionally located on TCP port 1080. If the connection request succeeds, the client enters a negotiation for the authentication method to be used, authenticates with the chosen method, then sends a relay request.
scheint mir dahingehend eindeutig - oder habe ich deine Frage missverstanden? Die Formulierung `object that is reachable only via a firewall` ist historisch gewachsen, da SOCKS ursprünglich als Circuit-Level-Proxy-System zum Aufbau von Verbindungen durch Firewalls gedacht war. Die Bedeutung ist äquivalent zu `wenn ein Client den SOCKS-Proxy nutzen möchte`.
 
  • Thread Starter Thread Starter
  • #3
Re: Socks5 Implementierung - Auswahl der Authentifizierung vor jeder Verbindungsanfra

Danke für die Antwort!
Die Formulierung war nicht das Problem. Es war für mich nur nicht ersichtlich, ob sich dieser Satz auf eine einzige Verbindung bezieht, die aufgebaut wird, oder ob dort allgemein gesprochen wurde, da die Wortwahl "then sends a relay request" ist, statt "then sends one relay request" oder "then sends the relay request". Letzere Formulierungen wären für mich präziser gewesen und hätten meine Frage gar nicht erst aufkommen lassen. In der jetzigen Form kann ich den Satz zweideutig verstehen: So, dass nach dem Festlegen der Authentifizierungsmethode beliebig viele Weiterleitungen ohne erneute Authentifizierung einrichtbar wären, ohne dass eine bereits hergestellte Verbindung sozusagen überschrieben wird. Das hätte dann noch weitere Fragen aufgeworfen.

Aber hat sich ja nun erledigt :)
 
Zurück
Oben