Hvaða Linux-getu þarf VPN-ferlið þitt?
Uppsetning tengisins, leiðir, aðgangur að tækjum og venjulegir sökkvar eru aðskilin réttindi. Nefndu aðgerðina sem mistókst áður en þú veitir CAP_NET_ADMIN.
VPN-púki þarf forréttindaaðgerðir í neti þótt venjuleg forrit opni útstreymissökkva án nokkurra réttinda. Í þessu bili hefjast flest getuvillur: einhver sér heimildarvillu, veitir allt settið og þjónustan virkar af ástæðum sem enginn getur útskýrt síðar. Leiðsögnin hér að neðan byrjar á aðgerðinni sem mistókst, varpar henni á eitt vald og athugar síðan samhengið sem ferlið keyrir í raun í. Að keyra sem ótakmarkaður root er gilt svar fyrir sumar uppsetningar, en það ætti að vera ákvörðun en ekki sjálfgefið gildi.
Byrjaðu á aðgerðinni sem mistókst
Lestu villuna áður en þú lest leiðarvísi. „Aðgerð ekki leyfð“ við breytingu á tengi, synjun á að opna tækjahnoð og bind-mistök á lágum porti eru þrjú mismunandi vandamál með þremur mismunandi heimildum. Ef ferlið byrjar og mistekst aðeins við fyrstu leiðarbreytinguna, segir það líka að búið sé að búa til tengið, sem þrengir svarið verulega.
Endurgerðu mistökin með þjónustuna stöðvaða og ræstu hana svo í forgrunni undir sama notanda ef útfærslan leyfir. Villa sem þú sérð er betri en logg lína sem þú verður að giska á, og hún gerir muninn á getuvandamáli og synjun frá SELinux eða AppArmor augljósan.
Varpaðu hverri aðgerð á eitt vald
Taflan er byrjunar-kort, ekki staðgengill fyrir skjöl útfærslunnar:
| 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 |
Tvær raðir í þeirri töflu eru þær sem fólk ruglar saman. Að opna /dev/net/tun er spurning um skráarheimildir; að biðja kjarnann að stilla það sem þú opnaðir er spurning um getu. Að veita CAP_NET_ADMIN laga ekki tækjahnoð sem þjónustunotandinn þinn getur ekki lesið, og að laga hnoðið gefur þér ekki leiðarvald. Athugaðu hvort tveggja áður en þú breytir hvorugu.
WireGuard í kjarnanum og tunnuforrit í notendarými hafa heldur ekki sömu kröfur. Leið kjarnaeiningarinnar stillir fyrirliggjandi tengi í gegnum netlink, en útfærsla í notendarými getur líka þurft tækið og fyrir sumar flutningar hráa sökkva.
Lestu samhengið: þjónusta, gámur eða skel
Geta í netnafnarými hýsilsins getur haft mun meiri áhrif en sama aðgerð inni í viljandi einangruðum stakka. Keyrsluumhverfi gáma byrjar venjulega með minnkuðu mörkunarsetti; að bæta NET_ADMIN við gám sem deilir neti hýsilsins er mun stærri heimild en að bæta því við gám með eigið netnafnarými og án hýsiltenginga.
Fyrir systemd-einingar skaltu lesa það sem raunverulega er beitt en ekki það sem einingarskráin virðist segja: systemctl show -p CapabilityBoundingSet -p AmbientCapabilities skýrir frá virkum gildum, sem drop-in sem þú gleymdir kann að hafa sett. Biddu um virka gildið, aldrei hið ætlaða. Ambient-geta skiptir máli því þjónusta sem er ekki root tapar getu í gegnum exec án þeirra.
Notaðu studda uppsetningu pakkans eða myndarinnar sem grunn. Bættu ekki við heimildum fyrir hráa sökkva eða forréttindastillingu af því að önnur leiðsögn listaði þær fyrir annað tól; sú röksemd flytur ekkert og kostar þig einangrunina sem þú borgaðir fyrir. Ef þú ert í vafa skaltu ekkert veita og lesa athugasemdir útfærslunnar fyrir nákvæmu aðgerðina sem þú þarft.
Fylgstu með því hvað gerist eftir að réttindi falla
Margir púkar byrja með réttindi, stilla tengið, fara svo yfir í notanda án réttinda og halda tunnunni. Frá þeim punkti getur ferlið ekki lengur bætt við leið, endurskrifað eldveggjarreglu eða opnað nýtt forréttindatæki, sem er í lagi þar til endurtenging þarf einmitt það. Síðari skráalestur og keyrsla króka getur mistekist af sömu ástæðu.
Prófaðu allan lífsferilinn en ekki fyrstu sekúnduna: ræsingu, endurnýjun eða endurtengingu og hreinsun við stöðvun. Fyrsta farsæla tengibúðin sannar ekki að sérhver síðari forréttindaaðgerð virki enn, og mistökin koma venjulega fram klukkustundum síðar í framleiðslu.
Útfærslur sem halda tunnunni opinni yfir notandaskipti para það venjulega við valkosti til að varðveita tunnuna og lyklana. Á systemd-hliðinni er samsvarandi spurning hvort getusett einingarinnar lifi notandaskiptin sem þú stilltir.
Skráðu heimildina og ástæðu hennar
Skrifaðu niður nákvæmu heimildina, aðgerðina sem hún gerir kleift og villuna sem hún lagfærði. Ein lína í uppsetningarpunktum — „CAP_NET_ADMIN í netnafnarými einingarinnar, nauðsynlegt fyrir leiðarbreytingar eftir endurtengingu“ — nægir til að koma í veg fyrir að næsti maður víkki heimildina aftur.
Lestu svo virka settið aftur eftir hverja uppfærslu. Framleiðendur bæta við eiginleikum, myndir breyta sjálfgildum, og geta sem var óþörf í fyrra getur orðið burðarber án þess að nokkur taki eftir því.