Spustíte skript up ako root, dokončí sa, a ten istý skript zlyhá, keď ho služba vyvolá. Na oprávneniach súboru sa nič nezmenilo, takže prirodzeným ďalším krokom je znova ich uvoľniť, čo nič nevyrieši. Na hostiteľovi so SELinuxom často nebýva rozhodujúce, kto proces je, ale v akej doméne beží, a root v obmedzenej doméne zostáva obmedzený.

Ten istý príkaz, dve rôzne bezpečnostné domény

Vynucovanie typov posudzuje zdrojovú doménu, cieľový štítok a požadovanú operáciu spoločne. Vaša terminálová relácia beží v neobmedzenej alebo administratívnej doméne a démon beží v doméne, ktorá je priradená jeho jednotke. Identické príkazy preto dávajú rôzne rozhodnutia a tento rozdiel je zámerný, nie je chybou v politike.

Preto je porovnanie oboch spustení užitočné len vtedy, ak porovnáte ich kontexty. Spustite ten istý príkaz z shellu aj z hooku; verzia zo shellu dokazuje, že binárka existuje a argumenty sú správne, ale nedokazuje nič o tom, či smie služba príkaz vykonať. Spustite ho oboma spôsobmi a porovnajte domény, nielen návratové kódy. Práve toto porovnanie premieňa nejasnú sťažnosť na oprávnenia na konkrétnu otázku o jednej doméne a jednom štítku.

Klasickým tvarom tejto poruchy je pomocník, ktorý volá externý nástroj. Samotný hook môže byť povolený, zatiaľ čo nástroj, ktorý volá, nesie štítok, ktorý doména služby nesmie spustiť, alebo zapisuje do adresára, ktorého štítok to zakazuje.

Prečítajte si záznam AVC vedľa chyby hooku

Odmietnutie AVC pomenúva polia, ktoré rozhodujú prípad: zdrojový kontext procesu, cieľový kontext objektu, triedu objektu a konkrétne oprávnenie, ktoré bolo odmietnuté. Prečítajte si všetky štyri, kým vytvoríte teóriu, pretože odmietnutie spustenia a odmietnutie zápisu majú úplne odlišné opravy.

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

Zdrojový kontext by mal zodpovedať doméne, v ktorej služba skutočne beží, a cieľový kontext štítku súboru alebo adresára, ktorého sa operácia dotkla. Ak sa jedno z toho nezhoduje s chybou, ktorú sledujete, čítate inú udalosť.

Vedľa záznamu si poznačte verziu politiky a presnú cestu k spustiteľnému súboru. Názov domény, ktorý sa objavuje v politike jednej distribúcie, je dôkazom o tejto inštalácii, nie zárukou, že iná zostava dodáva rovnaké pravidlá. Práve tento kontext umožňuje niekomu inému zopakovať váš záver na svojom hostiteľovi. Bez neho sa záznam číta ako anekdota, nie ako dôkaz.

Štítok, konfigurácia alebo politika: tri opravy

Prvou opravou je štítok, ktorý nezodpovedá umiestneniu nainštalovaného súboru. Skript skopírovaný na miesto pomocou cp alebo napísaný editorom môže niesť predvolený štítok, ktorý doména služby nemôže použiť, a obnovenie očakávaného kontextu to vyrieši bez toho, aby sa politika vôbec zmenila.

Druhou je konfigurácia. Distribúcia môže ponúkať podporovaný spôsob spustenia operácie, dokumentovaný adresár pre pomocníka alebo aktualizovaný balík politiky, ktorý ju už povoľuje. Zmena vášho usporiadania na podporované je lacnejšia než písanie politiky a prežije aktualizácie.

Treťou je skutočne chýbajúce pravidlo a malo by byť poslednou možnosťou. Vygenerujte kandidáta pomocou audítorských nástrojov, prečítajte si, čo skutočne povoľuje, zúžte ho na operáciu a doménu, ktoré ste pozorovali, a nechajte ho niekým iným skontrolovať, kým sa priblíži k produkcii.

Prečo starý allow modul nie je odpoveď

Výsledky hľadania tejto poruchy sú plné hotových modulov, často pre nástroj, ktorý hook už nevolá. Inštalácia jedného udeľuje oprávnenia, ktoré s vaším odmietnutím nemusia mať nič spoločné, a ponecháva skutočný nesúlad na mieste, pričom pridáva trvalú dieru.

Skrýva aj ďalšie zlyhanie. Modul, ktorý povoľuje širokú triedu operácií, spôsobí, že táto chyba zmizne, a premení nasledujúcu na niečo omnoho ťažšie priraditeľné. Odstránenie modulu neskôr je tiež zmena, ktorú nikto nechce plánovať, takže skratka má tendenciu stať sa trvalou.

Disciplinované porovnanie je medzi odmietnutím, ktoré si môžete prečítať, a zmenou, ktorú navrhujete. Príručka Red Hat na riešenie problémov so SELinuxom stavia kontroly štítkov a konfigurácie pred generovanú politiku práve z tohto dôvodu. Ak v zázname nie je zodpovedajúce odmietnutie, SELinux pravdepodobne nie je váš problém, a problémy s cestou, sandboxom alebo oprávneniami sú stále otvorené.

Súvisiace články