navody:f7selinux

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
navody:f7selinux [2007/05/19 21:37] mackynavody:f7selinux [2022/11/14 12:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 [[navody:f7obsah|Hlavní stránka]] [[navody:f7obsah|Hlavní stránka]]
  
-===== SELinux ===== 
  
-Následující kapitolu nelze v žádném případě považovat za vyčerpávající pojednání o problematice //SELinux//u (na toto téma vznikla celá řada knih). Cílem této kapitoly je seznámit se základní filozofií a elementárním nastavením //SELinux//u. Kapitola vznikla na základě následujících článků:+===== SELinux ===== 
 +{{:navody:48x48:apps:icon-security-lock.png }} Následující kapitolu nelze v žádném případě považovat za vyčerpávající pojednání o problematice //SELinux//u (na toto téma vznikla celá řada knih). Cílem této kapitoly je seznámit se základní filozofií a elementárním nastavením //SELinux//u. Kapitola vznikla na základě následujících článků:
   * [[http://fedoraproject.org/wiki/SELinux|Wikipedia - SELinux]]   * [[http://fedoraproject.org/wiki/SELinux|Wikipedia - SELinux]]
   * [[http://www.samag.com/documents/s=7835/sam0303a/0303a.htm|SELinux od K.Thompsona]]   * [[http://www.samag.com/documents/s=7835/sam0303a/0303a.htm|SELinux od K.Thompsona]]
Řádek 17: Řádek 17:
 === Modely kontroly přístupů === === Modely kontroly přístupů ===
  
-V praxi existují různé tzv. modely kontroly přístupů. V unixových systémech se tradičně používá tzv. //DAC// (**D**iscretionary **A**ccess **C**ontrol) mechanismus. Hlavní myšlenka tohoto přístupu spočívá v tom, že každý uživatel má plnou kontrolu nad všemi svými procesy((Zjednodušeně lze pojem "proces" chápat jako spuštěnou aplikaci. Jestliže tedy např. spustíte textový editor, inicializovali jste tímto nový proces.)) a soubory((Adresář je ve své podstatě také soubor. Jediným rozdílem mezi klasickým souborem a adresářem je ten, že adresář má přesně danou strukturu.)). Některá práva k těmto procesům a souborům pak může poskytnout také jiným uživatelům. Slabým místem této filozofie je tzv. superuživatel((Velice často se namísto pojmu "superuživatel" můžete setkat s pojmem "root". Tyto pojmy jsou ekvivalentní.)). Jedná se o uživatele, který má administrátorská práva k celému systému. To v praxi znamená, že má absolutní práva ke všem procesům a soborů v systému. Jestliže se tedy někomu podaří "ovládnout" proces, který patří superuživateli, stává se neomezeným vládcem systému.\\+V praxi existují různé tzv. modely kontroly přístupů. V unixových systémech se tradičně používá tzv. //DAC// (**D**iscretionary **A**ccess **C**ontrol) mechanismus. Hlavní myšlenka tohoto přístupu spočívá v tom, že každý uživatel má plnou kontrolu nad všemi svými procesy((Zjednodušeně lze pojem "proces" chápat jako spuštěnou aplikaci. Jestliže tedy např. spustíte textový editor, inicializovali jste tímto nový proces.)) a soubory((Adresář je ve své podstatě také soubor. Jediným rozdílem mezi klasickým souborem a adresářem je ten, že adresář má přesně danou strukturu.)). Některá práva k těmto procesům a souborům pak může poskytnout také jiným uživatelům. Slabým místem této filozofie je tzv. superuživatel((Velice často se namísto pojmu "superuživatel" můžete setkat s pojmem "root". Tyto pojmy jsou ekvivalentní.)). Jedná se o uživatele, který má administrátorská práva k celému systému. To v praxi znamená, že má absolutní práva ke všem procesům a soborův systému. Jestliže se tedy někomu podaří "ovládnout" proces, který patří superuživateli, stává se neomezeným vládcem systému.\\
 Druhou možností kontroly přístupů je tzv. //MAC// (**M**andatory **A**ccess **C**ontrol). Tento mechanismus je implementován právě v rámci //SELinux//u. V tomto případě jsou přístupová práva definovaná administrátorem((Administrátor nemusí nutně shodovat s osobou superuživatele.)) a nemohou být změněna jiným uživatelem. To, k jakým souborům mohou jednotlivé procesy přistupovat, je dáno sadou striktních pravidel. Obecné pravidlo zní, že co není povoleno, je zakázáno. Použití koncepce //MAC// v unixových systémech výše popsaným způsobem by bylo však příliš složité, protože by vyžadovalo definování práv pro každého uživatele a každý proces, který tento uživatel může spustit. Druhou možností kontroly přístupů je tzv. //MAC// (**M**andatory **A**ccess **C**ontrol). Tento mechanismus je implementován právě v rámci //SELinux//u. V tomto případě jsou přístupová práva definovaná administrátorem((Administrátor nemusí nutně shodovat s osobou superuživatele.)) a nemohou být změněna jiným uživatelem. To, k jakým souborům mohou jednotlivé procesy přistupovat, je dáno sadou striktních pravidel. Obecné pravidlo zní, že co není povoleno, je zakázáno. Použití koncepce //MAC// v unixových systémech výše popsaným způsobem by bylo však příliš složité, protože by vyžadovalo definování práv pro každého uživatele a každý proces, který tento uživatel může spustit.
 Rozšířením myšlenky //MAC// je tak //RBAC// (**R**ole-**B**ased **A**ccess **C**ontrol). Zde administrátor vytvoří tzv. role, pro které následně definuje sadu pravidel. Jednotlivým uživatelům pak přiřadí konkrétní role. Rozšířením myšlenky //MAC// je tak //RBAC// (**R**ole-**B**ased **A**ccess **C**ontrol). Zde administrátor vytvoří tzv. role, pro které následně definuje sadu pravidel. Jednotlivým uživatelům pak přiřadí konkrétní role.
Řádek 28: Řádek 28:
 ==== Vypnutí/zapnutí SELinuxu ==== ==== Vypnutí/zapnutí SELinuxu ====
  
-  * Přečtěte si kapitolu [[navody:f7Obsah|Obecné poznámky]].+  * Přečtěte si kapitolu [[navody:f7obsah|Obecné poznámky]].
  
 Bezpečnostní omezení daná //SELinux//em občas mohou způsobovat, že nelze do systému přidávat např. pluginy nebo ovladače, které nepocházejí ze standardních repozitářů pro //Fedoru//. Řešením tohoto problému pak může být vypnutí //SELinux//u. Bezpečnostní omezení daná //SELinux//em občas mohou způsobovat, že nelze do systému přidávat např. pluginy nebo ovladače, které nepocházejí ze standardních repozitářů pro //Fedoru//. Řešením tohoto problému pak může být vypnutí //SELinux//u.
Řádek 100: Řádek 100:
 Bezpečnostní kontext lze  charakterizovat jako sadu příznaků, které se váží ke konkrétnímu uživateli, procesu nebo souboru. V rámci bezpečnostní politiky jsou pak definovány možné interakce mezi subjekty a objekty právě na základě těchto příznaků. Informace o bezpečnostním kontextu souborů jsou uloženy v rozšířeném atributu systému souborů a jsou tudíž jeho součástí.\\ Bezpečnostní kontext lze  charakterizovat jako sadu příznaků, které se váží ke konkrétnímu uživateli, procesu nebo souboru. V rámci bezpečnostní politiky jsou pak definovány možné interakce mezi subjekty a objekty právě na základě těchto příznaků. Informace o bezpečnostním kontextu souborů jsou uloženy v rozšířeném atributu systému souborů a jsou tudíž jeho součástí.\\
  
-**Poznámka:** V případě souborů se někdy můžete setkat s ekvivalentním pojmem //file_context// a v případě procesu s pak často používá pojmem //domain//.+**Poznámka:** V případě souborů se někdy můžete setkat s ekvivalentním pojmem //file context// a v případě procesu s pak často používá pojmem //domain//.
  
 === Struktura bezpečnostního kontextu === === Struktura bezpečnostního kontextu ===
Řádek 144: Řádek 144:
  
   ls -laZ   ls -laZ
 +  
   -rw-rw-r--  macky macky user_u:object_r:user_home_t      black_scholes.m~   -rw-rw-r--  macky macky user_u:object_r:user_home_t      black_scholes.m~
   drwxr-xr-x  macky macky user_u:object_r:user_home_t      Desktop   drwxr-xr-x  macky macky user_u:object_r:user_home_t      Desktop
Řádek 159: Řádek 159:
   user_u:system_r:unconfined_t   user_u:system_r:unconfined_t
  
-Ve všech případech získáte informaci o tzv. bezpečnostním kontextu. Konkrétně se jedná o část výpisu ve tvaru ''xxx_u:xxx_r:xxx_t''. Bezpečnostní kontext se skládá ze tří částí oddělených dvojtečnou - uživatele, role a typu. Z výše zmiňovaných součástí //SELinux//u schází //**MLS**// - ta by se nacházela úplně na konci, tj. za typem.+Ve všech výše případech získáte informaci o tzv. bezpečnostním kontextu. Konkrétně se jedná o část výpisu ve tvaru ''xxx_u:xxx_r:xxx_t''. Bezpečnostní kontext se skládá ze tří částí oddělených dvojtečnou - uživatele, role a typu. Z výše zmiňovaných součástí //SELinux//u schází //**MLS**// - ta by se nacházela úplně na konci, tj. za typem.
  
 == Typ == == Typ ==
-Typ je nejdůležitější složkou //SELinux//u - velká část bezpečnostních pravidel se "opírá" právě o něj. Typ představuje skupinu subjektů (např. procesů) popř. objektů (např. souborů), které lze z bezpečnostního hlediska považovat za homogenní skupinu. A právě typ je významných pojítkem mezi subjekty a objekty. Aby mohl subjekt manipulovat s objektem, musí být jejich typy dle aktální bezpečnostní politiky vzájemně kompatibilní.+Typ je nejdůležitější složkou //SELinux//u - velká část bezpečnostních pravidel se "opírá" právě o něj. Typ představuje skupinu subjektů (např. procesů) popř. objektů (např. souborů), které lze z bezpečnostního hlediska považovat za homogenní skupinu. A právě typ je významným pojítkem mezi subjekty a objekty. Aby mohl subjekt manipulovat s objektem, musí být jejich typy dle aktální bezpečnostní politiky vzájemně kompatibilní.
 Typ objektu / subjektu má standardní zakončení na ''_t'' (//type//).\\ Typ objektu / subjektu má standardní zakončení na ''_t'' (//type//).\\
  
 == Role == == Role ==
-Role má smysl pouze v případě subjektů (tj. uživatelů a procesů). Objekty (tj. soubory a adresáře) mají vždy přiřazenu roli ''object_r'' a v jejich případě má tato role za úkol pouze "vyplnit" místo v příslušné části bezpečnostního kontextu((Tato "role" není ani explicitně definována v rámci bezpečnostní politiky.)). Jak již bylo zmíněno dříve, role slouží k vytváření bezpečnostních politik (viz. dále) a tvoří tak základ //RBAC//. Každý uživatel můžeme mit v jeden okamžik přiřazenu pouze jednu roli. V případě, že uživatel potřebuje jinou roli, musí se mezi těmito rolemi "přepnout".+Role má smysl pouze v případě subjektů (tj. uživatelů a procesů). Objekty (tj. soubory a adresáře) mají vždy přiřazenu roli ''object_r'' a v jejich případě má tato role za úkol pouze "vyplnit" místo v příslušné části bezpečnostního kontextu((Tato "role" není ani explicitně definována v rámci bezpečnostní politiky.)). Jak již bylo zmíněno dříve, role slouží k vytváření bezpečnostních politik a tvoří tak základ //RBAC//. Každý uživatel můžeme mit v jeden okamžik přiřazenu pouze jednu roli. V případě, že uživatel potřebuje jinou roli, musí se mezi těmito rolemi "přepnout".
 V případě defaultní bezpečnostní politiky ''targeted'' (viz. dále) existují dvě role - ''system_r'' a právě výše zmiňovaná ''object_r''. Role končí standardně na ''_r'' (//role//). V případě defaultní bezpečnostní politiky ''targeted'' (viz. dále) existují dvě role - ''system_r'' a právě výše zmiňovaná ''object_r''. Role končí standardně na ''_r'' (//role//).
  
 == Uživatel (identita) == == Uživatel (identita) ==
 Na uživatele lze pohlížet jako na množinu rolí. Bezpečnostní profil uživatele lze vytvořit totiž tak, že konkrétnímu uživateli přiřadíme přiřadíme konkrétní role. Defaultně v //SELinux//u figurují tři uživatelé - ''user_u'', ''system_u'' a ''root''. Uživatel ''user_u'' je standardním profilem uživatele; pomocí ''system_u'' jsou označeny procesy spuštěné v průběhu bootování systému (tj. procesy, které nebyly aktivovány uživatelem). Uživatel ''root'' je Vám přiřazen //SELinux//em, jestliže se přihlásíte jako superuživatel. Na uživatele lze pohlížet jako na množinu rolí. Bezpečnostní profil uživatele lze vytvořit totiž tak, že konkrétnímu uživateli přiřadíme přiřadíme konkrétní role. Defaultně v //SELinux//u figurují tři uživatelé - ''user_u'', ''system_u'' a ''root''. Uživatel ''user_u'' je standardním profilem uživatele; pomocí ''system_u'' jsou označeny procesy spuštěné v průběhu bootování systému (tj. procesy, které nebyly aktivovány uživatelem). Uživatel ''root'' je Vám přiřazen //SELinux//em, jestliže se přihlásíte jako superuživatel.
-Je důležité si uvědomit, že pojem "uživatel" používaný v rámci //SELinux//u se neshoduje s pojmem "uživatel", jak je běžně chápán v unixových systémemch((Koneckonců všem běžným uživatelům je po přihlášení //SELinuxem// "přiřazen" uživatel ''user_u''. Rozdíl mezi těmito dvěma pojmy je tedy zřejmý.)) - aby se předešlo možným nedorozumněním, používá se v rámci //SELinux//u také pojem "identita".+Je důležité si uvědomit, že pojem "uživatel" používaný v rámci //SELinux//u se neshoduje s pojmem "uživatel", jak je běžně chápán v unixových systémech((Koneckonců všem běžným uživatelům je po přihlášení //SELinuxem// "přiřazen" uživatel ''user_u''. Rozdíl mezi těmito dvěma pojmy je tedy zřejmý.)) - aby se předešlo možným nedorozumněním, používá se v rámci //SELinux//u také pojem "identita".
 Složka "uživatel" končí standardně na ''_u'' (//user//)((Pochopitelně s vyjímkou uživatele ''root''.)). Složka "uživatel" končí standardně na ''_u'' (//user//)((Pochopitelně s vyjímkou uživatele ''root''.)).
  
  • Poslední úprava: 2022/11/14 11:10
  • (upraveno mimo DokuWiki)