Почему я не могу отключить AppArmor в версии 24.04.1?

Вопрос или проблема

Похожий вопрос здесь. Я пытаюсь отключить AppArmor на системном уровне. После выполнения следующего:

sudo systemctl stop apparmor
sudo systemctl disable apparmor

И перезагрузки, у меня получается:

❯❯  sudo aa-status | egrep '^[0-9]'
Загружено 48 профилей.
41 профиль в режиме принуждения.
7 профилей в режиме жалоб.
0 профилей в режиме запроса.
0 профилей в режиме уничтожения.
0 профилей в неограниченном режиме.
У 17 процессов определены профили.
17 процессов в режиме принуждения.
0 процессов в режиме жалоб.
0 процессов в режиме запроса.
0 процессов в режиме уничтожения.
0 процессов неограничены, но имеют определенный профиль.
0 процессов в смешанном режиме.

❯❯  sudo aa-enabled
Да

❯❯  sudo systemctl status apparmor
○ apparmor.service - Загрузка профилей AppArmor
     Загружено: загружено (/usr/lib/systemd/system/apparmor.service; отключено; предустановлено: включено)
     Активно: неактивно (мертво)
       Документы: man:apparmor(7)
             https://gitlab.com/apparmor/apparmor/wikis/home/

Если я делаю что-то, что нарушает политику (в моем случае, создание пространства имен пользователя), я получаю такие сообщения в журнале ядра, которые, кажется, подтверждают, что AppArmor в действии:

[  942.570952] audit: type=1400 audit(1735492407.323:89): apparmor="DENIED" operation="userns_create" class="namespace" info="Userns create restricted - failed to find unprivileged_userns profile" error=-13 profile="unconfined" pid=6227 comm="python" requested="userns_create" denied="userns_create" target="unprivileged_userns"

Ответ или решение

Проблема, с которой вы сталкиваетесь при попытке отключить AppArmor на вашей системе, связана с некоторыми аспектами работы данного механизма безопасности в Ubuntu 24.04.1. Несмотря на предпринятые действия по остановке и отключению службы AppArmor через systemctl, данный модуль может продолжать функционировать из-за нескольких факторов.

Почему AppArmor продолжает работать:

  1. Ядровый модуль: AppArmor интегрирован в ядро Linux и может работать независимо от состояния службы systemd. Даже если служба AppArmor остановлена и отключена, ядровый модуль может оставаться активным. Команда lsmod может показать, что модуль AppArmor загружен в систему, и его может понадобиться выгрузить вручную через rmmod apparmor.

  2. Файловая система: Профили AppArmor загружаются при старте системы из /etc/apparmor.d. Даже при отключении службы, наличие этих файлов может привести к автоматической загрузке профилей на уровне ядра.

  3. Дополнительные сервисы: Некоторые системные сервисы сами по себе могут запускаться с активацией AppArmor независимо от состояния службы apparmor.service. Эти процессы могут инициировать профили на лету.

Что делать:

Чтобы полностью отключить AppArmor, нужно выполнить следующие шаги:

  1. Выгрузка из ядра: Выполните команду sudo rmmod apparmor для выгрузки модуля из ядра. Однако, учтите, что это может вызвать проблемы с зависимостями других модулей.

  2. Удаление или переименование профилей: Скопируйте профили из /etc/apparmor.d в резервную папку или временно переименуйте, чтобы исключить их автоматическую загрузку при запуске.

  3. Обновление параметров загрузчика: В файле конфигурации вашего загрузчика (например, GRUB) добавьте параметр apparmor=0 в строку загрузки ядра. Для этого:

    • Отредактируйте файл /etc/default/grub.
    • Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте apparmor=0.
    • Обновите конфигурацию GRUB командой sudo update-grub.
    • Перезагрузите систему.

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...