Comments 10
Человеческое вам спасибо!
Большое спасибо за статьи по SELinux!
Прекрасно! Даешь настройку SELinux!
Сам недавно насладился об это для Django стека, получил огромное удовольствие.
Пользовался этим циклом мануалов, для получения начального понимания — самое то.
Небольшое дополнение:
после выполнения команд вида
можно не выполнять
а запустить
Тем самым восстановить контекст по умолчанию для директории и заодно проверить, что добавленное командой выше правило действительно работает.
Сам недавно насладился об это для Django стека, получил огромное удовольствие.
Пользовался этим циклом мануалов, для получения начального понимания — самое то.
Небольшое дополнение:
после выполнения команд вида
semanage fcontext -a/-d -t httpd_cache_t "/srv/http/cache(/.*)?"
можно не выполнять
chcon ...
а запустить
restorecon -R /srv/http/cache
Тем самым восстановить контекст по умолчанию для директории и заодно проверить, что добавленное командой выше правило действительно работает.
Чуть более простой способ решения проблем, описанных в статье.
Зная, что в SELinux есть переменные модулей, при получении 'avc: denied' от SELinux, можно посмотреть, какие переменные есть у связанных модулей, и их краткое описание:
Переменные модулей помогают в стандартных ситуациях, но если нужно настроить что-то более экзотическое, и ошибка связана с файлами или сетевыми сокетами сервисов, то можно можно посмотреть стандартные типы портов и label'ы файлов:
Полное описание переменных некоторых модулей и связанных типов (label, type, domain), а так же примеры использования есть man страницах в пакете 'selinux-policy-doc', напр. см. 'man httpd_selinux'.
Таким образом, значительная часть «проблем» с SELinux снимается просмотром логов, запуском 'man -k selinux | grep httpd' и действиями, следующими за прочтением соответствующей man страницы.
Зная, что в 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 позволяет их направить в нужную сторону.
А sesearch -C позволяет их направить в нужную сторону.
Кстати, вы тоже можете написать статью про SELinux, я думаю она 100% пройдет песочницу :)
По этой тематике написано уже достаточно много, в том числе и здесь.
По моему мнению, имеет смысл писать статьи, и тем более давать «зелёный свет» после «песочницы» только статьям, имеющим явные признаки новизны тематики и материала. Иначе получим игнор читателей и справедливый гнев в комментариях в духе
В настоящий момент я не занимаюсь чем-либо, достойным описания в статье.
По моему мнению, имеет смысл писать статьи, и тем более давать «зелёный свет» после «песочницы» только статьям, имеющим явные признаки новизны тематики и материала. Иначе получим игнор читателей и справедливый гнев в комментариях в духе
И что это за статья? Каждый теперь будет писать очередной условный "Как настроить сервер с LAMP" и получать инвайт? Хабр скатился в… .
В настоящий момент я не занимаюсь чем-либо, достойным описания в статье.
Прошёл песочницу вот с этой статьёй — https://habrahabr.ru/post/334954/. Общий рейтинг статьи за сутки — 38: +24 и -14, с результирующим +10. Шатаем устои, так сказать :)
Sign up to leave a comment.
Настройка окружения SELinux на примере LAMP-сервера