История изменений
Исправление beroal, (текущая версия) :
ЕМНИП, ограничения AppArmor-а действуют и для процессов под рутом. Конечно, надо также запретить изменять профили в памяти ядра. Профили изменяются с помощью программы apparmor_parser
. Чтобы делать своё чёрное дело, ей нужны следующие права доступа:
capability mac_admin,
/sys/kernel/security/apparmor/{,**} rw,
Проблема с вашей задачей в другом. AppArmor предназначен для работы с белыми списками прав доступа. То есть, чтобы запретить программам доступ к файлу, надо просто не давать им доступ к файлу в их профилях ☺. Конечно, все программы должны выполняться под своими профилями, а не под unconfined
. Так что одной строчкой этого не сделаешь.
Но, думаю, можно что-то соорудить. Вам правильно подсказали, что нужен full system policy. Нужно два профиля: для особенной программы, которая имеет доступ к особенному файлу, и для остальных программ. В профиле для остальных программ надо указать, что особенную программу надо запускать под её профилем. Поскольку этот запуск повышает привилегии, также следует поискать возможные уязвимости в этой особенной программе. Например, если она принимает команды из stdin
, то любая программа может послать особенной программе любую команду. Желательно иметь больше сведений о том, чего вы добиваетесь.
Исправление beroal, :
ЕМНИП, ограничения AppArmor-а действуют и для процессов под рутом. Конечно, надо также запретить изменять профили в памяти ядра. Профили изменяются с помощью программы apparmor_parser
. Чтобы делать своё чёрное дело, ей нужны следующие права доступа:
/etc/apparmor{,.d}/{,**} r,
# Permissions essential for changing the profile set in the kernel memory.
capability mac_admin,
/sys/kernel/security/apparmor/{,**} rw,
Проблема с вашей задачей в другом. AppArmor предназначен для работы с белыми списками прав доступа. То есть, чтобы запретить программам доступ к файлу, надо просто не давать им доступ к файлу в их профилях ☺. Конечно, все программы должны выполняться под своими профилями, а не под unconfined
. Так что одной строчкой этого не сделаешь.
Но, думаю, можно что-то соорудить. Вам правильно подсказали, что нужен full system policy. Нужно два профиля: для особенной программы, которая имеет доступ к особенному файлу, и для остальных программ. В профиле для остальных программ надо указать, что особенную программу надо запускать под её профилем. Поскольку этот запуск повышает привилегии, также следует поискать возможные уязвимости в этой особенной программе. Например, если она принимает команды из stdin
, то любая программа может послать особенной программе любую команду. Желательно иметь больше сведений о том, чего вы добиваетесь.
Исходная версия beroal, :
ЕМНИП, ограничения AppArmor-а действуют и для процессов под рутом. Конечно, надо также запретить изменять профили в памяти ядра. Профили изменяются с помощью программы apparmor_parser
. Чтобы делать своё чёрное дело, ей нужны следующие права доступа:
abi <abi/3.0>,
include <tunables/global>
profile aapc /usr/local/bin/aapc {
include <abstractions/consoles>
include <rough/base>
/{usr/,}bin/apparmor_parser ix,
/etc/apparmor{,.d}/{,**} r,
# Permissions essential for changing the profile set in the kernel memory.
capability mac_admin,
/sys/kernel/security/apparmor/{,**} rw,
}
Проблема с вашей задачей в другом. AppArmor предназначен для работы с белыми списками прав доступа. То есть, чтобы запретить программам доступ к файлу, надо просто не давать им доступ к файлу в их профилях ☺. Конечно, все программы должны выполняться под своими профилями, а не под unconfined
. Так что одной строчкой этого не сделаешь.
Но, думаю, можно что-то соорудить. Вам правильно подсказали, что нужен full system policy. Нужно два профиля: для особенной программы, которая имеет доступ к особенному файлу, и для остальных программ. В профиле для остальных программ надо указать, что особенную программу надо запускать под её профилем. Поскольку этот запуск повышает привилегии, также следует поискать возможные уязвимости в этой особенной программе. Например, если она принимает команды из stdin
, то любая программа может послать особенной программе любую команду. Желательно иметь больше сведений о том, чего вы добиваетесь.