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:

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

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í.

Tengdir greinar