Как использовать AppArmor в Ubuntu

Ubuntu Apparmor Featured

Вы, вероятно, слышали о AppArmor, используя Ubuntu, но поскольку это не приложение, которое отображается в меню приложений и не имеет графического интерфейса, некоторые могут не знать, что оно делает и почему это важно для вашей системы. Кратко, AppArmor — это модуль безопасности, который ограничивает отдельные программы набором перечисленных файлов и возможностей, чтобы они не нанесли вред вашей системе.

Узнайте разницу между SELinux и AppArmor для защиты вашей системы Linux.

Содержание

  • Что такое AppArmor?
  • Как работает AppArmor
  • Проверка статуса AppArmor
  • Поиск отключенных профилей AppArmor
  • Включение и отключение профилей AppArmor
  • Как выглядит профиль AppArmor?
  • Создание собственных профилей для защиты приложений
  • Остановка и перезапуск AppArmor
  • Часто задаваемые вопросы

Что такое AppArmor?

AppArmor — это система обязательного контроля доступа (MAC), которая ограничивает программы до ограниченного набора ресурсов. Она ограничивает программы набором файлов, атрибутов и возможностей, чтобы они не проникали глубоко в систему и не причиняли вред (если им не предоставлено разрешение на это). Вместо модели контроля учетных записей пользователей (UAC) Windows, которая предоставляет контроль пользователю, AppArmor связывает атрибуты контроля доступа с самой программой.

Как работает AppArmor

AppArmor работает на уровне ядра (посмотрите эти советы, если вы компилируете собственное ядро) и загружается во время первоначальной загрузки. AppArmor обрабатывает разрешения через профили: набор правил, который определяет, что программа может и не может делать.

Существует два режима, в которых могут работать профили: Принуждение и Жалоба. Режим принуждения представляет собой строгую реализацию политики, которая определяется в профиле, и сообщает о попытках нарушения политики. Режим Жалобы будет только сообщать о попытках нарушения политики и не будет принуждать политику. Большинство профилей загружаются в режиме Принуждения, хотя также может быть достаточно много сторонних профилей, загруженных в режиме Жалобы.

Проверка статуса AppArmor

Если вы используете Ubuntu 7.04 или более позднюю версию, AppArmor установлен по умолчанию и загружается при запуске компьютера. Чтобы проверить статус AppArmor, введите следующую команду в терминале:

sudo apparmor_status

На изображении ниже показано, что вы увидите.

Ubuntu Apparmor Sudo Status

В моей системе вы можете увидеть, что 36 профилей загружены в режиме Принуждения.

Поиск отключенных профилей AppArmor

AppArmor имеет несколько предустановленных профилей, некоторые из которых отключены по умолчанию. Вы можете посмотреть их в папке “/etc/apparmor.d/disable”. В последней версии AppArmor вы можете увидеть, что профиль rsyslogd не включен.

Ubuntu Apparmor Disable Folder Usr Sbin Rsyslogd

Этот профиль отключен по умолчанию, так как пользователи часто вносят изменения в конфигурацию rsyslogd, что делает его несовместимым с AppArmor.

Совет: узнайте, как вы можете удаленно управлять вашей машиной Ubuntu с помощью Webmin.

Включение и отключение профилей AppArmor

Хотя у вас может быть несколько профилей, загруженных на вашей системе, каждый профиль может быть включен или отключен индивидуально. Например, вы можете включить упомянутый ранее профиль rsyslogd. Следуйте инструкциям ниже, чтобы узнать, как.

Откройте терминал и введите:

sudo apt install apparmor-utils

Это установит инструменты, необходимые для выполнения последующих команд в этом руководстве. Чтобы включить профиль, введите:

sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogd

Чтобы снова отключить его:

sudoln-s/etc/apparmor.d/usr.sbin.rsyslogd /etc/apparmor.d/disable/  
sudo apparmor_parser -R/etc/apparmor.d/usr.sbin.rsyslogd

Как выглядит профиль AppArmor?

Хотя профили AppArmor звучат как сложное программное обеспечение, на самом деле это простой текстовый файл с путями к файлам, указывающими, к каким папкам и директориям приложение может получить доступ. Вы можете легко дважды щелкнуть любой профиль в папке “/etc/apparmor.d”, чтобы открыть его в вашем текстовом редакторе.

Профиль Rsyslogd будет выглядеть как на изображении ниже.

Ubuntu Apparmor Rsyslogd Profile Text View

Создание собственных профилей для защиты приложений

