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 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 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 (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 (v terminologii SELinuxu 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 SELinuxu je výše popsaný proces nazýván jako TE (Type Enforcement).
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.

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

Jednotlivé 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 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

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

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

 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í.
  • Poslední úprava: 2022/11/14 11:09
  • (upraveno mimo DokuWiki)