Pull to refresh

Comments 10

Человеческое вам спасибо!
Большое спасибо за статьи по SELinux!
Прекрасно! Даешь настройку SELinux!
Сам недавно насладился об это для Django стека, получил огромное удовольствие.
Пользовался этим циклом мануалов, для получения начального понимания — самое то.
Небольшое дополнение:
после выполнения команд вида
semanage fcontext -a/-d -t httpd_cache_t "/srv/http/cache(/.*)?"

можно не выполнять
chcon ...

а запустить
restorecon -R /srv/http/cache

Тем самым восстановить контекст по умолчанию для директории и заодно проверить, что добавленное командой выше правило действительно работает.
Чуть более простой способ решения проблем, описанных в статье.

Зная, что в SELinux есть переменные модулей, при получении 'avc: denied' от SELinux, можно посмотреть, какие переменные есть у связанных модулей, и их краткое описание:
# semanage boolean -l | grep -i http
httpd_can_network_relay        (off  ,  off)  Allow httpd to act as a relay
httpd_can_connect_mythtv       (off  ,  off)  Allow http daemon to connect to mythtv
httpd_can_network_connect_db   (on  ,  off)  Allow HTTPD scripts and modules to connect to databases over the network.
httpd_use_gpg                  (on  ,  off)  Allow httpd to run gpg
httpd_dbus_sssd                (off  ,  off)  Allow Apache to communicate with sssd service via dbus
httpd_enable_cgi               (on   ,   on)  Allow httpd cgi support
...
Как видно из вывода команды, на этом сервере apache httpd специально разрешено запускать gpg (httpd_use_gpg) и подключаться к серверу баз данных по сети (httpd_can_network_connect_db). Все остальные значения переменных модулей SELinux оставлены по-умолчанию.

Переменные модулей помогают в стандартных ситуациях, но если нужно настроить что-то более экзотическое, и ошибка связана с файлами или сетевыми сокетами сервисов, то можно можно посмотреть стандартные типы портов и label'ы файлов:
# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
...
# semanage fcontext -l | grep http | head
/usr/.*\.cgi                                       regular file       system_u:object_r:httpd_sys_script_exec_t:s0 
/opt/.*\.cgi                                       regular file       system_u:object_r:httpd_sys_script_exec_t:s0 
/srv/([^/]*/)?www(/.*)?                            all files          system_u:object_r:httpd_sys_content_t:s0 
/srv/([^/]*/)?www/logs(/.*)?                       all files          system_u:object_r:httpd_log_t:s0 
/var/www(/.*)?                                     all files          system_u:object_r:httpd_sys_content_t:s0 
...
Ну и смотря на стандартные настройки, исправить их уже большой проблемы не представляет.

Полное описание переменных некоторых модулей и связанных типов (label, type, domain), а так же примеры использования есть man страницах в пакете 'selinux-policy-doc', напр. см. 'man httpd_selinux'.

Таким образом, значительная часть «проблем» с SELinux снимается просмотром логов, запуском 'man -k selinux | grep httpd' и действиями, следующими за прочтением соответствующей man страницы.
Описания не всегда достаточно. Тот-же audit2allow показывает все варианты флагов, которые можно включить.
А sesearch -C позволяет их направить в нужную сторону.
Кстати, вы тоже можете написать статью про SELinux, я думаю она 100% пройдет песочницу :)
По этой тематике написано уже достаточно много, в том числе и здесь.

По моему мнению, имеет смысл писать статьи, и тем более давать «зелёный свет» после «песочницы» только статьям, имеющим явные признаки новизны тематики и материала. Иначе получим игнор читателей и справедливый гнев в комментариях в духе
И что это за статья? Каждый теперь будет писать очередной условный "Как настроить сервер с LAMP" и получать инвайт? Хабр скатился в… .


В настоящий момент я не занимаюсь чем-либо, достойным описания в статье.
В прошлый раз у меня просили статью про MLS/MCS, например. Нормальных на русском я не видел.
Зря вы так переживаете. SELinux нужно нести в массы всеми доступными способами.
Прошёл песочницу вот с этой статьёй — https://habrahabr.ru/post/334954/. Общий рейтинг статьи за сутки — 38: +24 и -14, с результирующим +10. Шатаем устои, так сказать :)
Sign up to leave a comment.

Articles