Longa functempo pruvas nur, ke la starto sukcesis kun la privilegioj, kiujn la demono havis en tiu momento. La fiaskoj gravaj ĉi tie venas poste: nova kliento konektiĝas, revoka listo anstataŭiĝas, helposkripto devas skribi dosieron. Ĉiu el ili estas nova malfermo farita de la neprivilegiita konto, kun propra permesa demando kaj propra erarmesaĝo. Tri decidoj apartigas agordon, kiu daŭre funkcias, de tiu, kiu fiaskos ĉe la sekva okazaĵo.

Apartigu tion, kio estis ŝargita frue, de tio, kio malfermiĝas poste

Priskribilo estas tenilo sur malfermita dosierpriskribo, kaj la alirmodo estis fiksita kiam tiu priskribo kreiĝis. Ŝanĝi la procezan uzanton poste ne fermas la tenilon, tial ŝlosildosiero legita kiel root daŭre funkcias post la malaltigo. Ankaŭ la modo ne ŝanĝiĝas: tenilo malfermita por legado ne fariĝas skribebla, kaj skribebla tenilo ne estas revokita nur ĉar la konto perdis siajn rajtojn al la vojo. Tiuj du faktoj klarigas la plejparton de la surpriza konduto en tiuj ĉi raportoj.

La alia duono estas memoro. Demonon povas analizi atestilon, konservi la analizitan materialon kaj fermi la dosieron; en uzo restas datumoj, ne malfermita dosiero. Do daŭra trafiko pruvas nek ke priskribilo estas malfermita, nek ke la vojnomo estas atingebla. Ĝi pruvas nur, ke la materialo bezonata por la nuna sesio estis akirita pli frue.

Posta malfermo estas alia transakcio. Ĝi funkcias sub la nunaj legitimoj, la nuna sekureca kunteksto kaj la nuna muntada vido, do vojo legebla ĉe starto povas esti rifuzita ĉe la sekva konekto. Rotacio aldonas kaptilon: skribi novan dosieron sur la sama vojnomo lasas ekzistantan priskribilon ligita al la malnova objekto, do reŝargo povas ŝajni sukcesa dum la demono ankoraŭ uzas la antaŭan enhavon. Komparu la inodon, kiun la procezo tenas, kun tiu sur la disko antaŭ ol kredi, ke rotacio efektiviĝis.

Nomu la tri rultempajn legojn kaj kiam ĉiu okazas

Tri rimedoj kutime malfermiĝas longe post la inicialigo, kaj ili fiaskas en malsamaj momentoj. Klient-specifa agorda dosiero legeblas kiam tiu kliento konektiĝas, do ĝi povas rompiĝi por unu uzanto dum ĉiuj aliaj daŭrigas. Revokaj datumoj konsultiĝas dum la partnera aŭtentikigo kaj denove kiam la dosiero anstataŭiĝas. Portempa dosierujo tuŝiĝas nur kiam skripto aŭ kromaĵo skribas ion.

Neniu el la tri apartenas al la starta vojo, tial servilo sana dum semajnoj povas fiaski ĉe la sekva konekto. La kategorio ankaŭ nomas la posedanton de la riparo: la unuaj du estas legrajtoj sur agordo sub la demona konto, kaj la tria estas skribebla loko kun mallarĝa celo.

Path reopened laterWhat triggers the openFirst sign when it fails
Client configuration fileA connection for that client identityOne client rejected while others connect
Revocation dataPeer authentication, including after replacementRevoked and valid peers both refused
Script or plugin temporary directoryA helper needs to create a fileThe helper exits with a path error

persist-key respondas al pli mallarĝa demando ol plej multaj supozas. Ĝi tenas la ŝlosildosieron malfermita tra la dokumentitaj SIGUSR1 kaj ping-restart restarigoj, kaj ĝi faras nenion por CCD-dosieroj, revokaj datumoj, helpaj plenumeblaj dosieroj aŭ plena proceza restarto. Tiuj ankoraŭ sekvas siajn proprajn malfermajn vojojn, sub kiu ajn konto tiam funkcias.

