AppArmor является мандатной системой контроля доступа или MAC.
Он использует модуль безопасности Linux для ограничения программ.
AppArmor создает набор профилей приложений по умолчанию для защиты сервисов Linux.
Вы также можете защитить любые другие приложения, запущенные в вашей системе, самостоятельно создав файлы профилей.
В Ubuntu приложение AppArmor установлено и включено по умолчанию.
Профили apparmor загружаются при запуске системы.
AppArmor работает в следующих двух типах режимов профиля:
- Enforce – В режиме Enforce система начинает применять правила и сообщать о попытках нарушения в syslog или auditd (только если auditd установлен), и операция не будет разрешена.
- Complain – режиме Complain система не применяет никаких правил. Она будет только регистрировать попытки нарушения.
Дополнительные профили можно найти в пакете apparmor-profiles.
Просмотр статуса Apparmor
Вы можете просмотреть текущее состояние apparmor и всех загруженных профилей, как показано ниже:
$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 5 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/mysqld /usr/sbin/tcpdump 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode. /sbin/dhclient (585) /usr/sbin/mysqld (799) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
Если мы проверим вышеприведенный вывод, мы увидим, что 5 профилей находятся в режиме Enforce.
Он также указывает на то, что в настоящее время выполняются два процесса в режиме принудительного исполнения (из-за профилей).
Например, /sbin/dhclient с PID 585 работает в режиме enforce
Изменить режим профиля
Чтобы установить профиль в режиме complain, сначала установите пакет apparmor-utils, если он еще не установлен.
apt-get install apparmor-utils
Используйте команду aa-complain, чтобы настроить профиль в режиме complain.
Например, для включения режима complain для mysqld выполните следующие действия.
$ sudo aa-complain /usr/sbin/mysqld Setting /usr/sbin/mysqld to complain mode.
Теперь, когда вы выполните apparmor_status, вы увидите mysqld в режиме complain
$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 4 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/tcpdump 1 profiles are in complain mode. /usr/sbin/mysqld 2 processes have profiles defined. 1 processes are in enforce mode. /sbin/dhclient (585) 1 processes are in complain mode. /usr/sbin/mysqld (799) 0 processes are unconfined but have a profile defined.
Вы можете изменить профиль обратно в режим enforce, используя команду aa-enforce, как показано ниже.
$ sudo aa-enforce /usr/sbin/mysqld Setting /usr/sbin/mysqld to enforce mode.
Файлы профилей AppArmor
Профили AppArmor – это текстовые файлы, расположенные в каталоге /etc/apparmor.d/.
Файлы названы по имени полного пути к исполняемому файлу, но они заменяют «/» на «.».
Например, команда ping находится в /bin/ping.
Аналогичный файл профиля AppArmor будет называться bin.ping
Ниже приведен файл профиля Apparmor для usr.sbin.mysqld. /usr/sbin/mysqld – это абсолютный путь бинарника, для которого применяется этот профиль.
# cat usr.sbin.mysqld # vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include <tunables/global> /usr/sbin/mysqld { #include <abstractions/base> #include <abstractions/nameservice> #include <abstractions/user-tmp> #include <abstractions/mysql> #include <abstractions/winbind> capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> }
В файле профиля комментарии всегда идут с знаком #. #include строки загружают файл.
Ниже приведены различные типы правил, которые используются в профилях.
- Элементы пути. Это информация о файлах, к которым приложение имеет доступ.
- Записи Capability : определяет привилегии, которые разрешены ограниченному процессу.
- Сетевые записи: определяет тип подключения. Например: tcp. Для сети пакетного анализатора может быть raw или packet и т. д.
Внутри фигурных скобок {} у нас есть другие операторы include, а также включает разрешения / режимы доступа [read (r) / write (w) / execute (x) (k) lock (требуется r или w, в AppArmor 2.1 и более поздняя версия)], чтобы различные файлы и каталоги, которые включают регулярное выражение, включающее агенты include с фигурными фигурными скобками {}, помогают загружать компоненты профилей Novell AppArmor.
Отключение AppArmor
# /etc/init.d/apparmor stop * Clearing AppArmor profiles cache [OK]
Выполнение указанной команды приведет к очистке кеша профилей.
Чтобы отключить настройки профиля, выполните следующую команду.
# /etc/init.d/apparmor teardown * Unloading AppArmor profiles [OK]