Die Ausgabe des Proxyservers outline-ss-server 1.4, der das Protokoll Shadowsocks verwendet, um die Art des Datenverkehrs zu verschleiern, Firewalls zu umgehen und Paketinspektionssysteme zu täuschen, wurde veröffentlicht. Der Server wird vom Projekt Outline weiterentwickelt, das zusätzlich eine Bindung aus Clientanwendungen und einer Verwaltungsoberfläche bereitstellt, die eine schnelle Bereitstellung von Multi-User-Shadowsocks-Servern basierend auf outline-ss-server in öffentlichen Cloud-Umgebungen oder auf eigener Hardware ermöglicht, sie über eine Weboberfläche zu verwalten und den Zugang der Benutzer über Schlüssel zu organisieren. Die Entwicklung und Wartung des Codes wird von Jigsaw, einer Abteilung bei Google, die gegründet wurde, um Mittel zum Umgehen von Zensur und zur Organisation des freien Austauschs von Informationen zu fördern, übernommen.
Outline-ss-server ist in der Programmiersprache Go geschrieben und steht unter der Lizenz Apache 2.0. Der Code des Proxys basiert aufServer go-shadowsocks2, das von der Entwicklergemeinschaft von Shadowsocks erstellt wurde. In letzter Zeit konzentriert sich die Hauptaktivität des Projekts Shadowsocks auf die Entwicklung eines neuen Servers in der Programmiersprache Rust, während die Implementierung in Go seit über einem Jahr nicht aktualisiert wurde und deutlich in der Funktionalität zurückliegt.
Die Unterschiede zwischen outline-ss-server und go-shadowsocks2 liegen in der Unterstützung von Verbindungen mehrerer Benutzer über einen einzigen Netzwerkport, der Möglichkeit, mehrere Netzwerkports zum Empfangen von Verbindungen zu öffnen, der Unterstützung für Hot-Reboot und die Aktualisierung der Konfiguration ohne Unterbrechung der Verbindungen sowie eingebauten Monitoring- und Traffic-Änderungsfunktionen basierend auf der Plattform prometheus.io.

Im outline-ss-server wurde auch ein Schutz vor Angriffen eingeführt, die mit dem Versenden von Prüfanforderungen und der Wiederholung von Datenverkehr verbunden sind. Der Angriff über Prüfanforderungen zielt darauf ab, die Existenz eines Proxys festzustellen, beispielsweise kann der Angreifer auf den Ziel-Shadowsocks-Server Datensätze unterschiedlicher Größe senden und analysieren, wie viel Datenvolumen der Server vor dem Erkennen eines Fehlers und dem Schließen der Verbindung liest. Ein Angriff durch Wiederholung von Datenverkehr basiert auf dem Abfangen einer Sitzung zwischen dem Client und Server dem anschließenden Versuch, die abgefangenen Daten erneut zu senden, um die Existenz eines Proxys festzustellen.
Um Angriffe über Prüfanforderungen abzuwehren, unterbricht der outline-ss-server die Verbindung bei inkorrekten Daten nicht und gibt keinen Fehler aus, sondern nimmt weiterhin Informationen entgegen, als wäre er ein schwarzes Loch. Um eine Wiederholung von Übertragungen zu verhindern, werden die vom Client kommenden Daten zusätzlich auf Wiederholungen anhand von Prüfziffern überprüft, die für die letzten tausend Handshake-Sequenzen gespeichert sind (maximal 40.000, die Größe wird beim Start des Servers festgelegt und verbraucht 20 Bytes Speicher pro Sequenz). Um wiederholte Antworten des Servers zu blockieren, werden in allen Server-handshake-Sequenzen HMAC-Authentifizierungscodes mit 32-Bit-Tags verwendet.
Was die Verschleierung des Datenverkehrs betrifft, ist das Shadowsocks-Protokoll in der Umsetzung des outline-ss-server dem anpassbaren Transport Obfs4 im anonymen Netzwerk Tor ähnlich. Das Protokoll wurde entwickelt, um das Zensursystem des Datenverkehrs in China ("Grofire Chinese Firewall") zu umgehen und ermöglicht es, den über einen anderen Server leitenden Datenverkehr relativ effektiv zu verschleiern (der Datenverkehr ist schwer zu identifizieren, da zufällige Anreize und die Simulation eines kontinuierlichen Flusses angehängt werden).
Für das Proxying von Anforderungen wird SOCKS5 verwendet – auf dem lokalen System wird ein Proxy mit Unterstützung für SOCKS5 gestartet, der den Datenverkehr zu einem entfernten Server tunnelt, von dem aus die Anfragen tatsächlich ausgeführt werden. Der Datenverkehr zwischen Client und Server wird in einen verschlüsselten Tunnel gelegt (authentifiziertes Verschlüsseln wird unterstützt: AEAD_CHACHA20_POLY1305, AEAD_AES_128_GCM und AEAD_AES_256_GCM), dessen Erstellung zu verschleiern die primäre Aufgabe von Shadowsocks ist. Es wird die Organisation von TCP- und UDP-Tunneln unterstützt sowie die Erstellung beliebiger Tunnel, die nicht auf SOCKS5 beschränkt sind, durch die Verwendung von Plugins, die anpassbaren Transporten in Tor ähneln.
Quelle: opennet.ru
