navody:fc6bezpecnost

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:fc6bezpecnost [2007/02/24 19:14] mackynavody:fc6bezpecnost [2022/11/14 12:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 73: Řádek 73:
 **Poznámka: ** Tímto způsobem je ošetřen pouze případ, kdy uživatel zadá smazání více souborů pomocí ''rm'' z příkazové řádky. S výše definovaným aliasem bude třeba potvrdit smazání každého jednotlivého souboru.\\ **Poznámka: ** Tímto způsobem je ošetřen pouze případ, kdy uživatel zadá smazání více souborů pomocí ''rm'' z příkazové řádky. S výše definovaným aliasem bude třeba potvrdit smazání každého jednotlivého souboru.\\
 Mělo by se jednat o defaultní nastavení, a proto by nemělo být zapotřebí definovat výše uvedený alias. Mělo by se jednat o defaultní nastavení, a proto by nemělo být zapotřebí definovat výše uvedený alias.
 +
  
 ==== SELinux ==== ==== SELinux ====
- +SELinux (Security Enhanced Linux) zvyšuje bezpečnost Vašeho systému Fedora Core tak, že omezuje množinu souborů, se kterými mohou aplikace pracovat a množinu úkonů, které mohou tyto aplikace provádět. Bezpečnostní přínos SELinuxu tak spočívá v tom, že implementuje mechanismus kontroly přístupů. Více o //SELinux//u se dočtete samostatné [[navody:fc6selinux|kapitole]].
-Tato kapitola vznikla na základě následujících článků: +
-  * [[http://fedoraproject.org/wiki/SELinux|Wikipedia - SELinux]] +
-  * [[http://www.samag.com/documents/s=7835/sam0303a/0303a.htm|SELinux od K.Thompsona]] +
-  * [[http://www.crypt.gen.nz/selinux/faq.html| UnOfficial FAQ]] +
-  * [[http://fedoraproject.org/wiki/SELinux/Understanding|SELinux for dummies]] +
- +
-=== Úvod do teorie === +
-  +
-//SELinux// (**S**ecurity **E**nhanced **Linux**) zvyšuje bezpečnost Vašeho systému //Fedora Core// tak, že omezuje množinu souborů, se kterými mohou aplikace pracovat a množinu úkonů, které mohou tyto aplikace provádět. Bezpečnostní přínos //SELinux//spočívá v tom, že implementuje mechanismus kontroly přístupů.\\ +
- +
-//SELinux// byl vyvinut agenturou //NSA// (U.S. **N**ational **S**ecurity **A**gency) ve spolupráci s firmami jako např. //NAI Labs//, //Secure Computing Corp.// a //MITRE Corp.// Pro potřeby komunity byl uvolněn 22. prosince 2000. //SELinux// má formu jádrového modulu //LSM// - (**L**inux **S**ecurity **M**odule). Od verze 2.4 je podporován formou patche, od verze 2.6 je pak přímo součástí jádra. //SELinux// je zahrnut také do distribuce //Fedora Core// a to od její druhé verze.\\ +
- +
-== 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.\\ +
-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//. V tomto případě jsou přístupová práva definovaná administrátorem 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 to vyžadovalo definovaní 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. +
- +
-== 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 (terminologii //SELinux//u se hovoří o tzv. subjektech) 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). V //SELinux//u je výše popsaný proces nazýván jako //TE// (**T**ype **E**nforcement).\\ +
-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žší. +
- +
-=== Vypnutí/zapnutí SELinuxu === +
- +
-  * Přečtěte si kapitolu [[navody:fc6Obsah|Obecné poznámky]]. +
- +
-{{ selinux.png }} +
- +
-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//. +
- +
-//SELinux// má tři základní módy - ''Vynucující'' (Enforcing), ''Tolerantní'' (Permissive), ''Zakázán'' (Disabled). V rámci módu ''Vynucující'' je bezpečnostní politika //SELinuxu// aktivně vynucována. To znamená, že procesy mohou přistupovat pouze k souborů, které jsou jim v rámci pravidel přiřazeny. Mód ''Tolerantní'' znamená, že //SELinux// posílá varovné zprávy do souboru ''/var/log/messages'', avšak dodržování bezpečnostních pravidel nevyžaduje. V režimu ''Zakázán'' nejsou pravidla //SELinux//u aplikována vůbec.\\ +
- +
-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//+
- +
-Jednotlivé módy //SELinux//u je možné nastavit také přímo v souboru ''/etc/selinux/config''+
- +
-  # This file controls the state of SELinux on the system. +
-  # SELINUX= can take one of these three values: +
-  # enforcing - SELinux security policy is enforced. +
-  # permissive - SELinux prints warnings instead of enforcing. +
-  # disabled - SELinux is fully disabled. +
-  SELINUX=enforcing +
-  # SELINUXTYPE= type of policy in use. Possible values are: +
-  # targeted - Only targeted network daemons are protected. +
-  # strict - Full SELinux protection. +
-  SELINUXTYPE=targeted +
-   +
-  # SETLOCALDEFS= Check local definition changes +
-  SETLOCALDEFS=0  +
- +
-**Poznámka:** Pokud jste měli //SELinux// vypnutý a zapnete jej, bude třeba systém restartovat a při startu systému počkat, až //SELinux// "označkuje" všechny soubory na disku. Aktivace //SELinux//u snižuje výkon systému o cca 5%. +
- +
-=== Bezpečnostní kontext === +
- +
-Bezpečnostní kontext lze  charakterizovat jako bezpečnostní sadu pravidel, která se váží ke konkrétnímu 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 pojmem //domain//. Informace o bezpečnostním kontextu souborů jsou uloženy jako součást systému souborů. +
- +
-== Struktura bezpečnostního kontextu == +
- +
-V případě, že máte povolený //SELinux//, měli byste pomocí příkazu +
- +
-  ps -e --context +
- +
-  popř. +
- +
-  ps -auxZ +
- +
-získat následující výstup pro aktuálně spuštěné procesy +
- +
-  PID CONTEXT                         COMMAND +
-    1 system_u:system_r:init_t        init [5]                              +
-    2 system_u:system_r:kernel_t      [migration/0] +
-    3 system_u:system_r:kernel_t      [ksoftirqd/0] +
-    4 system_u:system_r:kernel_t      [watchdog/0] +
-    5 system_u:system_r:kernel_t      [events/0] +
-    6 system_u:system_r:kernel_t      [khelper] +
-    7 system_u:system_r:kernel_t      [kthread] +
-   53 system_u:system_r:kernel_t      [kblockd/0] +
-   54 system_u:system_r:kernel_t      [kacpid] +
-  131 system_u:system_r:kernel_t      [cqueue/0] +
-  132 system_u:system_r:kernel_t      [ksuspend_usbd] +
-  135 system_u:system_r:kernel_t      [khubd] +
-  137 system_u:system_r:kernel_t      [kseriod] +
-  161 system_u:system_r:kernel_t      [pdflush] +
-  162 system_u:system_r:kernel_t      [pdflush] +
-  163 system_u:system_r:kernel_t      [kswapd0] +
-  164 system_u:system_r:kernel_t      [aio/0] +
-  329 system_u:system_r:kernel_t      [kpsmoused] +
-  346 system_u:system_r:kernel_t      [kjournald] +
-  382 system_u:system_r:kernel_t      [kauditd] +
-  ... +
- +
-Pro soubory lze podobný výpis získat pomocí příkazu +
- +
-  ls -e --context +
- +
-popř. pomocí +
- +
-  ls -laZ +
-   +
-  -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 +
-  drwxrwxr-x  macky macky user_u:object_r:user_home_t      Manuály +
-  drwxr-xr-x  macky macky user_u:object_r:user_home_t      Octave +
-  -rw-r--r--  macky macky user_u:object_r:user_home_t      octave-core +
-  -rw-r--r--  root  root  user_u:object_r:user_home_t      repozitare.txt +
-  -rw-rw-rw-  macky macky user_u:object_r:user_home_t      skript~ +
- +
-Bezpečnostní profil aktivního uživatele získáte příkazem +
- +
-  /usr/bin/id -Z +
-   +
-  user_u:system_r:unconfined_t +
- +
-V 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 v našem případě 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** 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í typ. Ostatní aplikace používají defaulní typ ''unconfined_t'' - v tomto případě spoléhají pouze na //DAC//. Typ vždy končí na ''_t'' (//type//).\\ +
-Další složkou je **role**. Ta 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//. Role končí standardně na ''_r'' (//role//).\\ +
-Poslední složkou je **už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í dva uživatelé - ''user_u'' a ''system_u''. 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). Složka uživatel končí na ''_u'' (//user//).\\ +
- +
-**Tip:** Jestliže budete chtít nalézt soubor, který má příslušný bezpečnostní kontext, stačí zadat analogický příkaz +
- +
-  find / -context "*user_u*" +
- +
-== Konfigurační soubory == +
- +
-Konfigurační soubory //SELinux//u jsou uloženy v adresáři ''/etc/selinux/''. Konkrétně se jedná o podadresář ''targeted''. Podadresář je možné změnit v souboru ''/etc/selinux/config''. Je tak možné nadefinovat několik bezpečnostních profilů a ty následně měnit podle potřeby. +
- +
-  ... +
-  SELINUXTYPE=targeted +
-  ... +
- +
-Adresář ''/etc/selinux/targeted'' obsahuje další adresáře a soubory. +
- +
-  ls -la /etc/selinux/targeted +
-   +
-  drwxr-xr-x 5 root root 4096 úno 24 09:09 . +
-  drwxr-xr-x 3 root root 4096 úno 16 18:34 .. +
-  drwxr-xr-x 4 root root 4096 úno 24 09:09 contexts +
-  drwxr-xr-x 4 root root 4096 úno 24 09:09 modules +
-  drwxr-xr-x 2 root root 4096 úno 24 09:09 policy +
-  -rw-r--r-- 1 root root  598 úno 16 18:26 setrans.conf +
-  -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ář ''modules'' je používán utilitami ''semodule'' a ''semanage'' 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//+
-V adresáři je také uložen ''/etc/selinux/targeted'' 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. +
- +
-=== Změna nastavení bezpečnostního kontextu === +
- +
-== Základní změna nastavení == +
- +
-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).\\ +
- +
-== setools == +
-  * Přečtěte si kapitolu [[navody:fc6obsah#Obecné poznámky]]. +
-  * Přečtěte si kapitolu [[navody:fc6instalace_aplikaci#Přidání repozitáře]]. +
- +
-Poněkud podrobnější nastavení umožňuje sada aplikací //setools//+
- +
-  yum -y install setools-gui +
- +
-V nabídce //Aplikace -> Systém -> Správa// následně přibudou tři položky: //SELinux Audit Log Analysis//, //SELinux Policy Analysis// a //SELinux Policy Difference//.\\ +
-Pomocí //SELinux Audit Log Analysis// je možné analyzovat hlášení //SELinux//u o porušení bezpečnostních pravidel. +
- +
-{{ navody:seaudit.png | SELinux Audit Log Analysis }} +
- +
-//SELinux Policy Analysis// umožňuje modifikovat bezpečnostní politiky. To znamená, že umožňuje definovat nové typy, role a uživatele. +
- +
-{{ navody: apol.png | SELinux Policy Analysis }} +
- +
-Nástroj //SELinux Policy Difference// umožňuje, jak již název napovídá, porovnávat dvě bezpečnostní politiky. +
- +
-{{ navody: sediff.png | SELinux Policy Difference }}+
  
 ===== ===== ===== =====
 [[navody:fc6obsah|Hlavní stránka]] [[navody:fc6obsah|Hlavní stránka]]
  • Poslední úprava: 2022/11/14 11:09
  • (upraveno mimo DokuWiki)