Root yn in terminal, wegere ûnder SELinux: wêrom't de hook mislearret
In hook dy't mei de hân perfekt wurket, kin binnen de tsjinst wegere wurde. Fergelykje it domein fan it proses, it label fan it bestân en de wegere tastimming foardat jo bewurkje.
Jo útfiere it skript up as root, it foltôget, en itselde skript mislearret as de tsjinst it oanropt. Oan 'e bestânsrjochten is neat feroare, dat de folgjende natuerlike stap is om se wer losser te meitsjen, wat neat oplost. Op in SELinux-host is de beslissende faktor faak net wa't it proses is, mar yn hokker domein it rint, en root binnen in beheind domein bliuwt beheind.
Itselde kommando, twa ferskillende befeiligingsdomeinen
Type-ôftwanging beoardielet it boarnedomein, it doellabel en de frege operaasje tagelyk. Jo terminalsesje rint yn in ûnbeheind of administratyf domein, en de daemon rint yn it domein dat oan syn ienheid ta wiisd is. Yndintike kommando's leverje dêrom ferskillende besluten, en it ferskil is opsetlik en net in flater yn it belied.
Dêrom is it fergelykjen fan de twa rinnen allinnich nuttich as jo har konteksten fergelykje. Rin itselde kommando fan 'e skulp en fan 'e hook, en de skulpferzje bewiist dat it binêre bestân bestiet en de arguminten goed binne; it bewiist neat oer oft de tsjinst tastien is it út te fieren. Rin it op beide manieren en fergelykje de domeinen, net allinnich de útgongskoades. Dy fergeliking is wat in ûndúdlike tastimmingsklacht feroaret yn in spesifike fraach oer ien domein en ien label.
De klassike foarm fan dizze flater is in helper dy't in ekstern helpmiddel oanropt. De hook sels mei tastien wêze, wylst it helpmiddel dat er oanropt in label draacht dat it tsjinstedomein net útfiersje mei, of skriuwt yn in map dêr't it label dat fan ferbiedt.
Lês it AVC-record njonken de hook-flater
In AVC-ôfwizing neamt de fjilden dy't de saak beskulje: de boarnekontekst fan it proses, de doelkontekst fan it objekt, de objektklasse en de spesifike tastimming dy't wegere waard. Lês alle fjouwer foardat jo in teory foarmje, want in ôfwizing op útfiere en in ôfwizing op skriuwen hawwe hiel ferskillende reparaasjes.
ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn
De boarnekontekst heart te passen by it domein dêr't de tsjinst echt yn rint, en de doelkontekst by it label fan it bestân of de map dy't de operaasje oanrekke hat. As ien fan beide net oerienkomt mei de flater dy't jo efterfolgje, lêze jo in oare foarfal.
Notearje de beliedferzje en it krekte paad fan it útfierbere bestân njonken it record. In domeinnamme dy't yn it belied fan ien distribúsje foarkomt, is bewiis oer dy ynstallaasje, gjin garânsje dat in oare bou deselde regels leveret. Krekt dy kontekst lit immen oars jo konklúzje op syn eigen host werhelje. Sûnder dat lêst it record as in anekdoate ynstee fan bewiis.
Label, konfiguraasje of belied: trije reparaasjes
De earste reparaasje is in label dat net by it ynstallearre plak fan it bestân past. In skript dat mei cp op syn plak kopiaerd is of troch in bewurker skreaun is, kin in standertlabel drage dat it tsjinstedomein net brûke kin, en it weromsetten fan de ferwachte kontekst lost dat op sûnder it belied oan te reitsjen.
De twadde is konfiguraasje. De distribúsje biedt miskien in stipe manier om de operaasje te rinnen, in dokumintearre map foar de helper, of in bywurke beliedspakket dat it al tastiet. Jo yndieling feroarje nei de stipe iene is goedkeaper as belied skriuwe en oerlibbet bywurkings.
De tredde is in wier ûntbrekkende regel, en it heart it lêste middel te wêzen. Generearje in kandidaat mei de audithelpmiddelen, lês wat it echt tastiet, beheinsje it ta de operaasje en it domein dat jo waarnommen hawwe, en lit immen oars it neisjen foardat it de produksje benei komt.
Wêrom't in âld allow-module net it antwurd is
Sykresultaten foar dizze flater steane fol mei klearmakke modules, faak foar in helpmiddel dat de hook net mear oanropt. Ien ynstallearje jout tastimmingen dy't miskien neat mei jo ôfwizing te krijen hawwe, en it lit de echte mismatch stean wylst it in permanint gat tafoeget.
It ferberget ek de folgjende mislearring. In module dy't in brede klasse operaasjes tastiet, lit dizze flater ferdwine en makket de folgjende ta eat dat folle dreeger ta te skriuwen is. It fuortheljen fan de module letter is ek in feroaring dy't nimmen plenoarje wol, dat de koarte wei hat de oanstriid permanint te wurden.
De dissiplinêre fergeliking is tusken de ôfwizing dy't jo lêze kinne en de feroaring dy't jo foarstelle. Red Hat syn hantlieding foar it oplossen fan SELinux-problemen set labele- en konfiguraasjekontrôles foar generearre belied om krekt dizze reden. As der gjin oerienkommende ôfwizing yn it record stiet, is SELinux wierskynlik net jo probleem, en problemen mei paad, sandbox of tastimmingen binne noch iepen.