Настройка и использование SELinux
Вячеслав Занько (Slavaz), Брест, Беларусь. slavazanko@gmail.com
LVEE 2009
SELinux ― это реализация системы принудительного контроля доступа, которая может работать параллельно с классической системой контроля доступа, используемой в Linux. SELinux изначально был разработан Агентством национальной безопасности США и затем был передан разработчикам открытого кода. В докладе рассматривается настройка политик безопасности SELinux в наиболее распространённых случаях.
знакомство с SELinux
В SELinux предусмотрено три типа политик безопасности:
- целевая (targered) – защищает явно описанные системные процессы, оставляя остальные пользовательские процессы под юрисдикцией классической системы контроля доступа;
- многоуровневая (MLS – Multi Level Security) – вводит для процессов и файлов иерархию уровней доступа;
- строгая (strict) – реализует подход «что не разрешено, то запрещено».
Использование SELinux с целевой политикой безопасности получило наибольшее распространение.
В рамках действующей политики администратор может активировать разрешения/запрещения доступа для определенных процессов с помощью заранее встроенных переключателей (инструкции getsebool/setsebool).
настройка
Настрйока SELinux рассматривается на примере сервисов http, ftp, samba с переносом соответствующих файлов в каталоги /srv/http, /srv/ftp, /srv/samba. Специальными командами в расширенных атрибутах файловой системы на каталоги и файлы устанавливаются SELinux-метки, управляющие доступ к объектам.
создание собственных политик
На примере настройки httpd на использование ldap-аутентификации рассмотрено создание собственных политик SELinux. Эффективным средством формирования разрешающих правил на основе зажурналированных данных о происходивших ранее запретах доступа выполняет утилита audit2allow.
Также специфические политики безопасности могут быть реализованы путем написания собственных модулей благодаря реализованным в SELinux внешним функциям контроля доступа.
Рассматривается пример написания и использования правил SELinux для собственного приложения.