Pokud jde o zabezpečení vaší stopy na webu, možná už jste slyšeli o VPN, že? VPN funguje jako prostředník mezi vaším počítačem a internetem. Veškerý provoz prochází přes VPN server, což efektivně maskuje vaši IP adresu a polohu.
VPN však není jedinou formou proxy serveru. SOCKS (Socket Secure) je podobný síťový protokol, který umožňuje komunikaci se servery přes firewall směrováním síťového provozu jménem klienta. Ve srovnání s VPN nabízí SOCKS větší flexibilitu a kontrolu nad konfigurací sítě. Je užitečný, když nemůžete nainstalovat VPN klienta nebo nedůvěřujete poskytovateli VPN.
Tento návod vám ukáže, jak vytvořit SSH SOCKS 5 proxy tunel a směrovat přes něj váš webový provoz.
Požadavky
Pro demonstraci jsme použili lokální počítač se systémem Ubuntu desktop a vzdálený stroj se systémem Ubuntu server. Předtím, než vše začne hladce fungovat, musíte mít nakonfigurované SSH. Vzhledem k tomu, že používáme SOCKS proxy, potřebujeme k otestování připojení aplikaci, která ji dokáže využít. Firefox je ideálním příkladem. Jedná se o moderní webový prohlížeč, který podporuje proxy tunel SOCKS 5.
Pokud používáte systém Windows, pak buď použijte WSL (Windows Subsystem for Linux) k nastavení lokálního prostředí Linuxu, nebo použijte PuTTY, open-source aplikaci, která dokáže implementovat různé síťové protokoly jako Telnet, rlogin atd.
Konfigurace SOCKS tunelu
-
Nastavení SOCKS tunelu (macOS/Linux)
Na lokálním počítači musíme nakonfigurovat SSH klíč, abychom zajistili zabezpečené připojení. SSH klíč musí být také zaregistrován ve vzdáleném systému. Tento návod na konfiguraci ověřování založeného na SSH klíčích podrobně popisuje celý proces.
Následující příkaz SSH vytvoří SOCKS tunel ke vzdálenému serveru:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Pojďme si tento příkaz rozzebrat:
-
-i: Říká SSH, který SSH klíč má pro připojení použít.
-
-D: Říká SSH, že chceme vytvořit SOCKS tunel. Co se týče portu, používáme port 1024. Nejedná se o pevnou hodnotu. Můžete si vybrat jakýkoli port mezi 1024 a 65536.
-
-f: Proces SSH bude spuštěn na pozadí.
-
-C: SSH zkomprimuje data před jejich odesláním na vzdálený server. To může snížit spotřebu dat a zvýšit efektivní šířku pásma.
-
-q: Spustí nástroj v tichém režimu.
-
-N: Říká SSH, že po vytvoření tunelu nebude odeslán žádný příkaz.
Po spuštění můžeme ověřit, zda se proces správně spustil. Následující příkaz vypíše informace o všech běžících procesech SSH:
|
1 |
ps aux | grep ssh |

Nyní můžete okno terminálu bezpečně zavřít. Proces SSH bude fungovat na pozadí tak, jak má.
-
Nastavení SOCKS tunelu (Windows)
Pro uživatele systému Windows je jednodušším řešením použití PuTTY. Nejprve musíte stáhnout PuTTY:

Po instalaci spusťte PuTTY:

Na kartě Session v levém panelu zadejte Host Name (or IP address) vašeho serveru. Pokud jde o Connection type, vyberte SSH. Dále přejděte na Connection >> SSH >> Tunnels. Zde v poli Destination vyberte možnosti zobrazené na snímku obrazovky:

Poté klikněte na Open. Otevře se okno terminálu pro připojení ke vzdálenému serveru přes SSH. Přihlaste se ke vzdálenému serveru:

Implementace SOCKS tunelu
Tunel je nyní nastaven. Jakákoli aplikace podporující SOCKS může tento tunel použít. Pro demonstraci je skvělým příkladem Firefox.
Nejprve otevřete Firefox. V pravém horním rohu klikněte na ikonu nabídky. Přejděte do Settings:

