Daemon VPN jeħtieġ operazzjonijiet tan-netwerk b'privileġġ anke jekk l-applikazzjonijiet ordinarji jiftħu sockets li joħorġu mingħajr ebda privileġġ. F'dan il-vojt jibdew ħafna mill-iżbalji tal-kapaċitajiet: xi ħadd jara żball ta' permess, jagħti s-sett kollu, u s-servizz jaħdem għal raġunijiet li ħadd ma jista' jispjega wara. Il-mixja hawn taħt tibda mill-operazzjoni li falliet, torbotha ma' awtorità waħda, u mbagħad tivverifika l-kuntest li fih il-proċess verament jaħdem. It-tħaddim bħala root bla restrizzjoni huwa tweġiba valida għal xi użi, iżda għandu jkun deċiżjoni u mhux valur awtomatiku.

Ibda mill-operazzjoni li falliet

Aqra l-iżball qabel ma taqra tutorjal. «Operazzjoni mhux permessa» fuq bidla fl-interface, rifjut li tiftaħ nod ta' apparat u falliment ta' bind fuq port baxx huma tliet problemi differenti bi tliet konċessjonijiet differenti. Jekk il-proċess jibda u jonqos biss fl-ewwel bidla tar-rotta, dan ifisser ukoll li l-ħolqien tal-interface diġà rnexxa, u dan idawwar it-tweġiba ħafna.

Irrepeti l-falliment bis-servizz mwaqqaf, imbagħad ibda l-proċess quddiem taħt l-istess utent jekk l-implimentazzjoni tippermetti. Żball li tista' tara huwa aħjar minn linja tal-log li trid taħsebha, u jagħmel ċara d-differenza bejn problema tal-kapaċitajiet u rifjut ta' SELinux jew AppArmor.

Orbot kull operazzjoni ma' awtorità waħda

It-tabella hija mappa tal-bidu, mhux sostitut għad-dokumentazzjoni tal-implimentazzjoni:

OperationUsual authorityWatch for
Create or configure tun/tapCAP_NET_ADMIN in the relevant namespaceCreating the device and opening it are separate steps
Add routes, rules, firewall entriesCAP_NET_ADMINSame capability, different namespace than you think
Open /dev/net/tunDevice permissions, not a capabilityGroup membership or a udev rule may be enough
Raw socketsCAP_NET_RAWNeeded by some user-space tunnel implementations
Bind a port below 1024CAP_NET_BIND_SERVICEIrrelevant for most modern tunnel ports

Iż-żewġ ringieli f'din it-tabella huma dawk li n-nies iħawdu. Jiftaħ /dev/net/tun hija kwistjoni ta' permessi tal-fajl; li titlob lill-qalba tikkonfigura dak li ftaħt hija kwistjoni ta' kapaċitajiet. L-għoti ta' CAP_NET_ADMIN ma jsewwix nod ta' apparat li l-utent tas-servizz tiegħek ma jistax jaqra, u t-tiswija tan-nod ma tagħtik awtorità tar-rotot. Iċċekkja t-tnejn qabel ma tbiddel xi waħda minnhom.

WireGuard fil-qalba u l-programmi tat-tunnel fl-ispazju tal-utent lanqas ma għandhom l-istess rekwiżiti. It-triq tal-modulu tal-qalba tikkonfigura interface eżistenti permezz ta' netlink, filwaqt li implimentazzjoni fl-ispazju tal-utent tista' wkoll teħtieġ l-apparat u, għal xi trasporti, sockets mhux maħduma.

Aqra l-kuntest: servizz, kontenitur jew qoxra

Kapaċità fl-ispazju tal-ismijiet tan-netwerk tal-host tista' taffettwa ħafna aktar mill-istess operazzjoni fi stakk iżolat apposta. L-ambjent tal-eżekuzzjoni tal-kontenituri normalment jibda b'sett ta' limiti mnaqqas; iż-żieda ta' NET_ADMIN ma' kontenitur li jaqsam in-netwerk tal-host hija konċessjoni ħafna akbar milli żżidu ma' wieħed b'ispazju tal-ismijiet tan-netwerk tiegħu u mingħajr mounts tal-host.

Għall-unitajiet systemd aqra dak li verament jiġi applikat u mhux dak li l-fajl tal-unità jidher li jgħid: systemctl show -p CapabilityBoundingSet -p AmbientCapabilities jirrapporta l-valuri effettivi, li jistgħu jkunu stabbiliti minn drop-in li insejt. Itlob il-valur effettiv, qatt dak maħsub. Il-kapaċitajiet ambient huma importanti għax servizz li mhux root jitlef il-kapaċitajiet minn exec mingħajrhom.

Ħu l-issettjar appoġġjat tal-pakkett jew tal-immaġni bħala bażi. Tżidx permessi ta' sockets mhux maħduma jew mod privileġġjat għax tutorjal ieħor elenkahom għal għodda oħra; dak ir-raġunament ma jittrasferixxi xejn u jiswik l-iżolament li ħallast għalih. F'każ ta' dubju, tagħti xejn u aqra n-noti tal-implimentazzjoni għall-operazzjoni eżatta li teħtieġ.

Ara x'jiġri wara li l-privileġġi jinżlu

Ħafna daemons jibdew b'privileġġi, jikkonfiguraw l-interface, imbagħad jinżlu għal utent mingħajr privileġġi u jżommu t-tunnel. Minn dak il-punt il-proċess ma jistax iżid rotta, jerġa' jikteb regola tal-firewall jew jiftaħ apparat privileġġjat ġdid, li huwa tajjeb sakemm konnessjoni mill-ġdid teħtieġ eżattament dak. Qari ta' fajls u eżekuzzjoni ta' hooks aktar tard jistgħu jonqsu għall-istess raġuni.

Ittestja ċ-ċiklu tal-ħajja kollu u mhux l-ewwel sekonda: tħaddim, tiġdid jew konnessjoni mill-ġdid, u tindif waqt il-waqfa. L-ewwel ħolqien b'suċċess tal-interface ma jurix li kull operazzjoni privileġġjata aktar tard għadha taħdem, u l-falliment normalment jidher sigħat wara fil-produzzjoni.

L-implimentazzjonijiet li jżommu t-tunnel miftuħ waqt bidla tal-utent normalment jgħaqqdu dan ma' għażliet biex iżommu t-tunnel u ċ-ċwievet. Fuq in-naħa ta' systemd, il-mistoqsija ekwivalenti hija jekk is-sett tal-kapaċitajiet tal-unità jissuperax il-bidla tal-utent li kkonfigurajt.

Irreġistra l-għoti u r-raġuni tiegħu

Ikteb l-għoti eżatt, l-operazzjoni li jippermetti u l-iżball li sewwa. Linja waħda fin-noti tal-użu — «CAP_NET_ADMIN fl-ispazju tal-ismijiet tan-netwerk tal-unità, meħtieġ għal bidliet tar-rotot wara konnessjoni mill-ġdid» — biżżejjed biex iżżomm lill-persuna li jmiss milli terġa' twessa' l-għoti.

Imbagħad erġa' aqra s-sett effettiv wara kull aġġornament. Il-fornituri jżidu karatteristiċi, l-immaġnijiet ibiddlu l-valuri awtomatiċi, u kapaċità li s-sena li għaddiet ma kinitx meħtieġa tista' ssir portanti mingħajr ma ħadd jinduna.

Artikli relatati