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
apparmor [2012/07/18 19:33]
Ubuntu
apparmor [2012/08/01 19:11] (aktuální)
Ubuntu
Řádek 1: Řádek 1:
-====== AppArmor ====== +#REDIRECT Bezpečnost/​AppArmor
- +
-{{.:​IconApparmor.png}} **AppArmor** je bezpečnostní software, který vytváří ochrannou vrstvu mezi aplikací a systémem. Tím, že aplikaci přesně v profilu vymezíme, co smí a nesmí dělat, chráníme systém před případným využitím bezpečnostních nebo jiných chyb ještě před tím, než mohou být zjištěny a opraveny v aktualizacích. +
- +
-====== Instalace ====== +
- +
-{{.:​apt.png}} //​AppArmor//​ je již nainstalován a připraven k použití ve výchozí instalaci Ubuntu. Pokud jej náhodou nemáte, [[Instalace programů|nainstalujte]] balíky [[apt://​apparmor|apparmor]] a [[apt://​apparmor-utils|apparmor-utils]]. +
- +
-====== Spuštění ====== +
- +
-{{.:​navigate.png}} //​AppArmor//​ se spouští automaticky při startu systému. Jestli běží a které profily jsou aktivní zjistíte např. v [[Terminál]]u pomocí +
-<​code>​ +
-sudo aa-status +
-</​code>​Ve výchozím nastavení je aktivních jen pár profilů, např. pro [[Evince]] nebo [[cups]]. Do budoucna by jich mělo postupně přibývat. +
- +
-====== Jak to funguje ====== +
-//​AppArmor//​ při startu načte profily (textové soubory s nastavením pro jednotlivé aplikace), které jsou uloženy v adresáři ///​etc/​apparmor.d//​. Pokud při své činnosti daná aplikace překročí limity dané profilem, nebude jí umožněno danou akci provést, a //​AppArmor//​ to zaznamená do logu (ve výchozím nastavení ///​var/​log/​kern.log//​). +
- +
-===== Příklad profilu ===== +
-{{.:​example.png}} Toto je (krácený a zjednodušený) příklad profilu uloženého jako ///​etc/​apparmor.d/​usr.lib.thunderbird.thunderbird-bin//​ +
-<​code>​ +
-/​usr/​lib/​thunderbird-3.0.5/​thunderbird-*bin { +
-  ​[...] +
-  @{PROC}/​filesystems r, +
-  /etc/mtab r, +
-  /​etc/​mime.types r, +
-  /​etc/​mailcap r, +
- +
-  # browsing directories allowed +
-  / r, +
-  /**/ r, +
- +
-  owner @{HOME}/​.thunderbird/​** rw, +
-  owner @{HOME}/​.thunderbird/​*/​.parentlock k, +
-  owner @{HOME}/​.thunderbird/​**/​*.sqlite* k, +
-  owner @{HOME}/​Desktop/​** rw, +
- +
-  # [...] +
-  /​usr/​lib/​thunderbird-3.0.5/​** rw, +
-  /​etc/​thunderbird/​** r, +
-  /​usr/​lib/​thunderbird-3.0.5/​components/​** w, +
- +
-  /​usr/​lib/​gamin/​** rix, +
-  /​usr/​share/​applications/​** r, +
-  /​usr/​share/​mozilla/​extensions/​** r, +
-  /​usr/​lib/​mozilla/​extensions/​** r, +
-  /​usr/​share/​myspell/​** rw, +
-  /​usr/​share/​hunspell/​** rw, +
- +
-  # for PDFs +
-  /​usr/​bin/​evince PUxr, +
- +
-  # Openoffice.org +
-  /​usr/​bin/​ooffice Uxr, +
- +
-  # [...] +
-+
-</​code>​ +
-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,​ jsou tímto možnosti útočníka velmi omezeny. Ostatní aplikace, jako např. Firefox, který je častějším terčem útoků, je možné nastavit podobným způsobem. +
- +
-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 ===== +
-{{.:​example.png}} Výňatek z ///​var/​log/​kern.log//​. +
- +
-Ukazuje neúspěšný (//​denied_mask="​r::"//​) pokus Thunderbirdu (//​profile="/​usr/​lib/​thunderbird-3.0.5/​thunderbird-*bin"//​) o přečtení (//​requested_mask="​r::"//​) uložených hesel v [[Klíčenka|klíčence]] (//​name="/​home/​arrange/​.gnome2/​keyrings/​default.keyring"//​). +
-<​code>​ +
-Jul 27 13:25:20 lucid-lean kernel: [ 8142.886121] type=1503 audit(1280229920.037:​145): ​ operation="​open"​ pid=25252 parent=25209 profile="/​usr/​lib/​thunderbird-3.0.5/​thunderbird-*bin"​ requested_mask="​r::"​ denied_mask="​r::"​ fsuid=1000 ouid=1000 name="/​home/​arrange/​.gnome2/​keyrings/​default.keyring"​ +
-</​code>​ +
-{{.:​tip.png}} Tip: výpisy je možné sledovat pomocí [[Sledování systému#​Zobrazení systémových protokolů|grafického prohlížeče logů]], nebo si [[Instalace programů|nainstalujte]] balík [[apt://​apparmor-notify|apparmor-notify]]. Po restartu budete o hláškách //​AppArmoru// ​ automaticky informováni systémovou notifikací vpravo nahoře. +
- +
-{{.:​apparmor-notify.png}} +
- +
-====== 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 "​bezpečném módu" a sledovat, co dělají (viz třeba Odkazy - "​restrikce viru"​) +
- +
-===== 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í "​naklikat"​) +
-  * 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í ====== +
- +
-{{.:​clear.png}} [[Instalace programů|Odeberte]] balík ''​apparmor''​. +
- +
-====== Odkazy ====== +
-  * [[https://​wiki.ubuntu.com/AppArmor|Ubuntu stránky o programu]] {{.:​en.png}} +
-  * [[http://​www.zive.cz/​clanky/​novell-uvolnuje-bezpecnostni-reseni-apparmor-pro-linux-jako-open-source/​sc-3-a-128537/​default.aspx|článek,​ který obsahuje i stručný popis aplikace v češtině]] {{.:​cz.png}} +
-  * [[http://​ubuntuforums.org/​showthread.php?​t=1008906|hrátky s AppArmor na ubuntuforums.org od bodhi.zazen]] {{.:​en.png}} +
-  * [[http://​www.linuxtopia.org/​online_books/​opensuse_guides/​apparmor_guide/​index.html|zevrubná dokumentace z dílny OpenSUSE]] {{.:​en.png}} +
-  * [[http://​www.youtube.com/​watch?​v=kn3T7slnsH0|ukázka využití AppArmoru při restrikci viru - video]] {{.:​cz.png}} +
- +
-====== Technické detaily ====== +
- +
-===== Dostupné příkazy ===== +
- +
-==== aa-status ==== +
-<​code>​ +
-arrange@lucid-lean:​~$ sudo aa-status +
-[sudo] password for arrange: +
-apparmor module is loaded. +
-14 profiles are loaded. +
-12 profiles are in enforce mode. +
-   /​etc/​cron.daily/​logrotate +
-   /​sbin/​dhclient3 +
-   /​usr/​bin/​evince +
-   /​usr/​bin/​evince-previewer +
-   /​usr/​bin/​evince-thumbnailer +
-   /​usr/​bin/​passwd +
-   /​usr/​lib/​NetworkManager/​nm-dhcp-client.action +
-   /​usr/​lib/​connman/​scripts/​dhclient-script +
-   /​usr/​lib/​cups/​backend/​cups-pdf +
-   /​usr/​lib/​firefox-3.6.7/​firefox-*bin +
-   /​usr/​lib/​thunderbird-3.0.5/​thunderbird-*bin +
-   /​usr/​sbin/​cupsd +
-2 profiles are in complain mode. +
-   /​usr/​bin/​skype +
-   /​usr/​bin/​transmission +
-4 processes have profiles defined. +
-4 processes are in enforce mode : +
-   /​sbin/​dhclient3 (701) +
-   /​usr/​lib/​firefox-3.6.7/​firefox-*bin (1504) +
-   /​usr/​lib/​firefox-3.6.7/​firefox-*bin (1902) +
-   /​usr/​sbin/​cupsd (1041) +
-0 processes are in complain mode. +
-0 processes are unconfined but have a profile defined. +
-</​code>​ +
- +
-  * //​AppArmor//​ je aktivní +
-  * existuje 14 profilů, 2 z nich jsou v módu //​complain//​ (tréninkový mód - AA zapisuje do logů, ale aplikaci neomezuje - užitečné při tvorbě profilů) +
-  * 4 profily mají odpovídající běžící proces +
- +
-==== apparmor_parser ==== +
-<​code>​ +
-sudo apparmor_parser -r -T -W /​etc/​apparmor.d/​usr.bin.firefox +
-</​code>​Přehraje původní nastavení profilu novým (**-r** - //reload//) bez toho, že bychom museli restartovat celý //​AppArmor//​. Užitečné při tvorbě profilu a jeho úpravách. +
- +
-<​code>​ +
-sudo apparmor_parser -R /​etc/​apparmor.d/​usr.bin.skype +
-</​code>​Vymaže profil z modulu v kernelu, takže již není aktivní. Pokud se chcete profilu zbavit úplně, vymažte jej pak i z adresáře ///​etc/​apparmor.d//​. +
- +
-===== Syntax profilového souboru ===== +
- +
-Prázdné řádky a řádky začínající na **#** jsou ignorovány (kromě ''#​include*''​ - viz níže). +
- +
-==== Include ==== +
- +
-Do profilu je možné přidat pomocí ''​include''​ již hotové profily, které najdete v ///​etc/​apparmor.d//​. +
-<​code>​ +
-#include <​tunables/​global>​ +
-#include <​abstractions/​base>​ +
-</​code>​V prvním případě do profilu zahrnete základní proměnné (např. ''​@{HOME}''​ a ''​@{PROC}''​),​ v druhém základní profil, který využije téměř každý program (přístup k ''/​etc/​ld.so.cache'',​ ''/​dev/​null''​ apod). +
- +
-==== Nastavení cest a zástupných znaků ==== +
- +
-//​AppArmor//​ rozlišuje soubory a adresáře: adresář končí vždy na **/**, tzn., že ''/​etc/​apparmor != /​etc/​apparmor/''​. +
- +
-**∗** ​ - zástupný znak pro libovolný počet jakýchkoliv znaků kromě ⁄ +
- +
-**∗∗** - 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 +
- +
-%%/​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í (//​append//​) dat (nelze použít zároveň s //w//) +
- +
-**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 (''​mmap(2)'',​ ''​PROT_EXEC flag''​) +
- +
-**l** +
- +
-vytváření pevných odkazů (//​hardlink//​) +
- +
-==== Sítě ==== +
- +
-''​network [[<​domain>​][<​type>​][<​protocol>​]]''​ +
- +
-''​domain''​ může být typu: ''​inet,​ ax25, ipx, appletalk, netrom, bridge, x25, inet6, rose, netbeui, security, key, packet, ash, econet, atmsvc, sna, irda, pppox, wanpipe, bluetooth''​ +
- +
-''​type'':​ ''​stream,​ dgram, seqpacket, rdm, raw, packet''​ +
- +
-''​protocol'':​ ''​tcp,​ udp, icmp''​ +
- +
-=== Příklady použití === +
-<​code>​ +
-network, +
-network inet, +
-network inet stream, +
-network inet tcp, +
-network tcp, +
-</​code>​ +
- +
-  * 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 +
-<​code>​ +
-owner /home/*/** rw, +
-/home/*/foo rw, +
-</​code>​V prvém případě je přístup povolen jen pro vlastní soubory, v druhém i pro soubor, který vlastní někdo jiný. +
- +
-=== audit === +
-zapíše zprávu do logu v každém případě, ne jen tehdy, pokud došlo k zákazu přístupu +
-<​code>​ +
-audit /etc/shadow w, +
-/etc/shadow r, +
-</​code>​Můžeme vždy v logu zkontrolovat otevření souboru ///​etc/​shadow//​ pro zápis. +
- +
-=== 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 +
- +
-<​code>​ +
-@{HOME}/** rw, +
-deny @{HOME}/​.ssh/​** rw, +
-</​code>​Povolí čtení a zápis v celém domovském adresáři kromě //​~/​.ssh//​. +
-=== capability === +
-viz ''​man capabilities''​ +
-<​code>​ +
-capability chown +
-</​code>​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 //​type=1503//​ - DENIED (přístup odepřen). +
-  * 1501 - AUDIT - záznamy související s příkazem ''​audit''​ +
-  * 1502 - ALLOWED - povoleno +
-  * 1503 - DENIED - zakázáno +
-  * 1504 - HINT - informace k procesu +
-  * 1505 - STATUS - změny v konfiguraci +
-  * 1506 - ERROR - vnitřní chyba //​AppArmor//​+
  
  • Poslední úprava: 2012/08/01 19:11
  • autor: Ubuntu