SOCKS Proxy-Server und deren Sicherheit

SOCKS ist ein Internet-Protokoll, das Client-Server-Anwendungen erlaubt transparent die Dienste einer Netzwerk-Firewall zu nutzen.

SOCKS ist eine Abkürzung für “SOCKets”(aus dem englischen: „Steckdosen“). Clients hinter einer Firewall, die Zugriff auf externe Server brauchen, können sich stattdessen mit einem (anonymen) SOCKS-Proxy-Server verbinden.

Solche Proxy-Server steuern die Wählbarkeit des Clients um Zugriff zu dem externen Server zu bekommen und leiten die Anfrage an den Server weiter. SOCKS kann auch in die entgegengesetzte Weise verwendet werden, so dass Clients außerhalb der Firewall (“Externe Clients”) mit Servern innerhalb der Firewall (interne Server) verbunden werden können. Ein Proxy-Server ist eine Art Puffer zwischen Ihrem Computer und den Internet-Dateien auf die Sie zugreifen möchten. Sie sammeln und speichern Dateien, die am häufigsten von Tausenden von Internet-Nutzern nachgefragt werden in einer speziellen Datenbank, genannt „Cache“.

Daher sind Proxy-Server in der Lage, die Geschwindigkeit Ihrer Internetverbindung zu erhöhen. Der Cache von einem Proxy-Server kann bereits Informationen enthalten, die Sie in dem Moment Ihrer Anfrage benötigen, was es ermöglicht, diese sofort zu liefern. Die Gesamtleistungssteigerung kann sehr hoch sein. Außerdem können Proxy-Server in den Fällen helfen, wenn manche Besitzer der Internet-Dateien Einschränkungen auf Benutzer aus bestimmten Ländern oder Regionen verhängen. Zusätzlich hierzu gibt es unter den Proxy-Servern sogenannte anonyme Proxy-Server, die Ihre IP-Adresse verstecken, wodurch Sie vor damit verbundenen Schwachstellen geschützt sind.

Ein Proxy wird in der Regel Pakete auf bestimmten Ports übertragen und von und zu Hosts. Ein Proxy kann auch Daten cachen und NAT (Network Address Translation – dt. Netzwerk Adressen Übersetzung), um mehreren Hosts den Zugriff auf das Internet zu erlauben. Sie müssen einen Proxy-Server für jede Anwendung und jeden Port konfigurieren. Herkömmliche Proxy-Server sind nicht auf Sicherheit, sondern mehr aus Performance-Gründen (Caching) und zur Beschränkung eines Zugangs zu bestimmten Ressourcen (Zugang zu bestimmten Webseiten an einer Schule verhindern) ausgerichtet. Ein SOCKS-Server ist eine Art Proxy-Server, mit dem jeder Host hinter den Server transparent mit Hosts auf der anderen Seite der Server kommunizieren kann. Er erlaubt die Verwendung von allen Arten von Anwendungen.

Es gibt zwei Hauptversionen für SOCKS: Version 4 und Version 5

Aus Sicht der Sicherheit, kann SOCKS eine höhere Sicherheit zwischen den Clients und Servern durch die Einrichtung einer SSL-Verbindung herstellen. Somit werden alle zwischen den Clients und dem Server übertragenen Daten sicher gemacht. Zwischen den SOCKS Server und dem Internet wird die Datei nur sicher sein, wenn die benutzte Anwendung auch sicher ist. Wenn Sie sich zum Beispiel mit Amazon verbinden, um ein Produkt über einen SSL konfigurierten SOCKS-Server zu kaufen, wird die Kommunikation von Ihrem Gerät an den SOCKS-Server sicher. Aber wenn Sie Sachen durchsuchen, bietet Amazon keine SSL, womit die Verbindung zwischen dem SOCKS Server und dem Internet nicht mehr sicher ist. Wenn Sie sich aber entscheiden, einen Artikel zu kaufen, schaltet Amazon Sie in den sicheren Modus (beachten Sie das HTTPS in der Adressleiste und dem Schloss oder der Schlüssel in der unteren rechten Ecke des Browsers). In diesem Fall ist die gesamte Kommunikation zwischen dem Client und Amazon sicher. Sie können auch einen SSL-fähigen Proxy-Server für sichere Anwendungen nutzen, aber Sie brauchen immer noch einen Herkömmlichen für nicht sichere Anwendungen. Ein SOCKS Server ist eine flexible Lösung.

