Jeden stroj už má schválený přístup k VPN, druhý stroj potřebuje přesně jednu privátní HTTPS službu a lokální SSH přesměrování dokáže tuto mezeru překlenout, aniž by druhému stroji dalo tunel. Přesměrování přenáší jedno TCP cílové umístění místo celé sítě a právě toto omezení je smyslem. Projděte pět kroků níže v pořadí, protože každý selhává z jiného důvodu a pozdější krok nemůže zachránit dřívější mezeru. Pokud chybí jakýkoli předpoklad, tento návrh ho neřeší a žádné ladění příkazů nepomůže.

Krok jedna: potvrďte tři předpoklady

Tři věci musí platit už předtím, než bude mít jakýkoli příkaz význam. Potřebujete oprávnění používat první stroj jako hostitele přesměrování, funkční SSH přístup k němu a serverovou politiku, která povoluje zamýšlené cílové umístění. SSH účet vytvořený pro přenos souborů může mít přesměrování vypnuté a server, který přesměrování povoluje, může stále omezovat, která cílová umístění jsou přes něj dostupná. Ptejte se před testováním, protože použití kolegovy pracovní stanice jako odrazového bodu bez dohody je problém politiky, i když příkaz funguje bezchybně.

Technickou polovinu tohoto seznamu vyřeší dva příkazy. První dokazuje, že účet a klíč fungují bez interaktivní výzvy, a druhý vypisuje skutečnou serverovou politiku místo zakomentovaného příkladu v konfiguračním souboru.

ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'

Krok dva: svažte port loopback a udržte relaci živou

Na stroji, který spouští klientskou aplikaci, otevřete lokální přesměrování k privátní službě. Svažte ho výslovně na loopback, aby se nezveřejňovalo v lokální síti, a vyberte vysoký port, který žádná lokální služba už nedrží. Udržujte relaci otevřenou, dokud pracujete, protože jejím zavřením zavřete naslouchač. ExitOnForwardFailure mění odmítnuté svázání nebo obsazený port v okamžité ukončení místo relace, která zůstane běžet bez přesměrování, a to je režim selhání, který spotřebuje nejvíce času.

Privátní spojení vzniká z odrazového hostitele, takže jeho DNS, trasy, VPN politika a přístup ke službě musí všechny fungovat. SSH relace nevytváří dostupnost, kterou odrazový hostitel nemá, a nedokáže opravit trasu, kterou VPN nikdy neposlala. Potvrďte naslouchač tam, kde skutečně je, místo abyste věřili mlčení příkazu.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'

Krok tři: zachovejte jméno HTTPS, když je socket lokální

Prohlížení https://127.0.0.1:9443/ mění jméno TLS serveru a autoritu aplikace. Certifikát vydaný pro portal.lab.example se neověří proti adrese loopback a výsledná chyba vypadá jako rozbitý certifikát, nikoli jako zkratka přesměrování. Pro test z příkazového řádku zachovejte skutečnou URL a změňte jen cílové umístění socketu. To dělá --connect-to a manuál curl dokumentuje čtyřpolní formu použitou níže.

curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/

Jméno zůstává v URL, v TLS handshake a v hlavičce Host, zatímco TCP spojení jde k lokálnímu naslouchači. Volba bez proxy drží test na tomto přesměrování, místo aby ho zachytila nakonfigurovaná HTTP proxy, a ponechání ověřování certifikátů zapnuté je to, co činí výsledek smysluplným.

Krok čtyři: vězte, co jedno přesměrování nepokryje

Jedno TCP přesměrování pokrývá jeden cílový port. Stránka, která přesměrovává na druhé jméno hostitele, načítá zdroje z hostitele uvnitř privátní sítě nebo odesílá na jiný port, potřebuje vlastní přesměrování a každé z nich potřebuje stejnou kontrolu politiky jako první. Pracovní postupy v prohlížeči přidávají vlastní požadavky, protože prohlížeči je třeba říci, aby posílal skutečné jméno na lokální port přes konfiguraci proxy nebo lokální mapování. Úspěšný test z příkazového řádku tedy nedokazuje, že uspěje prohlížeč, i když dokazuje cestu.

UDP, zjišťování SMB a přihlašování do domény vůbec neprocházejí přes TCP přesměrování. Pokud je skutečným požadavkem obecný přístup k síti, je tento návrh špatný nástroj a správný je podporovaná brána vzdáleného přístupu.

Krok pět: ukliďte a zapište to

Zastavte relaci, když je test hotový, a potvrďte, že naslouchač zmizel. Pokud byl zvolený port už obsazen, vyberte jiný nepoužitý port loopback a aktualizujte URL, testovací příkaz i poznámku společně, místo abyste uvolnili číslo zastavením nesouvisející lokální služby. Ponechání přesměrování otevřeného na notebooku mění diagnostiku v neřízenou službu.

Zapište odrazového hostitele, přesměrované cílové umístění, lokální port a kdo uspořádání schválil. Přesměrování, které existuje jen v něčí historii shellu, je jedno restartování od opakovaného vyšetřování a další člověk nebude vědět, který ze tří předpokladů už byl ověřen.

Související články