Å dela ein arbeidsstasjon reiser eit spørsmål som ein laptop for éin brukar aldri må svare på: når éin person autentiserer tunnelen, kven kan elles bruke han? Innlogginga identifiserer eit subjekt, og ruta ho installerer skildrar eit omfang, og dei to tinga er ikkje same objekt. Mellom dei ligg operativsystemet, konfigurasjonen til klienten og det den private tenesta krev av seg sjølv. Å samanlikne handhevingspunkta er den einaste måten å svare på spørsmålet utan å gisse.

Éi innlogging, fleire omfang

Autentisering svarar på kven som vart sleppt inn. Ruta svarar på kva pakkar som kan forlate gjennom tunnelen. Autorisasjon svarar på kva teneste som godtek den resulterande sambindinga, og ingen av dei tre føreset den neste.

Ein tunnel for heile verten er standardvalet og gjer gapet tydeleg. Ruta ligg i tabellen til kjernen, så kvar prosess som brukar den tabellen kan nå det private nettet, også ein som er starta av ein brukar som aldri har sett VPN-dialogen. Det er ikkje ein feil i tunnelen; det er kva ei systemomfattande rute tyder. Den private tenesta kan framleis avvise sambindinga, og difor treng rekkjevidd og løyve kvar sitt svar.

Å skrive ned dei fire spørsmåla før testing hindrar gjennomgangen i å kollapse til eitt av dei.

Kvar grensa faktisk ligg

Fire ordningar dekkjer dei fleste maskiner: ein tunnel for heile verten, ei sambinding per brukar, ei løyvesliste per app og eit separat nettverksnamnerom eller ein virtuell maskin.

Kvar av dei plasserer handhevingspunktet ein annan stad, og skilnadene tyder meir enn etikettene. Ei sambinding per brukar vert handheva av løyva til profilen, ikkje av innloggingsskjermen på skrivebordet. Ei løyvesliste per app vert handheva inne i klienten, som avgjer kva han vil bera. Eit namnerom eller ein VM handhevar ved grensa til grensesnittet, så ein prosess inni kan ikkje sjå ruta til verten i det heile. Talet på innloggingsskjermar på maskinen seier ingenting om nokon av dei.

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

Å lese tabellen rad for rad viser at det eigentlege spørsmålet ikkje er om isolasjon finst, men kvar han er implementert.

Samanlikn fire handhevingspunkt

På Linux er rutetabellen det fyrste som må undersøkjast, fordi ein tunnel for heile verten viser seg der og eit namnerom ikkje. Å køyre oppslaget som den andre brukaren er trinnet folk hoppar over; svaret er eit anna enn det dei fekk som seg sjølv, og det forklarer rapporten.

Dei to neste kontrollane ser på politikk framfor ruting. Ein brannmurregel som svarer til ein UID gjeld for lokalt generert trafikk, så han kan skilje to brukarar på ein vert sjølv når begge deler ruta. Ein sambindingsprofil med ei eksplisitt løyvesliste vert handheva av nettverkshandsamaren ved aktivering. Ingen av kontrollane krev at tunnelen vert endra, og difor er dei verd å gjere før noko vert redesigna.

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

Viser det andre oppslaget tunnelruta, er grensa ikkje der designet tok for gjeve.

Reglar for samtidige økter er ein eigen kontroll

Gater avgrensar ofte kor mange økter éin konto kan halde, og den grensa har ingenting med lokale brukarar å gjere. Ho avgrensar kontoen, så ein andre person som loggar på med dei same opplysningane kan avslutte tunnelen til den fyrste.

Les feilen før du tek for gjeve eit lokalt isolasjonsproblem. Ei øktgrense gjev ei fråkopling ved gata, medan eit omfangsproblem gjev ein fungerande tunnel som berre ikkje ber trafikken til den andre brukaren. Dei to symptoma fører til heilt ulike rettingar. Ta vare på den nøyaktige meldinga frå klienten, for ho nemner vanlegvis regelen. Be profileigaren om den godkjende arbeidsflyten i staden for å omgå grensa.

Ein virtuell maskin fritek ingen frå den regelen og legg til sitt eige nettverks- og innloggingsdesign.

Test konteksten du bryr deg om

Test den tiltenkte brukaren og applikasjonen, og test deretter ein kontekst som burde vorte avvist. Ein gjennomgang som berre beviser at det opphavlege passordet verkar, har testa autentisering og ingenting anna.

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

Noter handhevingspunktet ved sida av kvar resultat: rutetabellen, ein UID-regel, eit profilløyve eller øktpolitikken til gata. Den registreringa gjer den neste endringa gjennomgåeleg. Ho hindrar òg at det same spørsmålet vert opna på nytt kvar gong nokon legg merke til ein andre innloggingsskjerm. Rekkjevidd er ikkje autorisasjon, og ingen av dei to er isolasjon.

Relaterte artiklar