В Unix мандатные механизмы разграничения являются дополнительными и активируются по желанию пользователя или дистрибьютора. Так, например, в Ubuntu Unux по умолчанию устанавливается и активируется модуль принудительного разграничения доступа apparmor.
Модуль W: [АppАrmor] имеет некоторое количество готовых к употреблению наборов мандатных правил (называемых профилями) для ограничения (англ, confine) доступа субъектов — программ к объектам операционной системы — файлам, сетевым протоколам, портам TCP/UDP и пр.
Правила АppАrmor идентифицируют программы и файлы на основе их полных путевых имен.
При этом каждый профиль описывает ограничения для одной определенной запускаемой программы (а так же для других, запускаемых этой программой, т. е. «подчиненных» программ), а программы, для которых профили не определены, никак не ограничиваются (англ, uniconfined).
В примере из листинга ниже проиллюстрировано использование команды aa-status, показывающей статус модуля принудительного контроля доступа АppАrmor.
В распоряжении модуля имеется профиль программы skype в режиме принуждения (enforce) и профиль в программы firefox в режиме оповещения (complain).
Более того, процесс skype с идентификатором зет принуждается (enforce) модулем контроля к выполнению правил профиля, а процесс ftrefox с идентификатором 10335 только отслеживается (complain) на предмет нарушений правил.
Модуль мандатного разграничения доступа АppАrmor
john@ubuntu:-*$ sudo aa-status
apparmor module is loaded.
50 profiles are loaded.
26 profiles are in enforce mode.
/usr/bin/skype
. . . . . . . . .
24 profiles are in complain mode.
. . . . . . . . .
/usr/lib/firefox/firefox{,*[^s][^h]}
. . . . . . . . .
18 processes have profiles defined.
3 processes are in enforce mode.
. . . . . . . . .
/usr/bin/skype (30173)
6 processes are in complain mode.
/usr/lib/firefox/firefox{,*[^s][^h]} (10335)
. . . . . . . . .
processes are unconfined but have a profile defined.
Нарушения мандатных правил процессами, находящимися в режиме оповещения (complain), приводят только к журналированию сообщений аудита об обнаруженных нарушениях.
Попытки нарушения мандатных правил процессами, находящимися в режиме принуждения (enforce), пресекаются модулем контроля доступа в виде отказа в доступе к тому или иному запрашиваемому объекту.
Выполненный при помощи команды apparmor_parser анализ полного (-p) набора правил профиля программы /usr/bin/firefox показывает, что обращения к любым файлам каталога .ssh явно запрещены указанием deny и подлежат обязательному аудиту согласно указанию audit.
При помощи команды aa-enforce профиль переводится в режим enforce, в результате чего доступ firefox к ключам пользователя оказывается запрещенным.
Мандатные правила профиля firefox
john@ubuntu:~$ apparmor_parser -p /etc/apparmor.d/usr.bin.firefox
. . . . . . . . . . . . . . .
john@ubuntu:~$ apparmor.parser -p /etc/apparmor.d/usr.bin.firefox
. . . . . . . . . . . . . . .
audit deny @{H0ME}/.ssh/** mrwkl,
. . . . . . . . . . . . . . .
john@ubuntu:~$ firefox ~/.ssh/id_rsa
——BEGIN RSA PRIVATE KEY——
. . . . . . . . . . . . . . .
——END RSA PRIVATE KEY ——
johnn@ubuntu:~$ sudo aa-enforce firefox
Setting /etc/apparmor.d/usr.bin.firefox to enforce mode.
john@ubuntu:~$ firefox ~/.ssh/id_rsa
Стоит отметить, что команды aa-enforce и aa-status выполняются от лица суперпользователя, единолично управляющего модулем принудительного контроля доступа AppArmor, но детальное рассмотрение синтаксиса правил и процедур управления модулем относится к задачам администрирования операционной системы, которые выходят за рамки этой статьи.