Liema kapaċitajiet Linux jeħtieġ il-proċess VPN tiegħek?
L-issettjar tal-interface, ir-rotot, l-aċċess għall-apparati u s-sockets ordinarji huma privileġġi separati. Semmi l-operazzjoni li falliet qabel ma tagħti CAP_NET_ADMIN.
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:
| Operation | Usual authority | Watch for |
|---|---|---|
| Create or configure tun/tap | CAP_NET_ADMIN in the relevant namespace | Creating the device and opening it are separate steps |
| Add routes, rules, firewall entries | CAP_NET_ADMIN | Same capability, different namespace than you think |
| Open /dev/net/tun | Device permissions, not a capability | Group membership or a udev rule may be enough |
| Raw sockets | CAP_NET_RAW | Needed by some user-space tunnel implementations |
| Bind a port below 1024 | CAP_NET_BIND_SERVICE | Irrelevant 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.