navody:fc6bezpecnost

Toto je starší verze dokumentu!


Hlavní stránka

Bezpečnost svého systému můžete výrazným způsobem zvýšit dodržováním několika vcelku jednoduchých pravidel. Zde jsou některá z nich.

  • Ujistěte se, že BIOS Vašeho počítače je nastaven tak, aby jako první bootoval z pevného disku. Zabráníte tak tomu, aby někdo např. nabootoval Linux z CD/DVD mechaniky a získal tak práva superuživatele ke všem datům uloženým na Vašem disku.
  • Ujistěte se, že BIOS je zabezpečen heslem. Tímto způsobem předejdete tomu, aby bylo možné triviálně změnit bootovací sekvenci jednotlivých zařízení.
  • Ujistěte se, že je počítač uložen a bezpečném místě a že je zamezen přístup všem nepovolaným osobám - takto lze zabránit krádeži disku popř. vyjmutí baterie ze základní desky s cílem vymazat heslo chránící nastavení BIOSu.
  • Ujistěte se, že heslo, které je vyžadováno pro přístup do systému, není triviální. Vaše heslo by mělo mít minimálně osm znaků, obsahovat malá i velká písmena a číslice popř. také speciální znaky (např. @, #, $ apod.).
  • Ujistěte se, že je zakázána interaktivní editace pro zavaděče GRUB. Zabráníte tak tomu, aby někdo modifikoval parametry jádra při jeho zavádění a získal tak práva superuživatele. Přečtěte si kapitolu Zakázání interaktivní editace zavaděče GRUB.
  • Ujistěte se, že je zákázáno prohlížení historie v módu konsole - takto lze zabránit, aby bylo možné prohlížet dříve spuštěné příkazy. Přečtěte si kapitolu Zakázání zobrazování historie v konzolovém módu.
  • Ujistěte se, že je zakázána „trojkombinace“ Ctrl+Alt+Del v módu konsole. Zabráníte tak tomu, aby bylo možné restartovat počítač bez potřebných oprávnění. Přečtěte si kapitolu Zakázání restartování počítače pomocí Ctrl+Alt+Del v konzoli.
  • Ujistěte se, že je v konzolovém módu nastaveno vynucené potvrzování pro přesun, přepsání souborů popř. adresářů. Tímto způsobem lze předejít nechtěnému přesunutí nebo přepsání souboru / adresáře. Přečtěte si kapitolu Vynucené potvrzování pro přesun / přepsání souborů a adresářů.
  • Do systému se přihlašujte jako superuživatel pouze v případě, že je to nezbytně nutné. Pro standarní činnost se přihlašujte jako běžný uživatel. Předejte tak nechtěnému smazání / modifikaci systémových souborů a adresářů. Přečtěte si kapitolu Přidání, editace a mazání uživatelů a skupin.
  • Zakažte účet superuživatele a používejte namísto něj příkaz sudo. Tento způsob poskytuje auditní stopu (/var/log/auth.log). Přečtěte si kapitolu Zakázání účtu superuživatele (root).
  • Nainstalujte firewall. Firewall sice nezaručuje absolutní bezpečnost, avšak představuje první linii obrany proti útokům ze sítě. Přečtěte si kapitolu Instalace firewallu (Firestarter) a Otevření/Uzavření portů.
  • Otestujte míru „zranitelnosti“ Vašeho systému. Vynikající aplikací k těmto účelům je Nessus, který provádí řadu testů zaměřených na známé bezpečnostní problémy. Přečtěte si kapitolu Instalace aplikace pro testování bezpečnosti systému (Nessus).
rm -f $HOME/.bash_history
touch $HOME/.bash_history
chmod 000 $HOME/.bash_history

Zazálohujte soubor inittab

cp /etc/inittab /etc/inittab_backup

a otevřete jej pomocí textového editoru

gedit /etc/inittab

V souboru inittab nalezněte řádek

...
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
...

nahraďte ho následujícím řádkem

#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

a uložte soubor. Níže uvedeným příkazem načtěte opětovně soubor inittab.

/sbin/telinit q

Zazálohujte konfigurační soubor bash.bashrc.

cp /etc/bashrc /etc/bashrc_backup

Otevřete tento soubor pomocí

gedit /etc/bashrc

na jeho konec přidejte

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

a soubor uložte.

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.

Následující kapitolu nelze v žádném případě považovat za vyčerpávající pojednání o problematice SELinuxu (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 SELinuxu. Kapitola vznikla na základě následujících článků:

Úvod do teorie

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ů.

SELinux byl vyvinut agenturou NSA (U.S. National Security Agency) 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 - (Linux Security Module). 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 (Discretionary Access Control) mechanismus. Hlavní myšlenka tohoto přístupu spočívá v tom, že každý uživatel má plnou kontrolu nad všemi svými procesy1) a soubory2). 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živatel3). 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 (Mandatory Access Control). 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 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 (Role-Based Access Control). 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 (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).
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 (Multi-Level Security 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

 SELinux

Bezpečnostní omezení daná SELinuxem 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í SELinuxu.

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 politiky 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 politik nevyžaduje. V režimu Zakázán nejsou politiky SELinuxu 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.

Módy SELinuxu 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 SELinuxu 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 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 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

resp.

ps -auxZ

získat pro aktuálně spuštěné procesy podobný výpis

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 adekvátní výpis získat pomocí

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 zjistíte příkazem

/usr/bin/id -Z

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í SELinuxu schází MLS - ta by se nacházela úplně na konci, tj. za typem.

= Typ = Typ je nejdůležitější složkou SELinuxu - 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 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). = Role = 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. 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). = Uživatel = 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 SELinuxu 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 SELinuxem, jestliže se přihlásíte jako superuživatel. Složka uživatel končí na _u (user)4).

Pouze správce SELinuxu může měnit bezpečnostní politiky. Bezpečnostní pravidla jsou pak dána formou matice. Např. 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.

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 SELinuxu 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.

...
SELINUXTYPE=targeted
...

Je tak možné nadefinovat několik bezpečnostních profilů a ty následně měnit podle potřeby5).

Vraťme se zpět k adresáři /etc/selinux/targeted. Tento adresář 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 SELinuxu 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 politiky6). Jedná se tedy z pohledu SELinuxu 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 SELinuxu 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í SELinuxový 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

Poněkud podrobnější nastavení umožňuje sada aplikací setools. Tento balíček aplikací je vyvíjen a udržován firmou Tresys Technology, na jejíž stránkách naleznete také manuál.

yum -y install 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í SELinuxu o porušení bezpečnostních pravidel. Ve případě Fedory Core se standardně jedná o soubor /var/log/messages.

 SELinux Audit Log Analysis

SELinux Policy Analysis umožňuje modifikovat bezpečnostní politiky. To mimojiné znamená, že umožňuje definovat nové typy, role a uživatele.

 SELinux Policy Analysis

Nástroj SELinux Policy Difference umožňuje, jak již název napovídá, porovnávat dvě bezpečnostní politiky.

 SELinux Policy Difference


1)
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.
2)
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.
3)
Velice často se namísto pojmu „superuživatel“ můžete setkat s pojmem „root“. Tyto pojmy jsou ekvivalentní.
4)
Pochopitelně s vyjímkou uživatele root.
5)
Nicméně z logiky věci plyne, že v jeden okamžik může být aktivní pouze jedna politika.
6)
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.
  • Poslední úprava: 2022/11/14 11:09
  • (upraveno mimo DokuWiki)