Crossroads » Linux » Установка AppArmor

Установка AppArmor

  • Dislike
  • +1
  • Like
Данный материал описывает установку AppArmor на Arch Linux и его деривативы. Более подробная информация и примеры конфигурации в официальной WIKI проекта.

AppArmor — это система обязательного контроля доступа (MAC), реализованная на основе модулей безопасности Linux (LSM).

AppArmor, как и большинство других LSM, дополняет, а не заменяет дискреционный контроль доступа (DAC) по умолчанию. Таким образом, невозможно предоставить процессу больше привилегий, чем он имел изначально.

Ubuntu, SUSE и ряд других дистрибутивов используют его по умолчанию. RHEL (и его деривативы) используют SELinux, который требует хорошей интеграции в пользовательское пространство для правильной работы. SELinux прикрепляет метки ко всем файлам, процессам и объектам и поэтому является очень гибким. Тем не менее, настройка SELinux считается очень сложной задачей и требует поддерживаемой файловой системы. AppArmor, с другой стороны, работает с использованием путей к файлам, и его конфигурация может быть легко адаптирована.

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

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

AppArmor доступен во всех официально поддерживаемых ядрах Arch Linux.

Устанавливаем AppArmor.
sudo pacman -S apparmor

Чтобы загрузить все профили AppArmor при запуске, включаем apparmor.service.
sudo systemctl enable --now apparmor 

Чтобы включить AppArmor в качестве системы безопасности по умолчанию при каждой загрузке, установите следующий параметр ядра:
lsm=landlock,lockdown,yama,integrity,apparmor,bpf 

Правим загрузчик:
sudo nano /etc/default/grub 

Ищем следующую строку:
GRUB_CMDLINE_LINUX_DEFAULT= 

Как правило она сверху.

Вставляем вышеуказанные параметры. Ничего не удаляем. В строке наверняка уже есть какие-то записи. Должно получиться нечто подобное:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 lsm=landlock,lockdown,yama,integrity,apparmor,bpf" 

Сохраняем изменения.

Параметр ядра lsm= задает порядок инициализации модулей безопасности Linux.

Убедитесь, что apparmor является первым "крупным" модулем в списке.

Сконфигурированное значение можно проверить следующей командой:
zgrep CONFIG_LSM= /proc/config.gz 

Текущее значение проверяем следующей командой:
cat /sys/kernel/security/lsm 

Обновляем конфигурацию загрузчика:
sudo grub-mkconfig -o /boot/grub/grub.cfg

Далее потребуется перезагрузка системы.

Проверяем включен ли AppArmor:
aa-enabled 

Любой вывод кроме “YES” говорит о том, что система не работает.

Проверяем статус:
sudo aa-status

Выдача должна быть примерно такой:
apparmor module is loaded. 
44 profiles are loaded. 
44 profiles are in enforce mode. 
 ... 
0 profiles are in complain mode. 
0 processes have profiles defined. 
0 processes are in enforce mode. 
0 processes are in complain mode. 
0 processes are unconfined but have a profile defined. 

Здесь мы видим загруженные профили и их статусы.

Для загрузки (принудительного применения), выгрузки, перезагрузки, кэширования и статистики используйте apparmor_parser. Действием по умолчанию (-a) является загрузка нового профиля в принудительном режиме, для перезаписи существующего профиля используйте опцию -r, а для удаления профиля используйте опцию -R. Каждое действие также может применяться к нескольким профилям. Для более подробного описания функционала следует обратиться к man странице.

Для создания новых профилей должен быть запущен Audit Framework. Это связано с тем, что Arch Linux использует systemd и не создаёт лог-файлов ядра по умолчанию. AppArmor может получать логи ядра из демона userspace auditd, что позволяет создать профиль.

Добавляем параметр “audit=1” в конфигурацию загрузчика. В ту же строку, куда мы добавляли модуль AppArmor ранее. Строка должна выглядеть примерно так:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 lsm=landlock,lockdown,yama,integrity,apparmor,bpf audit=1" 

Обновляем конфигурацию загрузчика.

Устанавливаем пакет “audit” (скорее всего он уже есть в системе). Включаем и запускаем auditd.service.
sudo pacman -S audit
sudo systemctl enable --now auditd 

Профили - удобочитаемые текстовые файлы, находящиеся в /etc/apparmor.d/, описывающие, как должны обрабатываться бинарники при выполнении. Базовый профиль выглядит примерно так:
#include <tunables/global> 
 
profile test /usr/lib/test/test_binary { 
    #include <abstractions/base> 
 
    # Main libraries and plugins 
    /usr/share/TEST/** r, 
    /usr/lib/TEST/** rm, 
 
    # Configuration files and logs 
    @{HOME}/.config/ r, 
    @{HOME}/.config/TEST/** rw, 
} 

Строки, которым предшествует символ @ - переменные, определяемые абстракциями (/etc/apparmor.d/abstractions/), переменными (/etc/apparmor.d/tunables/) или самим профилем. #include включает в себя другие файлы профилей напрямую. Символы плана “rw” в строках с путями, являются указателями прав доступа. Используется синтаксис AppArmor.

Наиболее распространенные варианты использования охватываются следующими параметрами:

r — read: чтение данных.

w — write: создание, удаление, запись в файл и его дополнение.

m — memory map executable: карта памяти исполняемого файла.

x — execute: запустить исполняемый файл; должен быть обработан с помощью qualifier.

Права бинарников не могут быть выше значений, установленных DAC.

Демон уведомлений отображает уведомления на рабочем столе всякий раз, когда AppArmor запрещает программе доступ. Чтобы автоматически запускать демон aa-notify при входе в систему, выполните следующие действия:

Устанавливаем Audit Framework, а также включаем и запускаем демон auditd в пользовательском пространстве (смотрим выше). Разрешаем пользователю читать логи аудита в /var/log/audit, добавив его в группу audit:
sudo groupadd -r audit 
sudo gpasswd -a пользователь системы audit 

Добавляем группу “audit” в auditd.conf:
sudo nano /etc/audit/auditd.conf 
log_group = audit

Можно в начало файла. Если файл не существует, следует перезагрузить систему.

Устанавливаем пакеты python-notify2 и python-psutil.

Создаём файл автозапуска:
nano ~/.config/autostart/apparmor-notify.desktop 

[
Desktop Entry] 
Type=Application 
Name=AppArmor Notify 
Comment=Receive on screen notifications of AppArmor denials 
TryExec=aa-notify 
Exec=aa-notify -p -s 1 -w 60 -f /var/log/audit/audit.log 
StartupNotify=false 
NoDisplay=true 

Перезагружаем и проверяем запущен ли процесс aa-notify.
pgrep -ax aa-notify 

На этом всё. Мы получили рабочую конфигурацию AppArmor на Arch Linux.
Like Dislike

___
Blacksmith.



Tags: Arch Linux, AppArmor, Linux


 
  • Creative Commons Licence
  • Norton Safeweb
  • Website Uptime Monitoring By ServiceUptime.com