💾 Archived View for pub.phreedom.club › ~progserega_linux › glog › 2024.04.02_apparmor.gmi captured on 2024-07-09 at 00:30:47. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-05-10)
-=-=-=-=-=-=-
Статьи по теме:
https://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/безопасность/apparmor
https://vasilisc.com/rules_apparmor
1. Ставим набор сторонних профилей, чтобы было откуда брать примеры:
apt-get install apparmor-profiles
2. Копируем подходящий профиль (слэши заменяем точками, имя профиля - путь к ограничиваемому бинарнику):
cp /etc/apparmor.d/usr.lib.unreal /etc/apparmor.d/opt.Unigine_Superposition-1.1.Superposition
3. Правим путь к файлу бинарника внутри профиля.
4. Перезапускаем apparmor, смотрим логи:
systemctl reload apparmor; journalctl -af _TRANSPORT=audit
5. Запускаем ограничиваемую программу, смотрим что запрещено в логах - учитываем, что если ругается, что нужны права запуска (x),
то в правилах будем писать 'ix', а не просто 'x' (см. правила доступа).
6. по-возможности добавляем классические разрешения для шрифтов, звука и т.п. типа:
#include <abstractions/fonts> #include <abstractions/X> #include <abstractions/audio>
7. По таблице "Правила доступа" добавляем прав на дополнительные файлы, пользуемся таблицей шаблонов (см. ниже), а так же
сокращениями для типовых директорий типа home, sys (см. пример профиля ниже).
journalctl -af _TRANSPORT=audit
вывод:
апр 02 18:39:24 sky audit[2103119]: AVC apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=2103119 comm="apparmor_parser" апр 02 18:39:24 sky audit[2103119]: AVC apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=2103119 comm="apparmor_parser" апр 02 18:39:24 sky audit[2103119]: AVC apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=2103119 comm="apparmor_parser
информацию в файл (полезно для лог-файлов!).
процесса запрещен.
переменные окружения. Если профиля нет, то запуск процесса запрещен.
Для запуска /opt/Unigine_Superposition-1.1/Superposition
# Superposition GPU test AppArmor profile # Copyright © 2024 progserega # License-Identifier: GPL3 #include <tunables/global> profile superposition /opt/Unigine_Superposition-*/Superposition { #include <abstractions/fonts> #include <abstractions/X> #include <abstractions/audio> #include <abstractions/base> #include <abstractions/dri-common> #include <abstractions/dri-enumerate> #include <abstractions/mesa> #include <abstractions/nameservice> #include <abstractions/nvidia> #include <abstractions/vulkan> #include <abstractions/private-files-strict> network inet dgram, network inet stream, network inet6 dgram, network inet6 stream, /etc/libnl-*/classid r, /etc/machine-id r, /var/lib/dbus/machine-id r, @{PROC}/@{pid}/net/psched r, @{sys}/devices/system/cpu/{,**} r, # gpu: /usr/share/libdrm/** r, @{sys}/devices/pci*/**/hwmon/ r, @{sys}/devices/pci*/**/hwmon/** r, @{sys}/devices/pci*/**/*clk* r, @{sys}/devices/pci*/**/pp_dpm_pcie r, # udev device enumeration, input devices, video /etc/udev/udev.conf r, /run/udev/data/** r, @{sys}/bus/ r, @{sys}/class/ r, @{sys}/class/drm/ r, @{sys}/class/input/ r, @{sys}/class/sound/ r, @{sys}/devices/**/drm/** r, @{sys}/devices/**/input/** r, @{sys}/devices/**/sound/**/input*/** r, @{sys}/devices/**/sound/**/uevent r, @{sys}/devices/pci*/**/config r, @{sys}/devices/pci*/**/revision r, /opt/Unigine_Superposition-*/Superposition mrix, /opt/Unigine_Superposition-*/bin/* mrix, /opt/Unigine_Superposition-*/bin/qt/** mr, /opt/Unigine_Superposition-*/data/ r, /opt/Unigine_Superposition-*/data/** r, #/usr/bin/xdg-open mrix, owner @{HOME}/.Superposition/** rwk, } # vim:syntax=apparmor