Создаем собственное правило SELinux на базе аудит сообщения

Материал из FedoraMD.org Wiki
Версия от 11:00, 3 сентября 2008; VasileVsx (обсуждение | вклад) (add reference to Dan Walsh blog)
Перейти к навигации Перейти к поиску

ВНИМАНИЕ: команды предваряемые символом '#' должны выполняться с правами root (Суперпользователь). Открыв терминал (или находясь в консоли) с правами обычного пользователя, введите команду $ su - для повышения уровня привелегий. Символы '$' и '#' в начале строки не являются частью команды и не должны вводится. Прочие команды могут выполняться с правами обыкновенного пользователя.


Многие часто выключают SELinux, полагая что от него только проблемы. На самом деле это очень полезный инструмент аудита и защиты системы. Просто надо его правльно "готовить". :) Рассмотрим простой пример - некий скрипт тянется на, скажем, 8000 порт. По умолчанию такой доступ запрещен. Но мы то знаем что это допустимо. Лечится просто:

  • глядим в /var/log/messages, видим там что-то вроде
# grep audit /var/log/messages|tail -n 1
Oct 11 11:03:11 hostname kernel: audit(1192089791.364:4563): avc: denied { name_connect } for pid=9956 comm="python" dest=8000 \
scontext=user_u:system_r:httpd_fastcgi_script_t:s0 tcontext=system_u:object_r:soundd_port_t:s0 tclass=tcp_socket
  • эту строку "скармливаем" audit2why:
# grep audit /var/log/messages|tail -n 1|audit2why
Oct 11 11:03:11 hostname kernel: audit(1192089791.364:4563): avc: denied { name_connect } for pid=9956 comm="python" dest=8000 \
scontext=user_u:system_r:httpd_fastcgi_script_t:s0 tcontext=system_u:object_r:soundd_port_t:s0 tclass=tcp_socket
Was caused by:
Missing or disabled TE allow rule.
Allow rules may exist but be disabled by boolean settings; check boolean settings.
You can see the necessary allow rules by running audit2allow with this audit message as input.
  • нам советуется создать разрешающие правила. Как? Просто:
# grep audit /var/log/messages|tail -n 1||audit2allow -ve -M pythonTcp8000Moin
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i pythonTcp8000Moin.pp
# semodule -i pythonTcp8000Moin.pp
  • Вот и всё.

Больше информации о укрощении SELinux в Fedora вы найдете в блоге Dan Walsh'a - одного из основных разработчиков этой системы.