Ubuntu уже неплохо справляется с защитой вас, но если вы хотите ограничить собственное приложение, которое не защищено Ubuntu, вы можете создать свой собственный профиль AppArmor, чтобы заблокировать приложение. Это особенно полезно на сервере, где приложения могут работать в фоновом режиме.

Примечание: прежде чем создавать собственные профили, лучше сначала изучить существующую библиотеку профилей AppArmor, чтобы узнать, доступен ли профиль для вашего приложения. Вы также можете установить apparmor-profiles, чтобы получить дополнительный список профилей.

Запустите следующую команду, чтобы начать профилирование:

sudo aa-genprof /path/to/application

/path/to/application — это путь к файлу приложения, которое вы хотите профилировать. Стандартная папка приложений — “/usr/bin”, но она может отличаться в зависимости от приложения и метода установки, такого как “/snap/bin”.

Ubuntu Apparmor Aa Genprof Snap Bin Krita

Оставив терминал открытым, запустите приложение, которое вы собираетесь профилировать. В этом примере я использую Krita. Используйте приложение, как обычно.

Для каждого действия, которое вы выполняете в приложении, возвращайтесь в терминал и нажимайте Shift + S, чтобы заставить его сканировать изменения.

Ubuntu Apparmor Aa Genprof Shift S

Отсюда вы можете увидеть путь, к которому обращается приложение, и степень серьезности действия. Выберите “Разрешить (A)” или “Запретить (D)” действие.

Продолжайте делать это для остальных действий, выполненных в приложении. Для получения лучших результатов лучше заранее спланировать свой список действий, прежде чем начинать профилирование.

Наконец, когда вы закончите, нажмите Shift + F, чтобы завершить профилирование, и Shift + S, чтобы сохранить профиль.

После создания профиль будет сохранен в папке “/etc/apparmor.d” и будет загружен в режиме Принуждения.

Редактирование профилей

Чтобы отредактировать созданный вами профиль, используйте следующую команду:

sudo aa-logprof /etc/apparmor.d/

В данном случае должен быть названием нового профиля, который был создан, когда вы использовали команду aa-genprof ранее.

AppArmor просканирует записи журнала и позволит вам внести изменения в профиль.

Остановка и перезапуск AppArmor

Если по какой-то причине вам нужно остановить AppArmor, вы можете сделать это легко с помощью:

sudo service apparmor stop

Вы можете подтвердить, что он был остановлен, проверив статус с помощью этой команды:

systemctl status apparmor

Ubuntu Apparmor Disabled

А чтобы снова запустить AppArmor:

sudo service apparmor restart

Если вы снова проверите статус, вы увидите зеленый индикатор, указывающий, что AppArmor запущен.

Ubuntu Apparmor Enabled

Если вы управляете своим собственным сервером, ознакомьтесь с этими советами о том, как защитить ваш сервер Linux.

Часто задаваемые вопросы

Почему AppArmor отключает rsyslog по умолчанию?

rsyslog — это конфигурируемое программное обеспечение, которое обрабатывает системное логирование, включая получение, преобразование и доставку сообщений журнала в различные пункты назначения. Его профиль AppArmor, “usr.sbin.rsyslogd”, включен, но по умолчанию отключен.

Согласно инженеру Canonical Джейми Страндбоге, это происходит потому, что rsyslog настолько высоко конфигурируем, что профиль может не всегда работать должным образом.

В чем разница между версиями AppArmor 2 и 3?

AppArmor 3.x — это последняя версия AppArmor, выпущенная 1 октября 2020 года, и является значительным расширением. AppArmor 2.x очень старая версия, выпущенная около 2007 года. Похоже, что дальнейшая активная разработка серии 2.x больше не будет. Последняя версия 2.13.6 была выпущена в декабре 2020 года, а AppArmor 2.14 отмечен как “отменен” на сайте разработки. AppArmor 3.0.7 был выпущен 9 августа 2022 года.

Если у меня есть AppArmor, мне все еще нужна антивирусная программа?

Да, вам все еще нужна антивирусная программа, даже если вы используете AppArmor. Эти две системы выполняют совершенно разные операции и дополняют друг друга. Хорошо иметь антивирус на Ubuntu, даже несмотря на то, что на системы Linux меньше направленных атак со стороны создателей вредоносного ПО.

Что такое бинарные блобы и почему они представляют собой риск безопасности? Узнайте ответ и как Linux-Libre может предложить вам лучшую защиту, чем обычный Linux.

Все скриншоты предоставлены Брендоном Ли.