Докато ядрото на Linux осигурява добра изолация на потребителите и силен контрол на разрешенията на файлове, MAC като AppArmor предоставя по-фино разрешени разрешения и защита срещу много неизвестни заплахи. Ако в ядрото на Linux или друг демон на системата бъде открита уязвимост на защитата, добре конфигурираната система AppArmor може да предотврати достъпа до критични пътища, които могат да бъдат уязвими за проблема.
AppArmor може да работи ефективно в два режима - налагане и оплакване. Enforce е производственият статус по подразбиране на AppArmor, докато оплакването е полезно за разработване на набор от правила, базирани на реални модели на работа и за регистриране на нарушения. Той е конфигуриран чрез обикновени текстови файлове в относително удобен формат и има по-къса крива на обучение от повечето други задължителни системи за контрол на достъпа.
Инсталация
За да инсталирате AppArmor на Debian, стартирайте (като root):
apt install apparmor apparmor-utils auditdМожете да пропуснете auditd, ако не се нуждаете от инструменти за генериране на профили.
Ако искате да инсталирате стартер и допълнителни профили, изпълнете:
apt инсталиране на apparmor-профили apparmor-профили-екстраТъй като AppArmor е модул на ядрото на Linux, трябва да го активирате със следните команди:
mkdir -p / etc / default / grub.дСъздайте файла / etc / default / grub.г / apparmor.cfg със следното съдържание:
GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 1 сигурност = apparmor"Запазете и излезте, след което изпълнете:
update-grubСлед това рестартирайте.
Има дебат дали това трябва да се направи автоматично. Може да поискате да се консултирате с края на този доклад за грешка, за да видите дали това е променено от времето на писането.
След като рестартирате, можете да проверите дали AppArmor е активиран, като стартирате:
aa-статусТази команда ще изброи заредените профили на AppArmor и текущото им състояние на съответствие (принудително, оплакване и т.н.)
Ако изпълните:
ps auxZ | grep -v '^ неограничен'Ще видите списък с програми, които са ограничени от профил на AppArmor. Ограничената програма е тази, която е засегната и ограничена (или пасивно, в режим на оплакване, или активно в принудителен режим) от AppArmor.
Промяна на режими / деактивиране на AppArmor
Ако искате да деактивирате AppArmor, защото дадена програма не работи, може да помислите за поставяне на профила в режим на оплакване вместо принудителен режим. За да направите това, стартирайте (като root или чрез sudo):
aa-оплакване / път / към / програмаНапример, ако ping не работи правилно, използвайте:
aa-оплакване / usr / bin / pingСлед като даден профил е в режим на оплакване, можете да разгледате регистрирането чрез / var / log / syslog или с journalctl -xe на systemd системи (Debian 8.x, Jessie и по-висока).
След като редактирате профила, за да премахнете или коригирате ограничението, можете отново да включите режима за налагане на двоичния файл с:
aa-налагане / път / към / програмаВ горния пример заменете / path / to / program с пълния път към двоичния файл, засегнат от въпросния профил.
Ако имате проблем с програма и тя е в режим на оплакване, дневниците ще предоставят конкретна информация за това, което действие е отказано. Полето на операцията ще обясни какво се е опитала да направи програмата, полето на профила, конкретният засегнат профил, името ще посочи целта на действието (i.д. какъв файл е спрян от операция за четене или запис), а заявените и отказани маски показват дали операцията, както поискана от програмата, така и отказана по профил, е била четена или четена-записвана.
Можете да деактивирате изцяло профил, като изпълните:
aa-disable / path / to / programИли можете да деактивирате AppArmor напълно, като редактирате файла: / etc / default / grub.г / apparmor.cfg да съдържа:
GRUB_CMDLINE_LINUX_DEFAULT = ”$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 0”След това се изпълнява:
update-grubИ рестартиране на вашата система.
Работа с AppArmor профили
Профилите на AppArmor се намират в / etc / apparmor.г / директория. Ако инсталирате пакета apparmor-profile и apparmor-profiles-extra пакети, ще намерите профили в / usr / share / doc / apparmor-profile и / usr / share / doc / apparmor-profile / extra. За да ги активирате, копирайте файловете в / etc / apparmor.d след това ги редактирайте, за да сте сигурни, че съдържат стойностите, които искате, запазете и след това изпълнете:
презареждане на услугата apparmorАко искате да презаредите само един профил, изпълнете:
apparmor_parser -r / etc / apparmor.г / профилКъдето „профил“ е името на въпросния профил.
Не се препоръчва просто да копирате профилите и допълнителните профили в / etc / apparmor.d директория, без да ги редактирате ръчно. Някои профили може да са стари, а някои със сигурност няма да съдържат стойностите, които искате. Ако все пак ги копирате, поне ги настройте да се оплакват, за да можете да наблюдавате нарушения, без да нарушавате производствени програми:
cd / etc / apparmor.дза f в *.*; направете жалба / etc / apparmor.г / $ е; Свършен
Можете да използвате командата aa-prince поотделно, за да активирате профили, които искате да запазите, да настроите тези, които причиняват проблеми, и да наложите тези, или да премахнете тези, които не са ви необходими, като изпълните aa-disable или премахнете файла на профила от / etc / apparmor.д.
Създаване на AppArmor профил
Преди да създадете потребителски профил, ще искате да потърсите в / etc / apparmor.d и / usr / share / doc / apparmor-profile директории за съществуващ профил, който покрива въпросния двоичен файл. За да ги търсите, изпълнете:
find / usr / share / doc / apparmor-profile | grep “програма” -iСменете програма с програмата, която искате да защитите с AppArmor. Ако го намерите, копирайте го в / etc / apparmor.d и след това редактирайте файла в любимия си текстов редактор.
Всеки профил се състои от три основни раздела: включва, възможности и пътища. Можете да намерите полезна справка в документацията на SuSE.
Включва
Включва предоставя синтаксис, който можете да използвате във файла. Те използват синтаксиса C / C ++ #include <> и обикновено се позовават на абстракции, намерени в / etc / apparmor.г / директория за абстракции.
Възможности
Разделът за възможности, който обикновено се намира след включването, изброява конкретни възможности, които програмата може да изпълни. Например можете да позволите на програма да извърши настройка на операция с:
способност setuidВъзможността net_bind_service позволява на програмата да се свързва с мрежов порт. Ако не предоставите това, демон на сървър като Apache не може да отвори порт 80 и да слуша. Пропускането на тази възможност обаче може да осигури отлична сигурност за процеси, на които нямате доверие в мрежата.
Пътеки
Можете да изброите пътища, които програмата може да прочете (и евентуално да напише). Например, ако искате да разрешите на програмата достъп до файла / etc / passwd, добавете:
/ etc / passwd rВ профила. Обърнете внимание на „r“ - това означава само за четене. Ако промените това на „w“, ще бъде разрешено писането по този път или файл.
Дори ако разрешите път в AppArmor, той все още е обект на ограничения на файловата система на Linux (т.е.д. комплект с chmod, chgrp и chown). Въпреки това, AppArmor все пак ще осигури допълнителен слой защита, ако тези механизми бъдат компрометирани.
Заключение
Ключът към успешното внедряване на AppArmor е да зададете профили, които да се оплакват, след което да налагат. Внимателният преглед на регистрационния файл ще ви даде минималните пътища и възможности, необходими за успешната работа на програмата. Присвоявайки тези и не повече, вие значително ще увеличите сигурността на вашата система.