Ien masine hat al goedkard VPN-tagong, in twadde masine hat krekt ien privee HTTPS-tsjinst nedich, en in lokale SSH-oerdracht kin dat gat oerbringe sûnder de twadde masine in tunnel te jaan. De oerdracht draacht ien TCP-bestimming yn stee fan it hiele netwurk, en krekt dy beheining is it punt. Wurkje de fiif stappen hjirûnder yn folchoarder troch, want elk mislearret om in oare reden en in lettere stap kin in earder gat net rêde. As ien betingst ûntbrekt, oplost dit ûntwerp it net en gjin inkele kommandoynstelling sil helpe.

Stap ien: befêstigje de trije betingsten

Trije dingen moatte al wier wêze foardat hokker kommand dan ek ta saak docht. Jo hawwe tastimming nedich om de earste masine as oerdrachthost te brûken, wurkjende SSH-tagong dêrhinne, en in serverbelied dat de bedoelde bestimming tastiet. In SSH-account makke foar bestânsoerdracht kin oerdracht útskeakele hawwe, en in server dy't oerdracht tastiet kin noch beheine hokker bestimmingen der fia berikber binne. Freegje foardat jo teste, want it brûken fan in kollega syn wurkstasjon as springpunt sûnder ôfspraak is in beliedsprobleem, sels as it kommando sûnder flaters wurket.

Twa kommando's beklinkje de technyske helte fan dy list. De earste bewissiget dat it account en de kaai wurkje sûnder ynteraktive fraach, en de twadde prints it wirklike serverbelied yn stee fan it kommentearre foarbyld yn it konfiguraasjebestân.

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

Stap twa: byn in loopback-poarte en hâld de sesje libben

Iepenje op de masine dy't de kliïntapplikaasje rint in lokale oerdracht nei de privee tsjinst. Byn it eksplisyt oan loopback, sadat it net op it lokale netwurk publisearre wurdt, en kies in hege poarte dy't gjin lokale tsjinst al hâldt. Hâld de sesje oan it wurkjen wylst jo wurkje, want it sluten derfan slút de listener. ExitOnForwardFailure makket fan in wegere bynding of in besette poarte in fuortendaliks ôfsluting yn stee fan in sesje dy't oerein bliuwt sûnder oerdracht, en dat is de flatermodus dy't de measte tiid fergriemt.

De privee ferbining wurdt fan de springhost makke, dus dy host syn DNS, rûtes, VPN-belied en tsjinsttagong moatte allegear wurkje. De SSH-sesje makket gjin berikberens dy't de springhost net hat, en kin in rûte dy't it VPN nea skood hat net reparearje. Befêstigje de listener dêr't er echt is yn stee fan op 'e stilte fan it kommando te fertrouwen.

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

Stap trije: hâld de HTTPS-namme as de socket lokaal is

It besykjen fan https://127.0.0.1:9443/ feroaret de TLS-servernamme en it applikaasje-gesach. In sertifikaat útjûn foar portal.lab.example sil net falidearje tsjin in loopback-adres, en de resultearjende flater liket op in brutsen sertifikaat yn stee fan in oerdrachtsnijpaad. Hâld foar in kommandorigel-test de echte URL en feroarje allinnich de socket-bestimming. Dat is wat --connect-to docht, en de curl-hânlieding dokumintearret de fjouwerfjildfoarm dy't hjirûnder brûkt wurdt.

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

De namme bliuwt yn 'e URL, yn 'e TLS-hânsdruk en yn 'e Host-kop, wylst de TCP-ferbining nei de lokale listener giet. De opsje sûnder proxy hâldt de test op dizze oerdracht yn stee fan in konfigurearre HTTP-proxy it te litten ûnderskeppe, en it oanlitten hâlden fan sertifikaatferifikaasje is wat it resultaat sinfol makket.

Stap fjouwer: wês bewust wat ien oerdracht net dekke kin

Ien TCP-oerdracht dekt ien bestimmingspoarte. In side dy't trochstjoert nei in twadde hostnamme, aktiva fan in host binnen it privee netwurk laadt of nei in oare poarte stjoert, hat syn eigen oerdracht nedich, en elk dêrfan hat deselde beliedscontrole nedich as de earste. Browserwurkstreams foegje har eigen easken ta, want de browser moat ferteld wurde de echte namme nei de lokale poarte te stjoeren fia in proxykonfiguraasje of in lokale mapping. In slagge kommandorigel-test bewissiget dus net dat de browser it sil helje, ek al bewissiget er it paad.

UDP, SMB-ûntdekking en domeinoanmelding reizgje hielendal net troch in TCP-oerdracht. As de echte eask algemiene netwurktagong is, is dit ûntwerp it ferkearde ark en in stipe tagongspoarte foar op ôfstân is it goede.

Stap fiif: romje op en skriuw it del

Stopje de sesje as de test klear is en befêstigje dat de listener fuort is. As de keazen poarte al beset wie, kies dan in oare net brûkte loopback-poarte en fernij de URL, it testkommando en de notysje tegearre, yn stee fan in net besibbe lokale tsjinst te stopjen om it nûmer frij te meitsjen. In oerdracht iepen litte op in laptop feroaret in diagnostyk yn in net-beheard tsjinst.

Skriuw de springhost, de oerdroegen bestimming, de lokale poarte en wa't de ôfspraak goedkard hat del. In oerdracht dy't allinnich yn immen syn shell-skiednis bestiet is ien werstart fuort fan in werhelle ûndersyk, en de folgjende persoan sil net witte hokker fan 'e trije betingsten al kontrolearre is.

Relatearre artikelen