navody:fc6selinux

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:fc6selinux [2007/03/04 10:08] mackynavody:fc6selinux [2022/11/14 12:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 23: Řádek 23:
 === Implementace SELinuxu === === Implementace SELinuxu ===
  
-//SELinux// implementuje //MAC// a //RBAC// do jádra ve formě modulu //LSM//. Administrátor může prostřednictvím tzv. bezpečnostního serveru nastavit, jací uživatelé a procesy (tzv. subjekty) mohou přistupovat k jakým souborům popř. zařízením (tzv. objektům). V praxi je nejprve zkoumáno, zda-li má uživatel práva k požadovanému souboru dle //DAC// (tj. jestli má právo čtení, zápisu apod.). Je-li tato podmínka splněna, následuje kontrola splnění podmínek definovaných v rámci //MAC// (tj. zda-li má příslušný proces oprávnění k danému souboru).\\ +//SELinux// implementuje //MAC// a //RBAC// do jádra ve formě modulu //LSM//. Administrátor může prostřednictvím tzv. bezpečnostního serveru nastavit, jací uživatelé a procesy (tzv. subjekty) mohou přistupovat k jakým souborům popř. zařízením (tzv. objektům). V praxi je nejprve zkoumáno, zda-li má uživatel práva k požadovanému souboru dle //DAC// (tj. jestli má právo čtení, zápisu apod.). Je-li tato podmínka splněna, následuje kontrola splnění podmínek definovaných v rámci //MAC// (tj. zda-li má příslušný proces oprávnění k danému souboru). To znamená, že kdyby se útočník "zmocnil" procesu vlastněného superuživatelem, mohl by manipulovat pouze se soubory a zařízením, ke kterým má tento proces oprávnění. Potenciální škoda, kterou by takto mohl napáchat, je nesrovnatelně menší než v případě, že by byl implementován pouze //DAC//.\\
-V praxi to znamená, že kdyby se útočník "zmocnil" procesu vlastněného superuživatelem, mohl by manipulovat pouze se soubory a zařízením, ke kterým má tento proces oprávnění. Potenciální škoda, kterou by takto mohl napáchat, je nesrovnatelně menší než v případě, že by byl implementován pouze //DAC//.\\+
 //SELinux// také umožňuje implementaci tzv. //MLS// (**M**ulti-**L**evel **S**ecurity model). Filozofií tohoto modelu je přiřazení jednotlivých objektů (tj. souborů) do tzv. bezpečnostních vrstev. Tyto vrstvy jsou hierarchicky uspořádány a platí obecné pravidlo, že informace může být předána pouze z vyšší bezpečnostní vrstvy do nižší. To umožňuje dále omezit okruh uživatelů, kteří mají přístup k vybraným souborům. //SELinux// také umožňuje implementaci tzv. //MLS// (**M**ulti-**L**evel **S**ecurity model). Filozofií tohoto modelu je přiřazení jednotlivých objektů (tj. souborů) do tzv. bezpečnostních vrstev. Tyto vrstvy jsou hierarchicky uspořádány a platí obecné pravidlo, že informace může být předána pouze z vyšší bezpečnostní vrstvy do nižší. To umožňuje dále omezit okruh uživatelů, kteří mají přístup k vybraným souborům.
  
Řádek 30: Řádek 29:
  
   * Přečtěte si kapitolu [[navody:fc6Obsah|Obecné poznámky]].   * Přečtěte si kapitolu [[navody:fc6Obsah|Obecné poznámky]].
- 
-{{ navody: selinux.png | SELinux }} 
  
 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 //Fedora Core//. Ř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 //Fedora Core//. Řešením tohoto problému pak může být vypnutí //SELinux//u.
Řádek 38: Řádek 35:
  
 Všechny tři módy se dají nastavit prostřednictvím nabídky //Aplikace -> Systém -> Správa -> Úroveň zabezpečení a firewall//. V okně //Nastavení úrovně zabezpečení//, zvolte záložku //SELinux//. Jednotlivé módy je pak možné zvolit v roletkové nabídce položky //Nastavení SELinux//. Všechny tři módy se dají nastavit prostřednictvím nabídky //Aplikace -> Systém -> Správa -> Úroveň zabezpečení a firewall//. V okně //Nastavení úrovně zabezpečení//, zvolte záložku //SELinux//. Jednotlivé módy je pak možné zvolit v roletkové nabídce položky //Nastavení SELinux//.
 +
 +{{ navody: selinux.png | SELinux }}
  
 Módy //SELinux//u je možné nastavit také přímo v souboru ''/etc/selinux/config''. Módy //SELinux//u je možné nastavit také přímo v souboru ''/etc/selinux/config''.
Řádek 55: Řádek 54:
   SETLOCALDEFS=0   SETLOCALDEFS=0
  
-Módy ''Vynucující'' a ''Tolerantní'' lze také nastavit pomocí příkazu ''setenforce''. Pomocí+Módy ''Vynucující'' a ''Tolerantní'' lze také nastavit pomocí příkazu ''setenforce''. Toto nastavení je však platné pouze pro aktuální sezení - po restartu bude obnoveno defaultní nastavení. Pomocí
  
   /usr/sbin/setenforce 1   /usr/sbin/setenforce 1
Řádek 99: Řádek 98:
 ==== Bezpečnostní kontext ==== ==== Bezpečnostní kontext ====
  
-Bezpečnostní kontext lze  charakterizovat jako bezpečnostní sadu pravidelkterá se váží ke konkrétnímu uživateli, procesu nebo souboru. 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//. Informace o bezpečnostním kontextu souborů jsou uloženy v rozšířeném atributu systému souborů a jsou tudíž jehou 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íž jehou 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//.
  
 === Struktura bezpečnostního kontextu === === Struktura bezpečnostního kontextu ===
Řádek 143: Řá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 152: Řádek 153:
   -rw-rw-rw-  macky macky user_u:object_r:user_home_t      skript~   -rw-rw-rw-  macky macky user_u:object_r:user_home_t      skript~
  
-Bezpečnostní profil aktivního uživatele zjistíte příkazem+Bezpečnostní kontext aktivního uživatele zjistíte příkazem
  
   /usr/bin/id -Z   /usr/bin/id -Z
Řádek 158: Řá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. V prvním případě se jednalo o bezpečnostní kontext procesů, v druhém případě o bezpečnostní kontext souborů / adresářů a ve třetím případě o bezpečnostní kontext uživatele. 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 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. Některé klíčové aplikace jako např. //httpd// nebo //Samba// mají vlastní bezpečnostní typOstatní aplikace většinou používají defaultní typ ''unconfined_t'' - v tomto případě spoléhají pouze na //DAC//. Typ vždy končí na ''_t'' (//type//).\\+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í skupinuA 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 objektu / subjektu má standardní zakončení na ''_t'' (//type//).\\
  
 == Role == == Role ==
-Role má smysl pouze v případě subjektů (tj. uživatelů a procesů). Soubory mají vždy přiřazenu roli ''object_r'' a jejich případě má tato role za úkol pouze "vyplnit" místo v příslušné části bezpečnostního kontextu. Jak již bylo zmíněno dříve, role slouží k vytváření bezpečnostních profilů 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 končí standardně na ''_r'' (//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''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"
 +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. Je důležité si uvědomit, že pojem "uživatel" používaný v rámci //SELinux//u se neshoduje s pojmem "uživatel", tak 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". Složka "uživatel" končí standardně na ''_u'' (//user//)((Pochopitelně s vyjímkou uživatele ''root''.)).+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". 
 +Složka "uživatel" končí standardně na ''_u'' (//user//)((Pochopitelně s vyjímkou uživatele ''root''.)).
  
 === === === ===
- 
 Bezpečnostní pravidla jsou pak dána formou matice, které "propojují" kontexty objektů a subjektů. Např. příkaz ''allow httpd_t net_conf_t:file { read getattr lock ioctl }'' umožňuje objektům ''httpd_t'' číst konfigurační soubory s typem ''net_conf_t''. Na základě tohoto pravidla může libovolný objekt typu ''httpd_t'' přistupovat k subjektům s typem ''net_conf_t'' Bezpečnostní pravidla jsou pak dána formou matice, které "propojují" kontexty objektů a subjektů. Např. příkaz ''allow httpd_t net_conf_t:file { read getattr lock ioctl }'' umožňuje objektům ''httpd_t'' číst konfigurační soubory s typem ''net_conf_t''. Na základě tohoto pravidla může libovolný objekt typu ''httpd_t'' přistupovat k subjektům s typem ''net_conf_t''
  
Řádek 179: Řádek 183:
 === Konfigurační soubory === === Konfigurační soubory ===
  
-Konfigurační soubory //SELinux//u jsou uloženy v adresáři ''/etc/selinux/''. Každý z podadresářů ''/etc/selinux'' pak může obsahovat samostatnou sadu bezpečnostních politik. Ve //Fedora Core// je defaultním podadresářem podadresář ''targeted''Tento podadresář je možné změnit v souboru ''/etc/selinux/config''.+Konfigurační soubory //SELinux//u jsou uloženy v adresáři ''/etc/selinux/''. Každý z podadresářů ''/etc/selinux'' pak může obsahovat samostatnou sadu bezpečnostních politik. 
 +Ve //Fedora Core// naleznete v tomto adresáři podadresář ''targeted''. ''targeted'' je defaultní bezpečnostní politikou //SELinux//u. 
 +V případě bezpečnostní politiky ''targeted'' mají pouze některé klíčové aplikace((Konkrétně se jedná o deamony ''dhcpd'', ''httpd'', ''mysqld'', ''named'', ''nscd'', ''ntpd'', ''portmap'', ''postgres'', ''snmpd'', ''squid'', ''syslogd'' a ''winbind''. To, o jaké deamony se bude jednat ve Vašem případě, závisí na Vaší instalaci.)) "vlastní" bezpečnostní typ. Ostatní aplikace používají typ ''unconfined_t'' - v tomto případě spoléhají pouze na //DAC//. Opakem politiky ''targeted'' je politika ''strict''((Bezpečnostní politika ''strict'' není defautně nainstalovánaInstalaci provedete pomocí ''yum -y install selinux-policy-strict''.)). Tato politika implementuje samostatný typ pro každou aplikaci a vyžaduje explicitní pravidla pro všechny vzájemné interakce subjektů a objektů. Bezpečnostní politika ''strict'' je tedy velice komplexním bezpečnostním nástrojem vyžadujícím detailní znalost //SELinux//u a pravidelnou aktualizaci v závislosti na nově přidaných aplikacích.\\ 
 + 
 +Aktuální bezpečnostní politiku je možné nastavit v souboru ''/etc/selinux/config''((Pokud ovšem opravdu nevíte, co děláte, není dobrý nápad toto nastavení měnit.))
  
   ...   ...
Řádek 185: Řádek 193:
   ...   ...
  
-Je tak možné nadefinovat několik bezpečnostních profilů a ty následně měnit podle potřeby((Nicméně z logiky věci plyne, že v jeden okamžik může být aktivní pouze jedna politika.)).\\+Změnou nastavení je tak možné nadefinovat několik bezpečnostních politik a ty následně měnit podle potřeby((Nicméně z logiky věci plyne, že v jeden okamžik může být aktivní pouze jedna politika.)).\\
  
 Vraťme se zpět k adresáři ''/etc/selinux/targeted''. Tento adresář obsahuje další adresáře a soubory. Vraťme se zpět k adresáři ''/etc/selinux/targeted''. Tento adresář obsahuje další adresáře a soubory.
Řádek 199: Řádek 207:
   -rw-r--r-- 1 root root  176 úno 24 09:09 seusers   -rw-r--r-- 1 root root  176 úno 24 09:09 seusers
  
-Adresář ''contexts'' obsahuje defaultní bezpečnostní kontexty. Některé aplikace používají tento tyto soubory pro konfiguraci systému. +Adresář ''contexts'' obsahuje defaultní bezpečnostní kontexty. Některé aplikace používají tento tyto soubory pro konfiguraci systému.  
-Adresář ''modules'' je používán utilitami //SELinux//u jako pracovní při modifikaci politiky. Aktuální politika je uložena v podadresáři ''active''; předchozí politika pak v adresáři ''previous''+Adresář ''modules'' je používán utilitami //SELinux//u jako pracovní při modifikaci politiky. Aktuální politika je uložena v podadresáři ''active''; předchozí politika pak v adresáři ''previous''.\\ 
-Dalším adresářem je ''policy'', který obsahuje profily aktuální bezpečnostní politiky. Ta je dána bezpečnostními pravidly, kterými se momentálně řídí //SELinux//. Jedná se o soubor ve tvaru ''policy.xx'', kde ''xx'' představuje verzi politiky((Verzí se rozumí syntaxe, která je používána při definování bezpečnostních politik. Aktuální verzí v době psaní tohoto článku byla  21.)). Jedná se tedy z pohledu //SELinux//u o nejdůležitější soubor. +Dalším adresářem je ''policy'', který obsahuje profily aktuální bezpečnostní politiky. Ta je dána bezpečnostními pravidly, kterými se momentálně řídí //SELinux//. Jedná se o binární soubor  ve tvaru ''policy.xx'', kde ''xx'' představuje verzi politiky((Verzí se rozumí syntaxe, která je používána při definování bezpečnostních politik. Aktuální verzí v době psaní tohoto článku byla  21.)). pohledu //SELinux//se tedy jedná o nejdůležitější soubor.\\ 
-V adresáři ''/etc/selinux/targeted'' je také uložen soubor ''seusers''. Tento soubor umožňuje mapovat linuxové uživatele na uživatele //SELinux//u a specifikovat úrovně //MLS//, se kterými mohou pracovat. Jestliže není konkrétní linuxový uživatel specifikován v tomto souboru, je použit defaultní //SELinux//ový uživatel (tj.''user_u''). Soubor ''seusers'' by neměl být modifikován ručně. + 
-Jednotlivé bezpečnostní úrovně //MLS//, na které se odkazuje soubor ''seusers'', jsou definovány v souboru ''setrans.conf''. Tento soubor obsahuje také krátkou nápovědu.+V adresáři ''/etc/selinux/targeted'' je také uložen soubor ''seusers''. Tento soubor umožňuje mapovat linuxové uživatele na uživatele //SELinux//u a specifikovat úrovně //MLS//, se kterými mohou pracovat. Jestliže není konkrétní linuxový uživatel specifikován v tomto souboru, je použit defaultní //SELinux//ový uživatel (tj.''user_u''). Soubor ''seusers'' by neměl být modifikován ručně.\\ 
 +Jednotlivé bezpečnostní úrovně //MLS//, na které se odkazuje soubor ''seusers'', jsou definovány v souboru ''setrans.conf''. Tento soubor obsahuje také krátkou nápovědu, která Vám pomůže při tvorbě nových bezpečnostních vrstev. Seznam aktuálních bezpečnostních vrstev získáte pomocí 
 + 
 +  chcat -L 
 +   
 +  s0                              
 +  s0-s0:c0.c1023                 SystemLow-SystemHigh 
 +  s0:c0.c1023                    SystemHigh
  
 ==== Změna nastavení bezpečnostního kontextu ==== ==== Změna nastavení bezpečnostního kontextu ====
  
-=== Základní změna nastavení ===+=== Úroveň zabezpečení a firewall ===
  
 Elementární změny bezpečnostního profilu lze provádět přes nabídku //Aplikace -> Systém -> Správa -> Úroveň zabezpečení a firewall// na záložce //SELinux//. Zde lze nastavit některé zákazy / povolení pro základní aplikace (viz. výše uvedená obrazovka).\\ Elementární změny bezpečnostního profilu lze provádět přes nabídku //Aplikace -> Systém -> Správa -> Úroveň zabezpečení a firewall// na záložce //SELinux//. Zde lze nastavit některé zákazy / povolení pro základní aplikace (viz. výše uvedená obrazovka).\\
Řádek 220: Řádek 235:
  
 {{ navody:selinux_management_tool.png | SELinux Management Tool }} {{ navody:selinux_management_tool.png | SELinux Management Tool }}
- 
- 
  
 ===== ===== ===== =====
 [[navody:fc6obsah|Hlavní stránka]] [[navody:fc6obsah|Hlavní stránka]]
  • Poslední úprava: 2022/11/14 11:08
  • (upraveno mimo DokuWiki)