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