Povinné řízení přístupu

Adam Tkáč, 207449@mail.muni.cz

Přehled

Povinné řízení přístupu je poměrně mladá problematika. Hlavní důvod proč existuje je zvýšená bezpečnost systému

Používané přístupy

Existuje mnoho implementací, které se snaží vyřešit tento problém. Zmíním zde dvě hlavní - SELinux a AppArmor. Oba systémy usilují o stejný cíl - bezpečnější Linux, ale jejich přístupy jsou značně odlišné. Zatímco SELinux využívá "Security labels", které jsou uloženy přímo ve filesystému AppArmor používá cesty k souborům. Porovnání obou přístupů není jednoduché, oba mají své zastánce a bývají častým zdrojem flamů. Zatímco pro AppArmor hovoří jednodušší konfigurace a není nutné modifikovat filesystém a aplikace pro SELinux hovoří striktnější, více fine-grained kontrola a flexibilita.

AppArmor - "Application Armor"

AppArmor je software vyvíjený Novellem, dosud není součástí hlavního jádra. Pro jeho používání není nutná podpora rozšířených atributů u filesystému a nutnost rekompilace programů. Hlavní myšlenka je založena na cestách. Každý program může mít specifikováno kam může přistupovat. Má jednodušší a kratší konfiguraci než SELinux, ale dá se také lehčeji "ošálit". Cesty totiž nemusejí vypadat tak, jak skutečně vypadají na disku, ke stejnému souboru můžeme přistoupit po jiných cestách atd..

SELinux - Security Enhanced Linux

SELinux je jako jediný security modul součástí hlavního jádra. Jde o poměrně propracovaný systém. Hlavním propagátorem je Red Hat. SELinux je založen na tzv "Security Labels", což je informace uložena u každého souboru přímo ve filesystému (=> potřeba EA). Dále pro plné využití SELinuxu je třeba linkovat programy oproti knihovně libselinux. Tato "daň" umožňuje velmi detalní konfiguraci toho co program může. Samozřejmě platí, že co není dovoleno je zakázáno. Jakmile chce program přistoupit k nějakému souboru, SELinux zkontroluje jestli má program povolení. Pokud ne, zakáže operaci (AVC - Access Vector Cache - denied). SELinux má samozřejmě mnohem více možností než jen kontrola přístupu k souborům. Většina systémových volání (bind, connect) je také pod kontrolou.

SELinux - jak ho nakonfigurovat

Zjistíme zda je SELinux zapnutý a jestli ano v jakém je módu

[atkac@traged ~]$ /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
[root@traged ~]# /usr/sbin/setenforce 0
[root@traged ~]# /usr/sbin/getenforce
Permissive
[root@traged ~]# /usr/sbin/setenforce 1
[root@traged ~]# /usr/sbin/getenforce
Enforcing

V módu permissive SELinux politiku nevynucuje, ale konflikty zapisuje do logu (démon auditd)

Co se "zlobivým" démonem?

Každý uživatel SELinuxu se určitě setkal s hláškou "AVC denied". Znamená to, že program se pokusil o operaci, kterou mu policy nedovoluje. Log je plný hlášek AVC denied ...

[root@traged ~]# cat log | audit2allow -M modul_pro_zlobiveho_demona
[root@traged ~]# /usr/sbin/setenforce 0
[root@traged ~]# semodule -i modul_pro_zlobiveho_demona.pp
[root@traged ~]# /usr/sbin/setenforce 1

Natažený modul se takto stává součástí politiky a bude natažen i při dalším bootu. Pokud tvoříme úplně novou politiku pro program, je výhodné nastavit SELinux do permissive módu, poté si nechat vygenerovat AVC denials a z nich udělat modul.

archiv referátů PV090