Pomalu, ale jistě, se chystá vydání další Fedory, tentokrát s číslem 23. A jako každé nové vydaní, i toto bude obsahovat mnoho novinek a vylepšení. Tento článek popisuje jedno z nich nazvané - SELinux Policy Store Migration.
Připomeňme si, co je SELinux
SELinux je jednou z implementací tzv. povinného řízení přístupu (MAC) v systému, kde SELinux politika definuje sadu pravidel pro interakci mezi subjekty (proces, uživatel) a objekty (soubory, adresáře, zařízení). Tj. SELinux je technologii pro rozšířenou izolaci procesů. Každý subjekt, každý objekt má v rámci politiky definován svůj štítek a jednotlivá pravidla jsou vztažena k těmto štítkům.
Zmíněná politika je sestavována z pravidel pro jednotlivé služby prostřednictvím SELinuxových nástrojů a následně jimi zavedena do kernelu a kernelem i vynucována. Soubory potřebné k sestaveni politiky nazýváme moduly a nacházejí se v tzv. úložišti modulů.
Více ze dozvíte například na nebo ve Fedora dokumentaci https://docs.fedoraproject.org/en-US/Fedora/22/html/SELinux_Users_and_Administrators_Guide/index.html
Co je nového?
Nová Fedora bude obsahovat aktualizované nástroje pro správu SELinuxových politik - release 2015-02-02 https://github.com/SELinuxProject/selinux/wiki/Releases. Release obsahuje nové verze balíků libsepol, libselinux, libsemanage, policycoreutils a checkpolicy.
Tato verze, mimo oprav chyb, přináší i změnu úložiště pro moduly, ze kterých se politiky staví https://mgrepl.wordpress.com/2015/06/14/selinux-insides-part1-policy-module-store-policy-modules-and-kernel-policy/. Dále přidává podporu pro nový jazyk pro definici modulů - CIL https://github.com/SELinuxProject/cil/wiki - a celkově zrychluje práci s politikou, její vytvoření, načtení apod.
Nové uložiště /var/lib/selinux
SELinuxové nástroje ve verzích menších než 2.4, používaly pro ukládání modulů podadresář v /etc/selinux. Ve verzi 2.4 došlo ke změně a jako úložiště se používá adresář /var/lib/selinux. Tato změna jde ruku v ruku s moderním trendem, kdy v adresáři /etc by měl změny dělat pouze admin, zatímco nástroje používají adresář /var. Navíc by to mělo umožnit připojovat adresář /etc v režimu pouze pro čtení.
Pro uživatele se prakticky nic nemění, protože o manipulaci s moduly a o vytváření samotné politiky se starají správci balíku a také nástroje pro manipulaci s politikami.
Popis adresářové struktury
Ve starších verzích byly všechny moduly použité pro sestavení politiky uložené jako soubory s koncovkou .pp v adresáři /etc/selinux/targeted/modules/active/modules.
Ve verzi 2.4 je pro uložení modulů použita následující struktura:
/var/lib/selinux/targeted/active/modules/
100/ [a]
ssh/ [b]
cil [c]
hll
lang_ext
400/ [a]
disabled/ [d]
unconfined
- [a] Priorita Moduly v novém úložišti mají svoji prioritu. Pokud je v úložišti více modulů se stejným jménem a různou prioritou, použije se modul s nejvyšší prioritou. To umožňuje administrátorům nebo tvůrcům balíků jednoduše přepisovat systémové moduly vlastními moduly, které jsou upraveny pro konkrétní použití. Výchozí priorita pro distribuční moduly je 100.
- [b] Název modulu Název modulu v novém úložišti se odvozuje od názvu souboru.
- [c] Soubory modulů
- cil - Zdrojový kód modulu v jazyce CIL.
- hll - Zkompilovaný kód modulu pomocí HLL překladače.
- lang_ext - koncovka pro použitý HLL překladač.
- [d] Zakázané moduly Moduly uvedené v tomto adresáři jsou zakázané a nepoužívají se při sestavení politiky.
Závěr
Představili jsme si jednu ze změn v nadcházející Fedoře 23 https://fedoraproject.org/wiki/Changes/SELinuxPolicyStoreMigration, která přináší řadu zlepšení a zrychlení operací při práci se SELinuxovou politikou. Pokud se chcete dozvědět víc, neváhejte se ptát na mailing listu selinux@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/selinux (nebo i jinde).
13. 10. 2015 at 10:06
A půjde psát SELinux moduly i původním jazykem?
13. 10. 2015 at 18:39
Ano, stále se bude moci využít stavajici jazyk pro definici modulů. Zárověň doporučuji vyzkoušet si vytvoření modulu psaného v CILu.