Eine andere Art von Sicherheitsfunktion, die in beiden Fällen genutzt wird, bei einem herkömmlichen Proxy und einem SOCKS-Proxy, ist die Tatsache, dass Sie die Reichweite der IP-Adressen, die mit Ihrem Server verbinden einrichten kann, um zu vermeiden, dass der Server als “Open Proxy” fungiert. Solche Server können verwendet werden, um Spam oder andere bösartige Aktivitäten wie Denial-of-Service-Angriffe zu übertragen. Wenn Sie zum Beispiel Ihren Server nur zum Home Office (Heimnetzwerk) nutzen wollen, dann würden Sie den zulässigen IP-Bereich so konfigurieren, dass nur die IP-Adressen, die Ihr Heimnetzwerk nutzt erlaubt sind. Aus der Sicht eines Kunden, ermöglicht es ein herkömmlicher Proxy-Server sowie ein SOCKS-Server seine wahre IP im Internet zu verbergen, so dass daher ein gewisses Maß an Anonymität besteht und die Sicherheit vor Internet „Attacken“ erhöht.

Replay-Angriff – Gegenmaßnahmen





Ein Replay-Angriff (Angriff durch Wiedereinspielung) ist eine kryptoanalytische Angriffsform auf die Authentizität von Daten in einem Kommunikationsprotokoll. Hierbei sendet der Angreifer zuvor aufgezeichnete Daten, um etwa eine fremde Identität vorzutäuschen.



Beispiel

Angenommen, Alice will ihre Identität Bob gegenüber beweisen. Beide kennen Alice’ geheimes Passwort. Alice berechnet den Hashcode ihres Passworts mit einer kryptologischen Hash-Funktion und sendet diesen an Bob. Bob vergleicht den Hashcode mit seiner Berechnung und akzeptiert. Währenddessen belauscht Mallory die Kommunikation und zeichnet den von Alice gesendeten Hashcode auf. Nachdem die Kommunikation beendet ist, verbindet sich Mallory mit Bob, gibt sich als Alice aus und sendet den aufgezeichneten Hashcode. Mallory kann dadurch erfolgreich Alice’ Identität vorgeben, obwohl sie das Passwort nicht kennt.

Das Needham-Schroeder-Protokoll ist in seiner ursprünglichen Form für einen Replay-Angriff anfällig.




Gegenmaßnahmen

Eine Möglichkeit, Replay-Angriffe zu verhindern, ist die Nutzung eines Nonce: Bob sendet einen einmaligen Code (Nonce) zu Alice. Diesen nutzt Alice, um ihr Passwort zu transformieren, und sendet das Ergebnis zurück an Bob. Bob wiederum vollführt dieselbe Transformation und vergleicht sein Ergebnis mit Alice’ Ergebnis: wenn beide übereinstimmen, akzeptiert Bob die Identität von Alice. Wenn nun Mallory versucht, ein abgehörtes Passwort wiederzuverwenden, schickt Bob aber ein anderes Nonce; der ausspionierte Hashcode ist nun ungültig (da mit einem anderen Nonce generiert). Bob lehnt ab, da sein Ergebnis und der gelieferte (veraltete) Hashcode nicht übereinstimmen.

Um eine fortlaufende Datenübertragung über mehrere Datenpakete hinweg zu schützen, kann eine Sequenznummer verwendet werden, deren Authentizität wiederum von einem Message Authentication Code sichergestellt wird. Dies ist zum Beispiel bei IPsec sowohl beim Authentication Header als auch beim Encapsulating Security Payload vorgesehen. Je nach Betriebsart kann auch eine mit einem Blockchiffre verschlüsselte Datenübertragung Schutz vor Replay-Angriffen bieten. Siehe auch in WIKI