Kako lokalno prosljeđivanje SSH prenosi TCP sesiju OpenVPN-a
Jedan lokalni port, dva autentificirana odnosa, tri transporta. Šta SSH prosljeđivanje prenosi i gdje petlja i provjere certifikata i dalje vrijede.
Ovdje se slažu tri transportna sloja i svaki ima svoje uokvirenje. VPN korisni teret putuje unutar TLS sesije, ta TLS sesija putuje unutar TCP veze prema loopback portu, a bajtovi te veze putuju unutar SSH-a prema relay hostu, koji otvara pravu TCP vezu prema VPN slušaocu. Ništa u tom rasporedu ne mijenja ono što OpenVPN autentificira, i ništa u njemu ne čini UDP slušaoca dostupnim preko TCP-a. Ostatak čitajte kao opis puta bajtova, a ne kao recept za zaobilaženje mrežne kontrole.
Šta lokalno prosljeđivanje zapravo prenosi
SSH klijent sluša na lokalnom portu. Kada se lokalni proces poveže, klijent pakuje bajtove u svoj šifrirani kanal, a serverska strana otvara novu TCP vezu prema odredištu navedenom u zahtjevu za prosljeđivanje.
To odredište razrješava relay, a ne vaša mašina, zato ime koje postoji samo unutar udaljene mreže i dalje radi. To također znači da relay mora moći doći do VPN slušaoca i imati povratnu rutu do njega. Ime koje se razrješava na vašem laptopu ne govori ništa o tome šta relay vidi.
Pokretanje SSH sesije dokazuje samo da je relay dostupan i autentificiran. Ono ne govori je li sljedeći slušalac aktivan, prihvata li vatrozid između relaya i slušaoca vezu ili hoće li VPN prihvatiti vaš profil.
Usmjerite klijent na lokalni slušalac
Objavljeni primjer: relay može doći do TCP slušaoca na gw.internal.example:443, a visoki lokalni port izlaže taj put samo ovoj mašini.
ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]OpenSSH priručnik opisuje lokalno prosljeđivanje kao lokalno prihvatanje TCP veza i otvaranje sljedeće veze sa udaljene strane. Vežite slušalac na loopback, a ne na svaki interfejs, jer je prosljeđivanje dostupno iz mreže otvoreni relay s vašim imenom. Vezanje na sve interfejse također izlaže port svakom drugom lokalnom računu na dijeljenoj mašini.
Zatim postavite VPN klijent u TCP režim i usmjerite ga na 127.0.0.1:24011. Ako profil koristi UDP, ovaj dizajn ne može pomoći: prosljeđivanje nosi tok bajtova i kroz njega nema puta za datagrame.
Držite dvije autentifikacije odvojenim
SSH autentificira relay host. OpenVPN i dalje autentificira VPN partnera, a loopback odredište ne mijenja taj zahtjev. Isključivanje provjera certifikata zato što socket sada pokazuje na localhost najgora je prečica u ovom dizajnu. Ona pretvara transportni raspored u raspored povjerenja, a na drugi niko nije dao pristanak.
Očuvajte sidro povjerenja profila, provjeru serverske uloge i provjeru imena netaknutima. Ako vaš klijent upoređuje ime servera s adresom koju je pozvao, loopbacku može trebati izričito podešavanje imena umjesto isključene provjere, a dokumentacija profila je mjesto gdje se potvrđuje koje se polje upoređuje.
Tretirajte relay kao drugu stranu u priči o povjerenju: njegov administrator vidi metapodatke veza i može preusmjeriti prosljeđivanje ako se konfiguracija promijeni. Raspored traži odobrenje i relaya i vlasnika VPN usluge, ne samo onoga kome treba danas.
Ne gradite petlju ispod tunela
Kada VPN instalira rute, SSH veza koja ga nosi i dalje treba put do relaya koji ne ide kroz tunel. Ako zadana ruta pređe na VPN, a relay je dostupan samo kroz taj isti tunel, transport se ruši i VPN ide s njim. Kvar izgleda kao prekinut tunel, a ne kao greška rutiranja, zato se pogrešno dijagnosticira.
Uobičajeno rješenje je host ruta do adrese relaya prikvačena za fizički interfejs prije podizanja tunela, plus provjera da ruta preživi ponovno povezivanje. Provjerite je pretragom rute za adresu relaya, umjesto da pretpostavite da je redoslijed bio ispravan.
Očekujte i da će ovaj stog biti sporiji i krhkiji od direktne veze, jer sada postoje dva uređena transporta i još jedna krajnja točka za održavanje. To je način da se pređe mrežna granica, a ne tehnika performansi.
Zatvorite slušalac kada završite
Zaustavite SSH sesiju kada tunel više nije potreban i potvrdite da je lokalni port oslobođen. Zaboravljeno prosljeđivanje drži autentificiran put otvorenim na mašini koja može biti dijeljena.
Pregledajte i dopuštena odredišta prosljeđivanja na relayu, jer dopuštajuća konfiguracija pretvara svaki kompromitirani račun u opću polugu. Zapišite port, relay i odredište zajedno, da sljedeća osoba može znati čemu je prosljeđivanje služilo i je li još odobreno.