Usirundike uimarishaji wa systemd juu ya kushuka kwa user kwenye OpenVPN
Mapishi mawili ya upendeleo wa chini pamoja si mapishi makali zaidi. Chagua nani hufanya ubadilishaji wa utambulisho, kisha panga mamlaka katika mzunguko mzima wa maisha.
Mapishi mawili ya upendeleo wa chini yaliyobandikwa pamoja hayatoi usambazaji mkali zaidi. Mfano mmoja humruhusu daemon kuanza na upendeleo na kushuka hadi akaunti isiyo na upendeleo baada ya uanzishaji; mwingine humruhusu msimamizi wa huduma kuianzisha chini ya utambulisho uliozuiwa tangu agizo la kwanza. Kila moja hufanya kazi peke yake, na mchanganyiko mara nyingi hutoa huduma ambayo haiwezi kufanya kazi yoyote kati ya mbili kwa usafi. Sehemu iliyobaki inapitia uamuzi kwa mpangilio.
Mifano miwili, mmiliki mmoja wa ubadilishaji
Mfano wa kwanza ni wa daemon. Chaguo za OpenVPN za jumuiya user na group hubadilisha utambulisho baada ya handaki na funguo kuwekwa, na persist-key pamoja na persist-tun huweka rasilimali hizo zikitumika baadaye.
Mfano wa pili ni wa msimamizi wa huduma. Mpangilio wa systemd User= au Group= huamua utambulisho ambao mchakato huanza chini yake, na maagizo ya uwezo huamua kile inachoweza kushikilia. Kuchagua kati ya mifano ni suala la ufungashaji kabla ya kuwa suala la usalama, na mtunza kifurushi tayari amejibu. Kazi yako ni kupata jibu hilo badala ya kubuni chaguo la tatu.
Zote mbili ni halali. Hitilafu ni kuzichukulia kama tabaka za muundo mmoja, kwa sababu mfano wa pili unaweza kufanya ubadilishaji wa utambulisho wa kwanza kuwa operesheni ambayo mchakato hauruhusiwi tena kuifanya.
Amua utambulisho unabadilika wapi
Ikiwa kitengo tayari huanza kama akaunti maalum, kuongeza agizo la daemon la kuwa akaunti nyingine huhitaji mabadiliko ya setuid ambayo huduma iliyoimarishwa haikupaswa kufanya kamwe. Hitilafu inaonekana kama kosa la ruhusa wakati wa kuanza, sio kama ujumbe wazi wa sera. Hii inasomwa kama uwezo unaokosekana, jambo ambalo huwasukuma watu kuelekea seti pana ya mipaka badala ya swali la utambulisho.
Soma kile kifurushi kilichosakinishwa kinatoa kweli kabla ya kuhariri chochote, ikiwa ni pamoja na saraka yake ya drop-in. Baadhi ya vitengo huacha kwa makusudi kushuka kwa daemon yenyewe kwa sababu msimamizi tayari anashughulikia, na vingine hutegemea chaguo hizo kwa ubadilishaji baada ya uanzishaji. Kuondoa mojawapo ya haya bila kujua ni mfano upi uliorithi ni njia ambayo huduma inayofanya kazi huacha kuanza.
Andika mfano uliochaguliwa katika mstari mmoja: unamilikiwa na msimamizi au na daemon. Kila agizo la baadaye lazima liwe na ulinganifu na sentensi hiyo, na kitengo mchanganyiko kichukuliwe kama hitilafu na sio maelewano.
Uwezo ni mipaka, sio zawadi
Seti ya mipaka ya uwezo husema mchakato unaweza kushikilia kitu gani kwa kiwango cha juu. Ni dari, na kuorodhesha uwezo hapo hakutoi chochote yenyewe, ndiyo sababu kitengo kilicho na seti ya mipaka ya ukarimu kinaweza bado kushindwa kuunda handaki.
Kile kinachoweka uwezo katika seti ya mazingira ya huduma ni AmbientCapabilities=. marejeleo ya utekelezaji ya systemd huandika maagizo mawili kwa tofauti, na tofauti hiyo inaeleza sehemu kubwa ya ushauri wa uwezo unaochanganya mtandaoni.
Ongeza uwezo tu baada ya operesheni inayoshindwa kuutambua. Seti pana ya mipaka huficha sababu halisi na huacha huduma ikiwa na upendeleo zaidi kuliko ilivyokusudiwa na muundo. Pia hufanya kitengo kigumu kukagua, kwa sababu dari haielezi kazi tena. Ondoa uwezo wa ziada mara hitilafu halisi inaporekebishwa.
Panga mamlaka katika mzunguko wa maisha
Orodhesha kile mchakato unapaswa kufanya katika kila hatua: kuanza, hali thabiti, uthibitishaji upya na uondoaji. Uundaji wa kiolesura, mabadiliko ya njia, kusoma ufunguo uliolindwa na kuita msaidizi hayafanyiki yote kwa wakati mmoja au chini ya mahitaji sawa. Panga orodha kwa hatua kabla ya kuipanga kwa uwezo.
Chaguo za uendelevu huhifadhi rasilimali katika majadiliano upya, na haitoi ruhusa ambazo hazijawahi kushikiliwa. Ufunguo ambao mchakato hauwezi kuusoma wakati wa kuanza utabaki usisomeke baadaye pia, chochote bendera za uendelevu zinavyosema. Bendera huhifadhi kile kilichokuwa kinafanya kazi.
Tumia akaunti maalum badala ya ile inayoshirikiwa. Watengenezaji wa OpenVPN wanaonya dhidi ya tabia ya kutumia nobody kama mfano wa jumla, kwa sababu huduma nyingine kwenye mwenyeji zinaweza kuwa tayari zinaendesha kwa akaunti hiyo na utengano unaodhani unayo haupo.
Vipengele vinavyobadilisha mzigo wa ndani, kama vile upakuaji wa chaneli ya data au ujenzi unaounganisha kwa njia tofauti, vinaweza kuhamisha ni operesheni gani zinahitajika. Pitia ramani wakati kifurushi kinabadilika, sio tu wakati kitu kinavunjika.
Andika mpango na uhifadhi ufikiaji wa urejeshaji
Rekodi ya usambazaji inapaswa kutaja msimamizi, utambulisho wa kuanza, utambulisho thabiti unaokusudiwa na kila ruhusa pamoja na operesheni inayohitaji. Rekodi hiyo ndiyo hufanya mabadiliko yanayofuata yakaguliwe badala ya kufanyiwa majaribio.
Weka ufikiaji wa konsoli upatikane unapohariri, kwa sababu kitengo kinachoshindwa wakati wa kuanza ni kigumu kurekebisha kwa mbali. Jaribu kuwasha upya na kuwasha upya kamili kabla ya kutangaza mabadiliko kuwa kamili. Kitengo kinachostahimili kuwasha upya kinaweza bado kushindwa kabla mtandao haujainuka.
Mafanikio ni mzunguko wa maisha wa mamlaka ya chini unaoeleweka, sio mchakato unaojitokeza kuendesha chini ya jina ambalo sio root.