Brskalnik, ki uporablja vzpostavljen Linux VPN, ne odpre /dev/net/tun. Odpre vtičnico, jedro pa odloči, skozi kateri vmesnik gredo paketi te vtičnice. Proces, ki je ustvaril tunel, opravlja drugačno delo kot proces, katerega promet prenaša. Ločevanje teh dveh vlog odgovori na večino vprašanj o dovoljenjih, preden so zastavljena.

Sledite enemu paketu od vtičnice do tunela

Običajna aplikacija pokliče connect ali send, jedro pa poišče pot do cilja. Če izbrana pot kaže na vmesnik tunela, se paket postavi v čakalno vrsto naprave, ki jo bere demon VPN. Demon ga šifrira in pošlje ven skozi fizični vmesnik. Vsaka puščica v tem opisu je mesto, kjer je mogoče odgovoriti na vprašanje o dovoljenju.

Nič na tej poti ne zahteva, da aplikacija pozna napravo. Demon drži opis datoteke in izvaja vmesniške operacije, medtem ko aplikacija vidi le običajen omrežni API.

Narišite obe polovici enkrat in vprašanja o dovoljenjih bodo lažje umeščena. Zgornja polovica je svet aplikacij, spodnja pa pripada demonu.

Odločite, kdo potrebuje napravo in kdo ne

Ustvarjanje vmesnika TUN ali priključitev nanj zahteva dostop do naprave in še zmožnost, da ga konfigurirate, zato podprta storitev VPN začne z avtoriteto za upravljanje omrežja ali uporabi privilegiranega pomočnika. Ta zahteva pripada demonu. Ne pove ničesar o brskalniku, odjemalcu zbirke podatkov ali orodju za prenos datotek. Storitev, ki potrebuje zmožnost, jo potrebuje za svoj lastni korak nastavitve, ne za svoje odjemalce.

Ko sta pot in politika na mestu, običajen proces uporabi nastalo pot prek svojih običajnih klicev vtičnice. Ne potrebuje vozlišča naprave in ne potrebuje root.

Spreminjanje dovoljenj naprave ni način, da bi aplikaciji dali dostop do cilja. Samo premakne mejo naprave drugam.

Preverite, v katerem imenskem prostoru aplikacija dejansko teče

Vsebnik ali drugi omrežni imenski prostor da svojim procesom ločen nabor vmesnikov in tabelo usmerjanja. Tunel na gostitelju se tam ne pojavi samodejno in nobena sprememba dovoljenj naprave tega ne spremeni. Aplikacija bo preprosto usmerjala skozi to, kar ponuja ta imenski prostor. Zato slika vsebnika ne more po nesreči podedovati gostiteljskega tunela.

Preverite z ip netns list in ip -n NAME route ali s pregledom povezave imenskega prostora procesa. Odgovor je običajno viden z enim ukazom.

Dvema uporabnikoma na istem gostitelju je mogoče s politiko dodeliti tudi različne poti. To je omrežna odločitev, ne dokaz o lastništvu naprave.

Ločite zmožnosti od omrežne politike

Nekatera orodja potrebujejo več kot vtičnico. Zajemanje paketov potrebuje surovo vtičnico, spreminjanje poti pa administrativno avtoriteto. To so ločene operacije z ločenimi dovoljenji in podelitve ene ne gre brati kot splošne zahteve za uporabo VPN.

Program, ki izvaja lasten tunel, je tretji primer. Resnično odpre TUN, ker prevzame vlogo demona, zato potrebuje njegove privilegije.

Poimenujte operacijo, preden poimenujete privilegij. Običajno ju je lažje ločiti, kot se zdi.

Preverite ločitev z dvema računoma

Povežite tunel kot storitev, nato zaženite aplikacijo kot običajnega uporabnika in potrdite, da doseže zasebni vir. Preverite ip route get za cilj iz lupine tega uporabnika, da vidite, kateri vmesnik je bil izbran. Če je pot pravilna in povezava še vedno ne uspe, je težava politika, ne privilegij.

Nastali dizajn je najmanjši privilegij z izrecno mejo: ena komponenta ima v lasti nastavitev in vire tunela, delovne obremenitve ohranijo običajne račune, omrežna politika pa odloča, kaj lahko preide. Zaganjanje vsega kot root zruši te vloge, ne da bi karkoli pojasnilo.

Sorodni članki