Pokrećete up skriptu kao root, ona se završi, a ista skripta ne uspije kada je servis pozove. Ništa u dozvolama datoteke nije promijenjeno, pa je prirodan sljedeći korak ponovno ih olabaviti, što ništa ne popravlja. Na SELinux hostu odlučujući faktor često nije ko je proces, nego u kojoj domeni radi, a root unutar ograničene domene ostaje ograničen.

Ista naredba, dvije različite sigurnosne domene

Type enforcement procjenjuje izvornu domenu, ciljnu oznaku i traženu operaciju zajedno. Vaša terminalska sesija radi u neograničenoj ili administrativnoj domeni, a daemon radi u domeni koja je dodijeljena njegovoj jedinici. Zato identične naredbe daju različite odluke, a razlika je namjerna, a ne greška u politici.

Zato je poređenje dvaju pokretanja korisno samo ako uporedite njihove kontekste. Pokrenite istu naredbu iz ljuske i iz hooka; verzija iz ljuske dokazuje da binarna datoteka postoji i da su argumenti ispravni, ali ne dokazuje ništa o tome smije li servis izvršiti je. Pokrenite je na oba načina i uporedite domene, ne samo izlazne kodove. Upravo to poređenje pretvara neodređenu žalbu na dozvole u konkretno pitanje o jednoj domeni i jednoj oznaci.

Klasičan oblik ove greške je pomoćnik koji poziva vanjski alat. Sam hook može biti dozvoljen, dok alat koji poziva nosi oznaku koju servisna domena ne smije izvršiti ili piše u direktorij čija oznaka to zabranjuje.

Pročitajte AVC zapis pored greške hooka

AVC odbijanje imenuje polja koja odlučuju slučaj: izvorni kontekst procesa, ciljni kontekst objekta, klasu objekta i konkretnu dozvolu koja je odbijena. Pročitajte sva četiri prije nego što stvorite teoriju, jer odbijanje za izvršavanje i odbijanje za pisanje imaju potpuno različite popravke.

ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn

Izvorni kontekst treba da odgovara domeni u kojoj servis stvarno radi, a ciljni kontekst oznaci datoteke ili direktorija kojeg je operacija dotakla. Ako se bilo koje od toga ne poklapa s greškom koju pratite, čitate drugi događaj.

Zabilježite verziju politike i tačnu putanju izvršne datoteke uz zapis. Naziv domene koji se pojavljuje u politici jedne distribucije dokaz je o toj instalaciji, a ne garancija da druga gradnja isporučuje ista pravila. Upravo taj kontekst omogućava nekome drugom da ponovi vaš zaključak na svom hostu. Bez njega zapis se čita kao anegdota, a ne kao dokaz.

Oznaka, konfiguracija ili politika: tri popravke

Prva popravka je oznaka koja se ne poklapa s instaliranom lokacijom datoteke. Skripta kopirana na mjesto pomoću cp ili napisana u editoru može nositi zadanu oznaku koju servisna domena ne može koristiti, a vraćanje očekivanog konteksta to rješava bez ikakvog diranja politike.

Druga je konfiguracija. Distribucija može nuditi podržan način za izvršavanje operacije, dokumentirani direktorij za pomoćnika ili ažurirani paket politike koji je već dopušta. Promjena vašeg rasporeda na podržani jeftinija je od pisanja politike i preživljava ažuriranja.

Treća je zaista nedostajuće pravilo i treba biti posljednje sredstvo. Generirajte kandidata pomoću alata za reviziju, pročitajte što on zapravo dopušta, suzite ga na operaciju i domenu koju ste primijetili i neka ga neko drugi pregleda prije nego što se približi produkciji.

Zašto stari allow modul nije odgovor

Rezultati pretrage za ovu grešku puni su gotovih modula, često za alat koji hook više ne poziva. Instaliranje jednog daje dozvole koje možda nemaju nikakve veze s vašim odbijanjem i ostavlja stvarnu neusklađenost na mjestu dok dodaje trajnu rupu.

On skriva i sljedeći neuspjeh. Modul koji dopušta široku klasu operacija učinit će da ova greška nestane i pretvoriti sljedeću u nešto mnogo teže za pripisivanje. Uklanjanje modula kasnije također je promjena koju nitko ne želi planirati, pa prečica obično postaje trajna.

Disciplinirano poređenje je između odbijanja koje možete pročitati i promjene koju predlažete. Red Hatovo uputstvo za rješavanje problema sa SELinuxom stavlja provjere oznaka i konfiguracije ispred generirane politike upravo iz tog razloga. Ako u zapisu nema odgovarajućeg odbijanja, SELinux vjerojatno nije vaš problem, i problemi s putanjom, sandboxom ili dozvolama još su otvoreni.

Povezani članci