Создаем собственное правило SELinux на базе аудит сообщения
ВНИМАНИЕ: команды предваряемые символом '#
' должны выполняться с правами 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 - одного из основных разработчиков этой системы.