LINUX.ORG.RU

Ограничить AppArmor-ом доступ к файлу

 


1

2

Предоположим, есть файл, к которому должен иметь доступ только один бинарник, выполняя с ним определенные операции, описанные в профиле AppArmor. Как можно запретить всем остальным приложениям взаимодействовать с этим файлом, в том числе с правами Root?

Как можно запретить всем остальным ебучим приложениям взаимодействовать с этим файлом, нахуй, в том числе с правами Root?

никак, root может всё, в т.ч. изменить профиль AppArmor.

anonymous
()
Ответ на: комментарий от anonymous

Ну это понятно, что всегда будет точка отсчета, но средствами Apparmor мы можем запретить взаимодействовать всем приложениям с одним файлом?

Turrrbo1
() автор топика
Ответ на: комментарий от anonymous

Имеется в виду загружать скрипт в кернел и создать профиль для init-systemd? Так AppArmor и будет ограничивать действия в рамках процессов init-systemd

Turrrbo1
() автор топика
Ответ на: комментарий от anonymous

Тогда профиль инита применится ко всем приложениям, а определенным процессам всё же нужен будет доступ

Turrrbo1
() автор топика
Ответ на: комментарий от Turrrbo1

Для отдельных программ можно сделать свои профили с разрешением доступа к этим файлам, а в общем (для инита) для них задать разрешение запускаться Px (или Pix для всех)

anonymous
()

аппармор работает per-process, поэтому он неприменим.

сделай файлу chown onetrickpony:onetrickpony; chmod 660 и проге группу onetrickpony и суид-бит.

s-o
()
Ответ на: комментарий от s-o

а разве процессы, запущенные от имени рута не игнорируют все эти chmod-ы? Это ж рут, ему на rwx все равно, он может ходить куда угодно и читать что угодно

Turrrbo1
() автор топика
Ответ на: комментарий от Turrrbo1

рут всё может, если вся система не залочена селинуксом, и даже тогда сможет обойти его

s-o
()

Посмотри в сторону caitsith. Там это элементарно делается. Только модуль ядра придётся руками собирать или же ядро патчить.

anonymous
()
14 января 2022 г.
Ответ на: комментарий от Turrrbo1

ЕМНИП, ограничения AppArmor-а действуют и для процессов под рутом. Конечно, надо также запретить изменять профили в памяти ядра. Профили изменяются с помощью программы apparmor_parser. Чтобы делать своё чёрное дело, ей нужны следующие права доступа:

capability mac_admin,
/sys/kernel/security/apparmor/{,**} rw,

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

Но, думаю, можно что-то соорудить. Вам правильно подсказали, что нужен full system policy. Нужно два профиля: для особенной программы, которая имеет доступ к особенному файлу, и для остальных программ. В профиле для остальных программ надо указать, что особенную программу надо запускать под её профилем. Поскольку этот запуск повышает привилегии, также следует поискать возможные уязвимости в этой особенной программе. Например, если она принимает команды из stdin, то любая программа может послать особенной программе любую команду. Желательно иметь больше сведений о том, чего вы добиваетесь.

beroal
()
Последнее исправление: beroal (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.