Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
bezpečnost:apparmor [2012/08/01 19:13] – vytvořeno ubuntu | bezpečnost:apparmor [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== AppArmor ====== | ||
+ | {{.: | ||
+ | |||
+ | ====== Instalace ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ====== Spuštění ====== | ||
+ | |||
+ | {{: | ||
+ | < | ||
+ | sudo aa-status | ||
+ | </ | ||
+ | |||
+ | ====== Jak to funguje ====== | ||
+ | // | ||
+ | |||
+ | ===== Příklad profilu ===== | ||
+ | {{.: | ||
+ | < | ||
+ | / | ||
+ | # [...] | ||
+ | @{PROC}/ | ||
+ | /etc/mtab r, | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # browsing directories allowed | ||
+ | / r, | ||
+ | /**/ r, | ||
+ | |||
+ | owner @{HOME}/ | ||
+ | owner @{HOME}/ | ||
+ | owner @{HOME}/ | ||
+ | owner @{HOME}/ | ||
+ | |||
+ | # [...] | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # for PDFs | ||
+ | / | ||
+ | |||
+ | # Openoffice.org | ||
+ | / | ||
+ | |||
+ | # [...] | ||
+ | } | ||
+ | </ | ||
+ | Pokud je tento profil aktivní, Thunderbird může pouze | ||
+ | * číst (**r**) základní systémové soubory v ///etc// a ///proc// a procházet adresáře, | ||
+ | * zapisovat a číst (**rw**) do vlastních adresářů a na plochu, | ||
+ | * spouštět (**x**) pouze aplikace nutné k chodu nebo otevření přílohy. | ||
+ | |||
+ | Vše ostatní je zakázáno. Pokud je útok na systém veden přes kompromitaci Thunderbirdu, | ||
+ | |||
+ | Na druhou stranu je patrné, že každá zvýšená bezpečnost s sebou může přinést nižší komfort pro uživatele. Např. v případě instalace nestandardního doplňku může být potřeba ručně doplnit profil. Z tohoto důvodu jsou nové profily zaváděny velmi pomalu a s relativně volnými omezeními, což je ovšem vždy bezpečnější než aplikace bez profilu. | ||
+ | |||
+ | ===== Příklad záznamu do logu ===== | ||
+ | {{: | ||
+ | |||
+ | Ukazuje neúspěšný (// | ||
+ | < | ||
+ | Jul 27 13:25:20 lucid-lean kernel: [ 8142.886121] type=1503 audit(1280229920.037: | ||
+ | </ | ||
+ | {{: | ||
+ | |||
+ | {{ .: | ||
+ | |||
+ | ====== Doplňkové informace ====== | ||
+ | |||
+ | ===== Výhody ===== | ||
+ | |||
+ | * vynikající způsob aktivní ochrany před napadením | ||
+ | * relativně jednoduchá administrace (pro mírně pokročilého uživatele) | ||
+ | * možnost měnit profil za běhu systému i programu (ručně) | ||
+ | * možnost spouštět neznámé programy v " | ||
+ | |||
+ | ===== Nevýhody ===== | ||
+ | |||
+ | * obtížný pro začátečníka - pokud něco nefunguje, může být těžké nalézt příčinu | ||
+ | * menší uživatelská přívětivost - občas může být potřeba aktualizovat profil | ||
+ | * v Ubuntu neexistuje grafická nadstavba (aplikace, kde by se dalo nastavení " | ||
+ | * nenabízí samo možnosti při běhu programu - vždy je potřeba se podívat do logů a upravit profil //ex post// | ||
+ | |||
+ | ===== Alternativy ===== | ||
+ | |||
+ | * [[SELinux]] | ||
+ | |||
+ | |||
+ | ====== Odstranění ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ====== Odkazy ====== | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ====== Technické detaily ====== | ||
+ | |||
+ | ===== Dostupné příkazy ===== | ||
+ | |||
+ | ==== aa-status ==== | ||
+ | < | ||
+ | arrange@lucid-lean: | ||
+ | [sudo] password for arrange: | ||
+ | apparmor module is loaded. | ||
+ | 14 profiles are loaded. | ||
+ | 12 profiles are in enforce mode. | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | 2 profiles are in complain mode. | ||
+ | / | ||
+ | / | ||
+ | 4 processes have profiles defined. | ||
+ | 4 processes are in enforce mode : | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | 0 processes are in complain mode. | ||
+ | 0 processes are unconfined but have a profile defined. | ||
+ | </ | ||
+ | |||
+ | * // | ||
+ | * existuje 14 profilů, 2 z nich jsou v módu // | ||
+ | * 4 profily mají odpovídající běžící proces | ||
+ | |||
+ | ==== apparmor_parser ==== | ||
+ | < | ||
+ | sudo apparmor_parser -r -T -W / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | sudo apparmor_parser -R / | ||
+ | </ | ||
+ | |||
+ | ===== Syntax profilového souboru ===== | ||
+ | |||
+ | Prázdné řádky a řádky začínající na **#** jsou ignorovány (kromě ''# | ||
+ | |||
+ | ==== Include ==== | ||
+ | |||
+ | Do profilu je možné přidat pomocí '' | ||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | </ | ||
+ | |||
+ | ==== Nastavení cest a zástupných znaků ==== | ||
+ | |||
+ | // | ||
+ | |||
+ | **∗** | ||
+ | |||
+ | **∗∗** - zástupný znak pro libovolný počet jakýchkoliv znaků **včetně** | ||
+ | |||
+ | **?** - zástupný znak pro libovolný jeden znak kromě ⁄ | ||
+ | |||
+ | === Příklady === | ||
+ | %%/tmp/*%% | ||
+ | |||
+ | soubory přímo v adresáři /tmp | ||
+ | |||
+ | %%/tmp/*/%% | ||
+ | |||
+ | adresáře přímo v adresáři /tmp | ||
+ | |||
+ | %%/tmp/**%% | ||
+ | |||
+ | vše (=adresáře i soubory) v libovolné hloubce pod /tmp | ||
+ | |||
+ | %%/ | ||
+ | |||
+ | adresáře (pouze) v libovolné hloubce pod /tmp | ||
+ | |||
+ | |||
+ | ==== Nastavení přístupových práv ==== | ||
+ | |||
+ | **r** | ||
+ | |||
+ | čtení | ||
+ | |||
+ | **w** | ||
+ | |||
+ | zápis (nelze použít zároveň s //a//) | ||
+ | |||
+ | **a** | ||
+ | |||
+ | připojení (// | ||
+ | |||
+ | **k** | ||
+ | |||
+ | zamknutí (//lock//) souboru | ||
+ | |||
+ | **px** | ||
+ | |||
+ | spuštění programu, ale jen v případě, že má aktivní profil (v opačném případě je spuštění zakázáno). Předává systémové proměnné. | ||
+ | |||
+ | **Px** | ||
+ | |||
+ | stejně jako //px//, ale nepředává systémové proměnné | ||
+ | |||
+ | **ux** | ||
+ | |||
+ | bezpodmínečné spuštění programu, předává proměnné | ||
+ | |||
+ | **Ux** | ||
+ | |||
+ | bezpodmínečné spuštění programu, nepředává proměnné | ||
+ | |||
+ | **ix** | ||
+ | |||
+ | spuštění programu ve stejném prostředí a se stejnými omezeními jaké má původní program | ||
+ | |||
+ | **m** | ||
+ | |||
+ | umožňuje mapovat spustitelná data do paměti ('' | ||
+ | |||
+ | **l** | ||
+ | |||
+ | vytváření pevných odkazů (// | ||
+ | |||
+ | ==== Sítě ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | === Příklady použití === | ||
+ | < | ||
+ | network, | ||
+ | network inet, | ||
+ | network inet stream, | ||
+ | network inet tcp, | ||
+ | network tcp, | ||
+ | </ | ||
+ | |||
+ | * povolí veškerou síťovou komunikaci | ||
+ | * povolí veškerou síťovou komunikaci protokolu IPv4 | ||
+ | * povolí síťovou komunikaci IPv4 přes TCP | ||
+ | * totéž co v předchozím | ||
+ | * povolí TCP komunikaci přes IPv4 i IPv6. | ||
+ | |||
+ | ==== Další příkazy ==== | ||
+ | === owner === | ||
+ | |||
+ | povolí přístup jen tehdy, pokud je uživatel zároveň vlastníkem souboru | ||
+ | < | ||
+ | owner /home/*/** rw, | ||
+ | /home/*/foo rw, | ||
+ | </ | ||
+ | |||
+ | === audit === | ||
+ | zapíše zprávu do logu v každém případě, ne jen tehdy, pokud došlo k zákazu přístupu | ||
+ | < | ||
+ | audit /etc/shadow w, | ||
+ | /etc/shadow r, | ||
+ | </ | ||
+ | |||
+ | === deny === | ||
+ | zakáže určitou činnost. To je užitečné v případě, že potřebujete | ||
+ | * něco zakázat, a přitom nechcete, aby se zpráva o tom pořád vyskytovala v logu (zakáže, ale potlačí zprávu) | ||
+ | * vymezit konkrétní zakázanou oblast v širším pravidle | ||
+ | |||
+ | < | ||
+ | @{HOME}/** rw, | ||
+ | deny @{HOME}/ | ||
+ | </ | ||
+ | Povolí čtení a zápis v celém domovském adresáři kromě //~/.ssh//. | ||
+ | === capability === | ||
+ | viz '' | ||
+ | < | ||
+ | capability chown | ||
+ | </ | ||
+ | Může měnit UID a GID. | ||
+ | |||
+ | ===== Záznamy v logu ===== | ||
+ | |||
+ | ==== type ==== | ||
+ | Proměnná //type// může nabývat hodnot 1501-1506. Nejběžnější je // | ||
+ | * 1501 - AUDIT - záznamy související s příkazem '' | ||
+ | * 1502 - ALLOWED - povoleno | ||
+ | * 1503 - DENIED - zakázáno | ||
+ | * 1504 - HINT - informace k procesu | ||
+ | * 1505 - STATUS - změny v konfiguraci | ||
+ | * 1506 - ERROR - vnitřní chyba // |