Přístup k HTTPS webu dostupnému jen přes VPN pomocí SSH přesměrování
Propojte jednu HTTPS službu dostupnou jen přes VPN lokálním SSH přesměrováním, zachovejte skutečné jméno hostitele pomocí --connect-to a vězte, co jedno TCP přesměrování nepokryje.
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.