SOCKS Proxy
SOCKS je proxy agnostický protokol. Tam, kde HTTP proxy chápou pouze webový provoz, SOCKS proxy vytuneluje jakékoli TCP (a v SOCKS5, UDP) připojení, bez otázek. Tato obecnost je důvodem, proč SSH dodává podporu SOCKS ihned po vybalení, proč Tor odhaluje posluchač SOCKS5 a proč jej nakonec používá téměř každý nástroj na ochranu soukromí, který chce předávat libovolný aplikační provoz.
Celé tělo článku je uvedeno níže v angličtině.
SOCKS ("Socket Secure") byl navržen v MIPS Computer Systems na počátku 90. let, aby hostitelům s firewallem poskytl čistý způsob, jak se dostat do vnějšího světa. Namísto analýzy každého aplikačního protokolu jako HTTP proxy server SOCKS pouze otevírá TCP spojení jménem klienta a zamíchá bajty tam a zpět. Bez ohledu na protokol, který je navrstvený navrchu – HTTP, SMTP, IRC, vlastní binární – funguje beze změny.
SOCKS4 vs SOCKS5
SOCKS4, standardizovaný v roce 1992, podporuje pouze IPv4 a TCP a nemá žádné ověřování. Dnes je v podstatě zastaralý, ale stále se hojně vyskytuje ve starším softwaru.
SOCKS5, definovaná v RFC 1928 (1996), je verze, která se aktivně používá. Přidává:
- IPv6 cílové adresy
- Název-domény cíle (proxy je řeší, ne klient – důležité pro ochranu soukromí)
- PLZ je běžné metody (běžné jsou metody identifikace/název22XXZ jeden)
- UDP přidružený — řídicí kanál, který umožňuje klientovi tunelovat datagramy UDP, užitečné pro DNS, VoIP a herní protokoly Server SOCKS na svém naslouchacím portu (obvykle 1080).
- Client odešle pozdrav seznam podporovaných metod ověřování.
- Server vybere jednu a odpoví.
- Pokud bylo ověření provedeno5, pošlete klienta a server ClX45 ClXPLZPLZ Požadavek CONNECT pojmenování cílového hostitele a portu.
- Server otevře toto TCP spojení, odpoví s úspěšnou odpovědí a vázanou adresou a od té doby je vše, co klient napíše, předáváno na místo určení a naopak. SOCKS není přátelská k latenci, ale je jednoduchá.
SOCKS a DNS: odkud pocházejí úniky
Jednou jemnou vlastností SOCKS5 je, jak je pojmenován cíl. Požadavek CONNECT jej může pojmenovat IPv4, IPv6 nebo název domény. Pokud klient odešle IP, klient provedl vyhledávání DNS lokálně – a pokud jste se pokoušeli schovat za proxy, váš místní překladač právě viděl název. Pokud klient odešle domain, proxy to vyřeší, což je to, co uživatelé Tor chtějí.
Toto je hlavní příčina nesčetných úniků DNS: aplikace nakonfigurované pro SOCKS5, které stále lokalizují názvy hostitelů. Curl potřebuje
--socks5-hostnamemísto--socks5. Firefox potřebujenetwork.proxy.socks_remote_dns = true. Náš test úniku DNS zachycuje režim selhání. Dynamické předáváníSSH
Jedním z nejpraktičtějších použití SOCKS je
ssh -D 1080 user@server. SSH vytvoří místní posluchač SOCKS5; jakákoli aplikace, na kterou je namířeno, má svůj TCP provoz tunelovaný přes relaci SSH naserver, který pak vytvoří odchozí spojení. Bezplatně šifrovaný end-to-end mezi vámi a serverem SSH a směruje téměř všechna omezení místní sítě, která povoluje port 22.SOCKS vs HTTP CONNECT
HTTP CONNECT, sloveso tunelování používané HTTP proxy pro HTTPS. Oba jsou funkčně podobné tunelu SOCKS. Rozdíly:
- HTTP CONNECT běží přes HTTP, takže zdědí HTTP autentizaci a podporuje firewall na portu 80 nebo 443.
- SOCKS je vyhrazený protokol na vyhrazeném portu s čistší podporou UDP a bohatší autentizací. filtry podporující HTTPS; SOCKS je pro ně neprůhlednější.
SOCKS přes TLS
SOCKS sám o sobě není šifrován — odkaz klient/proxy je prostý text, včetně výměny autentizace. Aby bylo propojení chráněno, moderní nasazení zabalují SOCKS do TLS nebo jej spouštějí v tunelu SSH. Shadowsocks zvolil jiný přístup: zachoval myšlenku SOCKS5, ale přidal šifrování pro jednotlivá připojení a mlžení, aby porazil hloubkovou kontrolu paketů.
Kde SOCKS sedí vedle VPN
A VPN směruje všechny provoz z vašeho zařízení tunelem. Proxy server SOCKS směruje pouze aplikace, na které ukazujete. Díky tomu jsou SOCKS skvělé pro selektivní tunelování (směrujte pouze svůj prohlížeč přes Tor, ponechte hry na místním odkazu) a méně skvělé pro ochranu celého zařízení. Někteří komerční poskytovatelé VPN (Mullvad, IVPN) také vystavují koncové body SOCKS5 ve svých sítích, takže můžete směrovat jednu aplikaci, aniž byste museli používat plnou VPN.
Často kladené otázky
- Jsou SOCKS5 šifrované?
- Ne – SOCKS5 je přenosový protokol, nikoli šifrovací protokol. Autentizace i data putují mezi vámi a proxy v prostém textu, pokud celou věc nezabalíte do TLS nebo neprovedete tunelem SSH. Nepoužívejte SOCKS v nepřátelských sítích bez vnější vrstvy šifrování.
- Jaký port používá SOCKS?
- Podle konvence 1080. Není to náročný požadavek a mnoho nasazení používá jiné porty – přibalený posluchač SOCKS5 od Toru je na 9050 – ale 1080 je výchozí nastavení přiřazené IANA.
- Proč Tor používá SOCKS5 místo HTTP?
- SOCKS5 umí tunelovat jakýkoli protokol TCP, nejen HTTP. Uživatelé Tor chtějí směrovat IRC, e-maily, vlastní aplikace a další – nejen webový provoz. SOCKS5 také předává názvy domén proxy, což umožňuje Toru je vyřešit uvnitř sítě, než aby prosakoval lokálně.
- Zvládnou SOCKS UDP?
- SOCKS5 přidal příkaz UDP-associate, který umožňuje klientovi tunelovat UDP datagramy přes proxy. Podpora je nerovnoměrná – mnoho implementací serverů SOCKS používá pouze TCP – ale specifikace existuje a Tor a Shadowsocks zpracovávají DNS založené na UDP.
- Mám dát přednost SOCKS5 nebo VPN?
- Pro soukromí celého zařízení VPN – vše tuneluje a zašifruje odkaz. Pro tunelování jedné konkrétní aplikace nebo pro řetězení s Torem je SOCKS5 tím správným nástrojem. Oba se doplňují, nekonkurují si.