Как настроить SELinux, чтобы позволить определенным сервисам общаться с Avahi?

Обратите внимание на то, что Солярис 11 не был выпущен, но это должно произойти до конца этого года (или раньше).

Имея это в виду, Вашими опциями является Солярис 10 и Солярис 11 Экспрессов. Оба поддерживаются в производстве и потребуют, чтобы Вы купили лицензию. Таким образом, я предполагаю, что это не проблема.

Так как Вы спрашиваете, какой использовать, я также предполагаю, что Ваша компания не имеет в распоряжении трудную политику. Солярис 11 Экспрессов являются продолжением проекта OpenSolaris и предлагают много улучшений (существуют тонны документов, детализирующих его), и это имеет доступ к намного большему списку текущего программного обеспечения, готового быть установленным.

Проблема с Солярисом, который 11 Экспрессов - то, что путь к Солярису 11 не ясен, хотя это не должно быть твердо, так как оба будут основаны на IPS. Люди обновили от OpenSolaris 2009.6 (b111) к Солярису 11 Экспрессов (b151a) без большой проблемы, но это все еще означает, что необходимо будет остановиться в ближайшем будущем для обновления до Соляриса 11 "надлежащих". В некоторой среде это не желаемо, но я предполагаю в Вашем веб-сервере, это должно быть приемлемо.

Очень трудно решить это для Вас, но, если у Вас нет более твердых требований к программному обеспечению, которые передают под мандат Вас, используют Солярис 10 (в этом случае, Вы не спросили бы здесь), я советую Вам устанавливать и тестировать Солярис 11 Экспрессов. Солярис 10 нигде не рядом, это - конец жизни, но это, тем не менее, раньше, чем Солярис 11 будет. Солярис 11 Экспрессов также предлагает более приятное впечатление для людей, привыкших к средам Linux/BSD.

4
задан 27 February 2014 в 18:36
3 ответа

Запуск этой службы как init_t , вероятно, не лучшая идея.

Причина такого поведения в том, что tvheadend - это вероятно с меткой bin_t , и не существует правила перехода для перемещения файла этого типа из контекста init_t .

Вы можете выполнить поиск, чтобы узнать наверняка ..

$ sesearch -s init_t --type -c process | grep bin_t

Эта команда не возвращает результатов. Нет переходов из init_t для процесса bin_t .

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

Вместо этого, вам нужно перевести ваш процесс из init_t в другой тип. Поскольку для этого приложения не существует политики, вероятно, лучше всего переместить ее в unlimited_t , для которого существует переход типа.

$ sesearch -s init_t --type -c process -t unconfined_exec_t
Found 1 semantic te rules:
   type_transition init_t unconfined_exec_t : process unconfined_t;

Мы также можем проверить, что правило, которое применяется в политике, не будет нажмите unlimited_t (чего не должно быть).

$ sesearch -s avahi_t -p send_msg -c dbus -t unconfined_t --allow
Found 2 semantic av rules:
   allow avahi_t unconfined_t : dbus send_msg ; 
   allow system_bus_type unconfined_t : dbus send_msg ;

Для этого просто измените метку вашей программы tvheadend на unlimited_exec_t .

semanage fcontext -a -t unconfined_exec_t -f f /usr/bin/tvheadend

Затем восстановите.

restorecon /usr/bin/tvheadend

Теперь перезапустите службу , чтобы заработала. Если вы повторно запустите ps -AZ | grep tvheadend , вы должны увидеть, что ваш процесс работает в unlimited_t .

В идеале для этой программы следует использовать новую политику, но если политики не существует, лучше всего запустить ее вообще без политики в домене unlimited_t . initrc_t и init_t на самом деле не предназначены для использования для запуска сервисов (хотя некоторые из них там неправильно работают), initrc_t изначально был задуман для запуска сценариев оболочки SYSV а init_t предназначен для запуска самой systemd / init.

6
ответ дан 3 December 2019 в 02:36

Вы можете исправить это, используя audit2allow для создания настраиваемого модуля политики

audit2allow -M custom_avhi <file_containing_AVC-denied messages
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i custom_avhi.pp
1
ответ дан 3 December 2019 в 02:36

На странице руководства для apache_selinux упоминается, что ] # semanage permissive может использоваться для разрешения работы определенных процессов в разрешающем режиме .

# semanage permissive -a avahi_t

Я предлагаю найти более подробную информацию о его использовании

Хотя было бы разумно найти лучшее решение, чем просто «разрешить разрешающий сервис» контроль доступа;

особенно когда SELinux предоставляет огромное количество конфигураций параметры, позволяющие данной службе выполнять только то, что вы ожидаете , и ничего более! Однако из-за такого огромного количества вариантов управления администраторам необходимо изучить, какие варианты существуют, и решить, как / когда / где их эффективно реализовать. Как я уже упоминал, в первую очередь нужно поискать на страницах руководства в вашей системе, а также в журнале аудита в /var/log/audit/audit.log . Для поиска сообщений об avahi, например, в файлах журнала, выполните:

# grep /usr/sbin/avahi /var/log/audit/audit.log

EDIT: , чтобы отразить обновленный вопрос

msg=avc: denied { send_msg } for msgtype=method_return dest=:1.114
spid=731 tpid=14478 scontext=system_u:system_r:avahi_t:s0 
tcontext=system_u:system_r:init_t:s0

Взгляните на Manpages

В частности, должны быть интересны следующие элементы вам:

3
ответ дан 3 December 2019 в 02:36

Теги

Похожие вопросы