Konfirmu la konton kaj la vidon, kiun ĝi efektive havas

Demandu la funkciantan demonon, kiun konton ĝi uzas, anstataŭ fidi la unit-dosieron, poste komparu la respondon kun tio, kion la unuo agordas. Malkongruo estas la unua afero solvenda, ĉar ĉiu posta permesa kontrolo funkcias kiel tiu, kiu la procezo vere estas. Poste trairu la vojon komponanto post komponanto; trairado estas taksata ĉe ĉiu nivelo, do legebla dosiero en netrairebla dosierujo restas nelegebla. La fina dosiera modo estas la lasta demando, ne la unua.

Nomspacoj kaj servaj sablujoj aldonas limojn, kiujn posedado kaj modaj bitoj ne priskribas. Vojo videbla en via ŝelo povas manki aŭ esti nurlegebla ene de chroot, muntada nomspaco aŭ unuo, kiu kaŝas hejmajn dosierujojn. Sekurecaj moduloj aldonas plian tavolon, do dosiero, kiu aspektas legebla, povas tamen esti rifuzita kiam ĝi malfermiĝas.

ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/alice

Sukcesa legado en la ŝelo de la administranto testas neniun el tiuj kunigitaj kondiĉoj. Rulu la kontrolon kiel la demona konto, kun la sama nomspaco kaj sablujo, aŭ akceptu, ke la rezulto priskribas vian ŝelon, ne la servilon. La tria komando estas la malmultekosta versio de tiu testo: ĝi presas la modon de ĉiu komponanto kaj fiaskas ĉe la unua, kiun la demona konto ne povas trairi.

Donu al la rultempa skribado propran dosierujon

Legado estas nur duono de la inventaro. Helposkripto eble devas krei statusan dosieron, kromaĵo eble devas skribi staton apud sia agordo, kaj tiuj skriboj ne estas kovritaj per tio, ke la agorda arbo fariĝas skribebla. Donu al la konkreta dosierujo la skribpermeson, kiun ĝia funkcio bezonas, kun posedanto kaj modo, kiujn vi povas klarigi. Preferu nurlegan aliron por ĉio, kio nur legeblas.

Tenu la permesojn de la privata ŝlosilo aparte de la politikaj dosieroj. Ŝlosilo, kiu devas esti relegita post restarigo, havas alian postulon ol klienta dosiero legata ĉe ĉiu konekto, kaj unu cedema modo por ambaŭ donas pli da aliro ol la problemo petas. Dediĉita demona konto kun mallarĝa posedado estas pli facile revidebla ol larĝa grupo. Kiam la ŝlosilo devas postvivi restarigojn, persist-key forigas la relegadon anstataŭ vastigi la dosierujon.

Decidu laŭ la okazaĵo, kiun vi povas reprodukti

Vivanta tunelo pruvas unu vojon tra la kodo. La okazaĵo, kiu bezonas la dosieron, estas la sola testo, kiu kovras la malfermon gravan por vi, ĉu ĝi estas nova klienta konekto, anstataŭigita revoka dosiero, permesita milda restarigo aŭ planita restarto. Elektu la okazaĵon, rulu ĝin, kaj konservu la unuan eraron anstataŭ la lastan.

Por milda restarigo, unu signalo kaj la protokolo de la unuo montras, ĉu la ŝlosilo estis relegita. Sendu la signalon, poste legu la lastajn liniojn, kiujn la unuo skribis:

systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pager

Ne konkludu, ke kompromitita demono ne plu povas modifi dosierojn nur ĉar privilegioj estis malaltigitaj. Kion ĝi ankoraŭ povas, dependas de la restantaj legitimoj, ĝiaj kapabloj, la dosierujoj en kiujn ĝi povas skribi kaj ĉiu skribebla priskribilo, kiun ĝi ankoraŭ tenas. Privilegia redukto mallarĝigas aŭtoritaton, kaj la inventaro de rultempaj malfermoj montras kiom. Skribu tiun limon apud la agordo, por ke la sekva persono ne devu retrovi ĝin.

Rilataj artikoloj