Dalijimasis darbo stotimi kelia klausimą, į kurį vieno naudotojo nešiojamasis kompiuteris niekada neturi atsakyti: kai vienas asmuo autentifikuoja tunelį, kas dar gali juo naudotis? Prisijungimas identifikuoja subjektą, o įdiegiamas maršrutas aprašo apimtį, ir šie du dalykai nėra tas pats objektas. Tarp jų yra operacinė sistema, kliento konfigūracija ir tai, ko reikalauja pati privati tarnyba. Įgyvendinimo taškų palyginimas yra vienintelis būdas atsakyti į klausimą nespėliojant.

Vienas prisijungimas, kelios apimtys

Autentifikavimas atsako, kas buvo įleistas. Maršrutas atsako, kurie paketai gali išeiti per tunelį. Autorizavimas atsako, kuri tarnyba priims atsiradusį ryšį, ir nė vienas iš trijų nereiškia kito.

Viso hosto tunelis yra įprastas numatytasis variantas, ir jis daro spragą akivaizdžią. Maršrutas yra branduolio lentelėje, todėl bet kuris procesas, naudojantis tą lentelę, gali pasiekti privatų tinklą, įskaitant procesą, kurį paleido naudotojas, niekada nematęs VPN dialogo. Tai nėra tunelio defektas; tai yra visos sistemos maršruto prasmė. Privati tarnyba vis tiek gali atmesti ryšį, todėl pasiekiamumui ir leidimui reikia atskirų atsakymų.

Keturių klausimų užrašymas prieš testavimą neleidžia peržiūrai susiaurėti iki vieno iš jų.

Kur iš tikrųjų yra riba

Keturi išdėstymai apima daugumą kompiuterių: viso hosto tunelis, konkretaus naudotojo ryšys, leidžiamų programų sąrašas ir atskira tinklo vardų erdvė arba virtualioji mašina.

Kiekvienas įgyvendinimo tašką padeda kitur, ir skirtumai svarbesni už pavadinimus. Konkretaus naudotojo ryšį įgyvendina profilio leidimai, o ne darbalaukio prisijungimo ekranas. Leidžiamų programų sąrašą įgyvendina klientas, kuris sprendžia, ką perduos. Vardų erdvė arba VM įgyvendina sąsajos riboje, todėl viduje esantis procesas visiškai nemato hosto maršruto. Prisijungimo ekranų skaičius kompiuteryje nieko nesako apie nė vieną iš jų.

ArrangementEnforced byWho can use the path
Host-wide tunnelThe routing tableAny local process using that table
Per-user connectionProfile permission listOnly the listed accounts
Per-app allowlistThe VPN client itselfOnly the selected applications
Namespace or VMThe interface boundaryOnly processes inside it

Lentelės skaitymas eilutė po eilutės rodo, kad tikrasis klausimas yra ne ar izoliacija egzistuoja, o kur ji įgyvendinta.

Palyginkite keturis įgyvendinimo taškus

Linux sistemoje maršrutų lentelė yra pirmas dalykas, kurį reikia patikrinti, nes viso hosto tunelis joje pasirodo, o vardų erdvė ne. Paieškos vykdymas kaip antrasis naudotojas yra žingsnis, kurį žmonės praleidžia; atsakymas skiriasi nuo to, kurį jie gavo būdami savimi, ir tai paaiškina ataskaitą.

Kiti du patikrinimai žiūri į politiką, o ne į maršrutizavimą. Ugniasienės taisyklė, atitinkanti UID, taikoma vietoje sugeneruotam srautui, todėl gali atskirti du naudotojus viename hoste net tada, kai abu dalijasi maršrutu. Ryšio profilis su aiškiu leidimų sąrašu įgyvendinamas tinklo tvarkyklės aktyvavimo metu. Nė vienas patikrinimas nereikalauja keisti tunelio, todėl verta juos atlikti prieš ką nors perprojektuojant.

ip route get 10.40.2.10
sudo -u bob ip route get 10.40.2.10
nmcli connection show vpn-work | grep -i permission
sudo nft list ruleset | grep -n skuid

Jei antroji paieška rodo tunelio maršrutą, riba yra ne ten, kur projektas darė prielaidą.

Lygiagrečių sesijų taisyklės yra atskira kontrolė

Tinklų vartai dažnai riboja, kiek sesijų gali turėti viena paskyra, ir ši riba neturi nieko bendra su vietiniais naudotojais. Ji riboja paskyrą, todėl antras asmuo, prisijungęs tais pačiais duomenimis, gali nutraukti pirmojo tunelį.

Perskaitykite gedimą prieš manydami, kad tai vietinė izoliacijos problema. Sesijų riba sukelia atsijungimą vartuose, o apimties problema sukuria veikiantį tunelį, kuris tiesiog neperduoda kito naudotojo srauto. Šie du simptomai veda prie visiškai skirtingų taisymų. Išsaugokite tikslų kliento pranešimą, nes jame paprastai įvardyta taisyklė. Paprašykite profilio savininko patvirtintos darbo eigos, o ne apeikite ribą.

Virtualioji mašina nieko neatleidžia nuo šios taisyklės ir prideda savo tinklo bei prisijungimo duomenų dizainą.

Testuokite tai, kas jums svarbu

Išbandykite numatytą naudotoją ir programą, tada išbandykite kontekstą, kuris turėtų būti atmestas. Peržiūra, kuri tik įrodo, kad pirminis slaptažodis veikia, išbandė autentifikavimą ir nieko daugiau.

sudo -u bob curl -sS -m 5 https://intranet.internal/health
wg show
ss -tnp | grep -E ':443|:51820'

Užrašykite įgyvendinimo tašką prie kiekvieno rezultato: maršrutų lentelę, UID taisyklę, profilio leidimą arba vartų sesijų politiką. Šis įrašas leidžia peržiūrėti kitą pakeitimą. Jis taip pat neleidžia tam pačiam klausimui vėl atsiverti kiekvieną kartą, kai kas nors pastebi antrą prisijungimo ekraną. Pasiekiamumas nėra autorizavimas, ir nė vienas iš jų nėra izoliacija.

Susiję straipsniai