AppArmor je implementácia bezpečnostného modulu Linuxu (Linux Security Module) riadenia prístupu na základe mandátov založených na menách. AppArmor zabraňuje jednotlivým programom meniť súbory, ktoré sú definované v zozname dokumentu posix 1003.1e.
AppArmor sa nainštaluje spolu so systémom a hneď sa aj aktivuje. Používa profily aplikácií, aby určil, ktoré súbory a s akými právami daná aplikácia vyžaduje. Niektoré balíky nainštalujú svoje vlastné profily a niektoré ďalšie dodatočné profily sa nachádzajú v balíku apparmor-profiles.
Ak chceme nainštalovať balík apparmor-profiles, do príkazového riadka zadáme:
sudo apt-get install apparmor-profiles
Profily AppArmor majú dva módy spustenia:
Upozorňovací/Učiaci: umožňuje porušiť pravidlá v profile, porušenia sú však zaznamenané. Toto je užitočné pri testovaní a tvorbe nových profilov.
Prinucovací/Zákazový: striktne presadzuje politiku profilu a pokus o jej porušenie zaznamená.
Balík apparmor-utils obsahuje nástroje pre príkazový riadok, ktorými môžeme pre AppArmor zmeniť mód spustenia, nájsť stav profilu, vytvoriť nové profily, atď.
apparmor_status sa používa na zobrazenie aktuálneho stavu profilov AppArmor.
sudo apparmor_status
aa-complain prepne profil do upozorňovacieho módu.
sudo aa-complain /cesta/k/programu
aa-enforce prepne profil do prinucovacieho módu.
sudo aa-enforce /cesta/k/programu
Profily AppArmor sa nachádzajú v priečinku /etc/apparmor.d
. Tento priečinok môžeme použiť na zmenu módu všetkých profilov naraz.
Ak chceme všetky profily naraz prepnúť do upozorňovacieho módu, zadáme:
sudo aa-complain /etc/apparmor.d/*
Keby sme ich chceli prepnúť do prinucovacieho módu, zadáme:
sudo aa-enforce /etc/apparmor.d/*
apparmor_parser sa používa na načítanie profilu do jadra. Môžeme ho použiť aj na obnovenie už načítaných profilov použitím prepínača -r. Profil načítame takto:
cat /etc/apparmor.d/neno.profilu | sudo apparmor_parser -a
Obnovenie profilu urobíme takto:
cat /etc/apparmor.d/meno.profilu | sudo apparmor_parser -r
/etc/init.d/apparmor
môže byť použitý na obnovenie všetkých profilov:
sudo /etc/init.d/apparmor reload
Priečinok /etc/apparmor.d/disable
môže byť použitý pomocou príkazu apparmor_parser -R
na vypnutie profilu.
sudo ln -s /etc/apparmor.d/meno.profilu /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/meno.profilu
Ak chceme znova zapnúť vypnutý profil, odstránime symbolické prepojenie na profil v
/etc/apparmor.d/disable/
. Potom načítame profil spolu s prepínačom -a.
sudo rm /etc/apparmor.d/disable/meno.profilu
cat /etc/apparmor.d/meno.profilu | sudo apparmor_parser -a
AppArmor môžeme vypnúť a zrušiť aj načítanie modulu jadra zadaním príkazu:
sudo /etc/init.d/apparmor stop
sudo update-rc.d -f apparmor remove
Ak chceme znova obnoviť AppArmor, zadáme:
sudo /etc/init.d/apparmor start
sudo update-rc.d apparmor defaults
![]() |
Spojenie meno.profilu nahraďte menom profilu, s ktorým chcete manipulovať. Nahraďte tiež cestu
|
---|---|
Profily AppArmor sú jednoduché textové súbory umiestnené v priečinku /etc/apparmor.d/
. Súbory sú nazvané podľa celej cesty k spustiteľnému súboru pričom znak "/" je nahradený znakom ".". Napríklad /etc/apparmor.d/bin.ping
je AppArmor profil pre príkaz /bin/ping
.
Existujú dva hlavné typy pravidiel použitých v profiloch:
Záznamy ciest: hovoria, ku ktorým súborom aplikácie je možné pristupovať v súborovom systéme.
Capability entries: určujú, aké právomoci budú môcť použiť neoprávnené procesy.
Napríklad sa môžeme pozrieť na profil /etc/apparmor.d/bin.ping
:
#include <tunables/global>
/bin/ping flags=(complain) {
#include <abstractions/base>
#include <abstractions/consoles>
#include <abstractions/nameservice>
capability net_raw,
capability setuid,
network inet raw,
/bin/ping mixr,
/etc/modules.conf r,
}
#include <tunables/global>: príkaz include znamená začleniť z iných súborov. Tento umožňuje nastaviť chovanie viacerých aplikácií, ktoré nastavíme v spoločnom súbore.
/bin/ping flags=(complain): cesta k profilovanému programu a nastavenie upozorňovacieho módu.
capability net_raw,: umožňuje aplikáciám pristupovať k funkcionalite CAP_NET_RAW Posix.1e.
/bin/ping mixr,: umožňuje aplikáciám čítať a spúšťať súbor.
![]() |
Ak upravíte profil, musíte ho znova načítať. Viac informácii sa dozviete v časti “Použitie AppArmor”. |
---|---|
Návrh testovacieho plánu: Skúsme porozmýšlať, ako by aplikácia mala byť spúšťaná. Testovací plán si rozdelíme na malé testovacie prípady. Každý testovací prípad by mal mať krátky opis a zoznam krokov podobných týmto.
Niektoré štandardné testovacie prípady sú:
Štartovanie programu.
Vypínanie programu.
Obnovenie programu.
Testovanie všetkých príkazov, ktoré podporuje init skript.
Generovanie nového profilu: Na vygenerovanie nového profilu použijem nástroj aa-genprof. Do príkazového riadka zadáme:
sudo aa-genprof program
Napríklad:
sudo aa-genprof slapd
Ak chceme náš nový profil začleniť do balíka apparmor-profiles, súbor odošleme ako chybové hlásenie k balíku AppArmor do systému Launchpad:
Napíšeme testovací plán a testovacie prípady.
Pripojíme nový profil k hláseniu o chybe.
Keď sa program nespráva tak ako by sa mal, odošle sa správa do log súborov. Na hľadanie v súboroch so záznamami AppArmor môžeme použiť nástroj aa-logprof, prezrieť si ich a aktualizovať profily. Do príkazového riadka zadáme:
sudo aa-logprof