Předpokládáte, že SOCKS proxy musí běžet tam, kde už síťový přístup existuje. OpenSSH umí umístit listener úplně jinam. Vzdálené dynamické přesměrování otevře port SOCKS na vzdáleném hostiteli a každé spojení vzniká z vašeho místního SSH klienta, který nese schválenou VPN cestu notebooku. Pi dostane omezenou proxy; není dědictvím vašeho tunelu ani vašich oprávnění.

Listener a strana, ze které spojení vzniká, se mohou lišit

Běžný ssh -D 1080 spouští listener na vašem vlastním stroji a odtud posílá spojení. Vzdálené dynamické přesměrování to obrací: listener se objeví na vzdáleném hostiteli a každé spojení, které přijme, se otevírá z místní strany. Manuál klienta OpenSSH dokumentuje -R bez pevného cíle přesně jako toto uspořádání SOCKS4/5.

Podporovaný příkaz z notebooku vypadá takto, přičemž účet, hostitelé a port jsou zástupné hodnoty:

ssh -NT -S none -o ExitOnForwardFailure=yes \
  -o PermitRemoteOpen=app.corp.example:443 \
  -R 1080 [email protected]

Tři detaily tam dělají užitečnou práci. -S none drží relaci mimo sdílený řídicí master, ExitOnForwardFailure selže rychle, místo aby vám nechal napůl otevřenou relaci, a PermitRemoteOpen omezuje, kam až vzdálený listener dosáhne. Použijte autorizovaný účet Pi a před přidáním čehokoli z toho ověřte klíč hostitele.

Co vzdálený listener skutečně vystavuje

Než se na listener spolehnente, zkontrolujte politiku přesměrování serveru. S GatewayPorts no zůstává vzdálené přesměrování vázané na loopback, což je expozice, kterou chcete. Server nastavený tak, aby vynucoval wildcard přesměrování, publikuje stejný port na každém rozhraní, a tím se z osobní proxy stane něco dostupné z místní sítě.

Loopback také není hranicí mezi uživateli. Jiný proces na Pi se může připojit k 127.0.0.1:1080, pokud zná port, takže místní účty Pi a vše, co na něm běží, jsou součástí vašeho návrhu přístupu. To je důvod držet seznam cílů úzký, ne důvod kontrolu politiky přeskočit.

Držte povolený cíl konkrétní pro aplikaci, ke které se snažíte dostat. Nahrazení neomezeným přesměrováním, aby fungoval nesouvisející program, rozšíří cestu daleko za problém, se kterým jste začali. Seznam cílů také zaznamenává, k čemu relace byla, což pomáhá tomu, kdo ji bude později auditovat. Zapište ho vedle účtu, který jste použili.

Pošlete jednou aplikaci přes proxy

Klient na Pi, který rozumí proxy, pak může požadavek odeslat. Předpona socks5h předá jméno cíle proxy, takže vyhledání i spojení probíhají na straně notebooku, a odpovídá pojmenovanému cíli v PermitRemoteOpen:

curl --proxy socks5h://127.0.0.1:1080 \
  --noproxy '' https://app.corp.example/

Zachovejte běžné ověření certifikátu i vlastní autentizaci aplikace. Proxy mění, kde se vytváří TCP spojení; nečiní neautentizovanou službu bezpečnou a nepřeměňuje samopodepsaný koncový bod na důvěryhodný.

Notebook stále potřebuje vlastní trasu a přístup k resolveru jak k SSH serveru, tak k aplikaci. Provoz jeho SSH klienta musí vybírat schválená politika VPN a výjimka split-tunnel může ten provoz poslat jinou cestou, než kterou jste otestovali.

Dokažte cestu a zavřete ji

Potvrďte, že listener existuje tam, kde ho čekáte, a že odpovídá jen zamýšlený cíl:

$ ss -ltnp | grep 1080
LISTEN 0 128 127.0.0.1:1080 0.0.0.0:*
$ curl -sS -o /dev/null -w '%{http_code}\n' \
    --proxy socks5h://127.0.0.1:1080 https://app.corp.example/

ExitOnForwardFailure umí dokázat, že přesměrování bylo navázáno, a přesto nedokáže potvrdit, že přihlášení do aplikace dále uspěje. Testujte aplikaci, ne jen port. Listener, který přijme a pak každý požadavek odmítne, obvykle znamená, že jméno cíle nebo trasa notebooku jsou špatné, ne že tunel selhal.

Toto uspořádání přenáší jen TCP. UDP, ICMP a programy, které ignorují nastavení proxy, zůstávají mimo něj a přesměrování končí v okamžiku, kdy skončí relace SSH. Až budete hotovi, tu relaci zastavte a nastavení proxy, které jste do aplikace přidali, odeberte.

Pro trvalý přístup použijte místo toho podporovanou registraci vlastníka sítě nebo spravovanou bránu. Reverzní proxy je nesprávný nástroj pro obcházení omezení VPN na zařízení či zdroje; použita uvnitř nich, je to prostě jedna povolená cesta aplikace s výslovnými limity.

Související články