SELinux

Z Multimediaexpo.cz

SELinux (Security-Enhanced Linux) je v informatice rozšíření jádra Linuxu o mandatorní řízení přístupu sloužící ke zvýšení počítačové bezpečnosti. SELinux umožňuje definovat oprávnění k provedení určité operace na úrovni jednotlivých procesů, uživatelů, soketů a podobně tím, že na kritická místa jádra umisťuje volání svých kontrolních rutin. Tím dochází ke zvýšení režie systému, avšak je možné zabránit programu, aby provedl potenciálně nebezpečnou akci, která může vést k elevaci oprávnění.

Obsah

Charakteristika

SELinux není linuxová distribuce, ale soubor úprav a modifikací samotného jádra systému včetně doplnění o uživatelské nástroje. SELinux implementuje MAC (Mandatory access control) jako doplněk klasického systému oprávnění typu DAC (Discretionary Access Control), který používají unixové systémy, ale i řada systémů Windows NT. SELinux naplňuje kritéria důvěryhodného počítače podle TCSEC (Trusted Computer System Evaluation Criteria) označovaného jako Oranžová kniha (Orange Book). SELinux vynucuje administrátorem definovanou bezpečnostní politiku nad všemi subjekty a objekty v systému. Umožňuje tak nastavit jemnější práva přístupu k datům a zamezit jejich změnám, ať úmyslným, či neúmyslným.

Historie

Během 90. let minulého století agentury NSA (National Security Agency) a Secure Computing System spolupracovaly na vývoji nástroje pro silnou a flexibilní správu mandatorního řízení přístupů. K tomuto projektu se ještě přidala univerzita v Utahu a vznikl tak prototyp nazvaný Flask. O samotnou implementaci do linuxových distribucí projevili zájem po roce 2000 nejprve Red Hat (v Red Hat Enterprise Linuxu) a SUSE (která však používá jednodušší AppArmor), pokud hovoříme o komerčních distribucích. Avšak SELinux se dnes již standardně objevuje i v nekomerčních distribucích jako jsou Debian GNU/Linux, Gentoo Linux a Fedora.

FLASK

Flux Advanced Security Kernel (FLASK) byl implementací integrovanou do některých verzí linuxového jádra spolu s řadou utilit, které slouží k mandatornímu řízení přístupů (mandatory access control, MAC). Takovéto jádro obsahuje ve své architektuře komponenty, které poskytují obecnou podporu pro vynucování mnoha typů politik povinného řízení přístupu, včetně těch založených na konceptech vynucených typů, rolí a řízení ve víceúrovňovém nastavení bezpečnosti.

Rozdíl oproti tradičnímu unixovému modelu

Operační systémy používají některý z mechanismů řízení přístupu. Mezi dva nejznámější patří diskrétní (volitelné) řízení přístupu DAC (discretionary access control), které je použito v klasickém Linuxu, a povinné řízení přístupu MAC (mandatory access control), které je předmětem SELinuxu. Oba mechanismy mohou být v systému implementovány zároveň.

Diskrétní řízení přístupu

Princip diskrétního řízení přístupu je založen na ACL (access control list). Každý soubor nebo program má k sobě asociován jeden ACL, kde jsou definována jeho přístupová práva pro uživatele (vlastníka), skupinu a ostatní. Na základě ACL je tedy povolen či zamítnut přístup k objektu. DAC neposkytuje žádnou ochranu před použitím poškozeného nebo upraveného softwaru. Každý spuštěný program nebo proces běží pod právy uživatele, který jej spustil. Proces má tedy plnou kontrolu nad všemi daty daného uživatele a má možnost je měnit a zapisovat do nich. Například program na prohlížení pošty nepotřebuje mít plný přístup ke všem datům uživatele. Takovými daty mohou být konfigurační nebo jiné citlivé soubory, přístup k nim je nežádoucí v případě běžného uživatele a katastrofou u superuživatele, který má neomezený přístup k celému systému. Pokud se útočníkovi podaří převzít kontrolu nad procesem, který běží pod právy superuživatele, naskýtá se mu tak možnost získat kontrolu nad celým systémem. Stejné nebezpečí hrozí, i pokud má program nastaven setuid nebo setgid bit na superuživatele. Především z těchto důvodů DAC neposkytuje dostatečnou bezpečnost.

Mandatorní řízení přístupu

MAC poskytuje plnou kontrolu nad všemi akcemi programů, které běží v tzv. sandboxu (česky pískoviště), jenž omezuje přístup do jiných částí systému, než je samotný prostor sandboxu. Ve spojitosti se SELinuxem se zavádí speciální sandboxy nazývané domény, znemožňující i programům pod právy superuživatele tuto doménu opustit. Pokud se útočníkovi podaří převzít kontrolu nad nějakým programem, může provádět pouze takové operace, které měl daný program povoleny, a to i v případě programů pod právy superuživatele. Veškeré programy takovéhoto systému se musí řídit administrátorem definovanou politikou a znemožní tak použití poškozeného nebo upraveného softwaru všem uživatelům i superuživateli.

Uživatelé, práva a zabezpečení

SELinuxoví uživatelé a role nesouvisí s aktuálními uživateli a rolemi vlastního systému. Pro každého běžného uživatele a proces, SELinux přiřadí tři základní informace jako role, název uživatele a doména (nebo typ). Tento systém je flexibilnější než normální. Pravidla pro to, kdy se daný uživatel může dostat do určité domény, jsou definovány v politice SELinuxu.

Soubory, síťové porty anebo hardwarové prostředky mají také v SELinuxu své atributy, skládající se ze jména, role (velmi zřídka používané) a typu. V případě souborových systémů, mapováním mezi soubory a zabezpečením se tento proces nazývá labeling neboli označování. Označování je definováno v souboru pravidel, ale může být i manuálně nastaveno. U hardwaru je však typ podrobněji rozepsán.

Související články

Externí odkazy