VPN:n kautta vain saatavilla olevaan HTTPS-sivustoon pääsy SSH-edelleenohjauksella
Yhdistä yksi vain VPN:n kautta saatavilla oleva HTTPS-palvelu paikalliseen SSH-edelleenohjaukseen, säilytä todellinen isäntänimi --connect-to-valinnalla ja tiedä, mitä yksi TCP-edelleenohjaus ei kata.
Yhdellä koneella on jo hyväksytty VPN-yhteys, toinen kone tarvitsee täsmälleen yhden yksityisen HTTPS-palvelun, ja paikallinen SSH-edelleenohjaus voi kuroa tämän aukon umpeen antamatta toiselle koneelle tunnelia. Edelleenohjaus kuljettaa yhtä TCP-kohdetta koko verkon sijaan, ja juuri tämä raja on asian ydin. Käy alla olevat viisi vaihetta järjestyksessä läpi, koska jokainen epäonnistuu eri syystä eikä myöhempi vaihe voi pelastaa aiempaa aukkoa. Jos jokin edellytys puuttuu, tämä suunnittelu ei ratkaise sitä, eikä mikään komentojen säätö auta.
Vaihe yksi: vahvista kolme edellytystä
Kolmen asian on oltava jo totta ennen kuin mikään komento merkitsee mitään. Tarvitset luvan käyttää ensimmäistä konetta edelleenohjausisäntänä, toimivan SSH-yhteyden siihen ja palvelinpolitiikan, joka sallii aiotun kohteen. Tiedostonsiirtoa varten luodulla SSH-tilillä voi olla edelleenohjaus pois käytöstä, ja edelleenohjauksen salliva palvelin voi silti rajoittaa, mitkä kohteet ovat sen kautta tavoitettavissa. Kysy ennen testaamista, sillä kollegan työaseman käyttäminen hyppypisteenä ilman sopimusta on politiikkaongelma, vaikka komento toimisi moitteettomasti.
Kaksi komentoa ratkaisee tuon listan teknisen puolen. Ensimmäinen todistaa, että tili ja avain toimivat ilman vuorovaikutteista kehotetta, ja toinen tulostaa todellisen palvelinpolitiikan eikä kommentoitua esimerkkiä asetustiedostossa.
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
Vaihe kaksi: sido loopback-portti ja pidä istunto elossa
Avaa asiakassovellusta ajavalla koneella paikallinen edelleenohjaus yksityiseen palveluun. Sido se nimenomaisesti loopbackiin, jotta sitä ei julkaista paikallisessa verkossa, ja valitse korkea portti, jota mikään paikallinen palvelu ei jo pidä. Pidä istunto käynnissä työskennellessäsi, sillä sen sulkeminen sulkee kuuntelijan. ExitOnForwardFailure muuttaa hylätyn sidonnan tai varatun portin välittömäksi lopetukseksi sen sijaan, että istunto jäisi pystyyn ilman edelleenohjausta, ja juuri tämä vikatila tuhlaa eniten aikaa.
Yksityinen yhteys muodostetaan hyppyisännästä, joten sen DNS:n, reittien, VPN-politiikan ja palvelun käytön on kaikkien toimittava. SSH-istunto ei luo tavoitettavuutta, jota hyppyisännältä puuttuu, eikä se voi korjata reittiä, jota VPN ei koskaan työntänyt. Vahvista kuuntelija siellä, missä se todella on, sen sijaan että luottaisit komennon hiljaisuuteen.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
Vaihe kolme: säilytä HTTPS-nimi, kun pistoke on paikallinen
Selailu https://127.0.0.1:9443/-osoitteeseen muuttaa TLS-palvelimen nimen ja sovelluksen valtuuden. portal.lab.example-osoitteelle myönnetty varmenne ei kelpaa loopback-osoitetta vastaan, ja tuloksena oleva virhe näyttää rikkinäiseltä varmenteelta eikä edelleenohjauksen oikotieltä. Komentorivitestiä varten säilytä todellinen URL ja muuta vain pistokkeen kohdetta. Juuri tätä --connect-to tekee, ja curl-käsikirja kuvaa alla käytetyn nelikenttäisen muodon.
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
Nimi pysyy URL:ssa, TLS-kättelyssä ja Host-otsakkeessa, kun taas TCP-yhteys menee paikalliselle kuuntelijalle. Ilman välityspalvelinta -valinta pitää testin tässä edelleenohjauksessa sen sijaan, että määritetty HTTP-välityspalvelin sieppaisi sen, ja varmenteen tarkistuksen päällä pitäminen on se, mikä tekee tuloksesta mielekkään.
Vaihe neljä: tiedä, mitä yksi edelleenohjaus ei kata
Yksi TCP-edelleenohjaus kattaa yhden kohdeportin. Sivu, joka uudelleenohjaa toiseen isäntänimeen, lataa resursseja yksityisverkon sisäiseltä isännältä tai lähettää toiseen porttiin, tarvitsee oman edelleenohjauksensa, ja jokainen niistä tarvitsee saman politiikkatarkistuksen kuin ensimmäinen. Selaimen työnkulut lisäävät omat vaatimuksensa, koska selaimelle on kerrottava todellisen nimen lähettämisestä paikalliseen porttiin välityspalvelinasetuksen tai paikallisen kuvauksen kautta. Onnistunut komentorivitesti ei siis todista, että selain onnistuu, vaikka se todistaakin polun.
UDP, SMB-tunnistus ja toimialueelle kirjautuminen eivät kulje lainkaan TCP-edelleenohjauksen läpi. Jos todellinen tarve on yleinen verkkoyhteys, tämä suunnittelu on väärä työkalu ja tuettu etäyhteysyhdyskäytävä on oikea.
Vaihe viisi: siivoa ja kirjaa se ylös
Pysäytä istunto, kun testi on valmis, ja vahvista, että kuuntelija on poissa. Jos valittu portti oli jo varattu, valitse toinen käyttämätön loopback-portti ja päivitä URL, testikomento ja muistiinpano yhdessä sen sijaan, että lopettaisit asiaankuulumattoman paikallisen palvelun numeron vapauttamiseksi. Edelleenohjauksen avoimeksi jättäminen kannettavassa tietokoneessa muuttaa diagnostiikan hallitsemattomaksi palveluksi.
Kirjaa hyppyisäntä, edelleenohjattu kohde, paikallinen portti ja kuka sopimuksen hyväksyi. Edelleenohjaus, joka on olemassa vain jonkun shell-historiassa, on yhden uudelleenkäynnistyksen päässä toistuvasta tutkinnasta, eikä seuraava henkilö tiedä, mikä kolmesta edellytyksestä on jo tarkistettu.