SELinux
Описание
Безопасность системы Linux построена на базе принципов безопасности UNIX
Решения в рамках обеспечения безопасности UNIX системы развивались без учета потребностей современных требований к IT инфраструктуре
Больгинство этих решений фокусируется на определенной части ОС, таким образом для обеспечения безопасности всей системы нужно собрать множество модулей
SELinux обеспечивает комлексное единое решение для целей безопасности системы
Главный принцип: "что не разрешено, то запрещено"
Исходя из этого "неизвестным" сервисам в системе всегда необходима дополнительная конфигурация для активации их в системе с включенным SELinux
Режимы SELinux
SELinux имеет два базовых состояния: включен и выключен
Смена состояния возможна только с перезагрузкой системы
В включенном (enabled) состоянии есть два режима:
Enforcing - включены все механизмы
Permissive - логирование, но без блокирования сервисов
Смена между режимами не требует перезагрузки
setenforce - смена режима
getenforce - отобразить текущий статус
/etc/sysconfig/selinux позволяет настроить статус по-умолчанию
После перевода SELinux из отключенного состояния во включенное, система будет перемаркирована, о чем уведомит в консоли при перезагрузке
Это может занять продолжительное время в зависимости от размера файлов и системы
Маркираторы и логические операторы
Каждый объект в системе промаркирован с помощью context label
Он состоит из трех компонентов:
user - пользовательский контекст
role - ролевой контекст
type - флаги операций, доступных объекту
Многие команды поддерживают опцию -Z для отображения текущей контекстной информации
Типы контекстов используется в правилах политик для определения того, какие объекты к каким таргетам имеют доступ
Пример вывода контекстной информации:
unconfined - статус процесса, который не блокируется SELinux
system_u - пользовательский контекст
system_r - ролевой контекст
kernel_t - контекст типа
Доступ определяется правилами в SELinux, которые сопоставляют какие контексты могут между собой взаимодействовать
Логический оператор (boolean) - есть переключатель on/off
Используется для включения или отключения определенных категорий функциональности разом
Статус можно проверить через getsebool
Изменить значение можно через setsebool -P <boolean_name>
Файловый контекст
Установить файловый контекст:
semanage fcontext
Данная команда запишет контекст в политики SELinux, но не меняет значения в файловой системе
Для установки политики в файловую систему необходимо использовать restorecon
Альтернативно можно использовать touch /.autorelabel для перемаркировки всех файлов
Система должна быть перезагружена
Пример:
Если необходимо заменить для HTTP сервера директорию, то соответственно для контекста типа надо произвести замену (в данном случае меняется /var/www/html на /web и создается новое правило)
restorecon для применения изменений
Логи SELinux
SELinux использует auditd для записи логов
Данные логи трудны для восприятия
Для интерпретации логов аудита в удобочитаемые логи /var/log/messages используется sealert
Использование sealert вместе с UUID даст рекомендации по решению проблемы с SELinux
Last updated