Poté vyhledejte proxy. Klikněte na Settings u Configure how Firefox connects to the internet:

Poté vyberte Manual proxy configuration. Pokud jde o SOCKS Host, použijte localhost nebo 127.0.0.1. Poté jako port zadejte port, který jsme vyhradili pro SOCKS tunel. Nezapomeňte vybrat SOCKS_v5:

Nakonec zaškrtněte možnost Proxy DNS when using SOCKS_v5. Klikněte na OK pro pokračování.
Poté otevřete novou kartu a zkuste přejít na jakoukoli webovou stránku. Svou IP adresu můžete zkontrolovat například na CheckMyIP.
Zrušení nastavení proxy
Pokud již proxy připojení k SSH tunelu nepotřebujete, můžete jej bezpečně zakázat v nastavení proxy ve Firefoxu:

V okně vyberte Použít systémová nastavení proxy a klikněte na OK.
Zavření SOCKS tunelu
-
Zavření tunelu na macOS/Linuxu
Chcete-li tunel zavřít, musíme proces SSH ukončit ručně. Potřebujeme PID (ID procesu) procesu SSH. Následující příkaz zobrazí PID všech spuštěných procesů SSH:
|
1 |
ps aux | grep ssh |
Najděte proces SSH, který běží s příkazem pro vytvoření tunelu. Ukončete proces:
|
1 |
kill <tunnel_ssh_pid> |
Pokud není definována žádná volba, příkaz kill odešle obecný SIGTERM signál cílovému procesu. Více o správě procesů v Linuxu se dozvíte v tomto návodu.
-
Zavření tunelu ve Windows
Zavřením okna PuTTY by se mělo připojení tunelu ukončit.
Řešení problémů
Zde jsou některé běžné problémy, se kterými se můžete setkat při pokusu o směrování provozu přes SOCKS.
-
Firewall
Pokud se vám nedaří navázat připojení kvůli omezení firewallu, je pravděpodobné, že je firewall nakonfigurován tak, aby blokoval připojení k portu 22. To je výchozí port, který SSH používá k připojení ke vzdáleným systémům. Některé porty zůstávají ve výchozím nastavení otevřené, například port 80 (běžný webový provoz) a port 443 (TLS, zabezpečený webový provoz).
Pokud server SSH neposkytuje webový obsah, můžeme použít jeden z výchozích portů ( 80 nebo 443 ) namísto portu 22. Doporučuje se použít port 443 , protože ve výchozím nastavení očekává šifrovaný provoz. Bude také šifrovat odchozí provoz. Chcete-li provést změnu, musíme upravit konfigurační soubor SSH. Otevřete soubor v textovém editoru:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH může pro své účely používat více portů. Přejděte v konfiguračním souboru dolů a najděte sekci portů:

Jakmile provedete změny, uložte soubor a zavřete editor. Restartujte službu SSH, aby se změny projevily:
|
1 |
sudo service ssh restart |
Chcete-li ověřit, zda nový port funguje, zkuste se připojit ke vzdálenému serveru pomocí nového portu:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Pokud bylo připojení úspěšné, můžeme bezpečně použít port 443 pro SSH tunelování. Zde je upravený příkaz pro vytvoření SOCKS tunelu:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Zde příznak -p říká SSH, aby použilo port 443.
Závěrečné myšlenky
V dnešní době jsou soukromí a bezpečnost jedněmi z největších obav. Existuje mnoho způsobů, jak bezpečně procházet web, když jste v nepřátelské síti. Ve většině případů poskytne dostatečné zabezpečení vašeho síťového provozu použití VPN. Na druhou stranu vám SOCKS tunel nabídne potřebné zabezpečení, pokud VPN nemůžete nebo nechcete důvěřovat. SOCKS tunel vám také dává plnou kontrolu nad celým nastavením.
Příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.