Использование SELinux для контроля доступа
Использование SELinux для контроля доступа
Введение
SELinux (Security-Enhanced Linux) — это модуль безопасности для ядра Linux, разработанный агентством NSA (National Security Agency) США. Он предоставляет механизм для включения строгого контроля доступа на уровне ядра, что позволяет более точно управлять доступом к системным ресурсам.
Основные концепции SELinux
- Политики безопасности: SELinux использует политики безопасности для определения, какие операции могут выполняться над какими ресурсами. Политики могут быть гибкими и настраиваемыми
- Контексты безопасности: В SELinux всё имеет контекст безопасности (security context), включая процессы, файлы и порты. Контексты состоят из нескольких компонент: пользователь (user), роль (role), тип (type), уровень (level)
- Типы режимов работы: SELinux может работать в одном из трёх режимов:
- Enforcing (принудительный): Политики SELinux применяются и нарушения блокируются.
- Permissive (разрешительный): Политики SELinux применяются, но нарушения только логируются, а не блокируются.
- Disabled (отключен): SELinux отключен полностью.
Установка и настройка SELinux
SELinux обычно поставляется вместе с большинством дистрибутивов Linux. Проверить статус и текущую конфигурацию SELinux можно с помощью команды `sestatus`.
Установка SELinux
Если SELinux не установлен, вы можете установить его с помощью следующей команды для дистрибутивов на базе `apt` или `yum`:
sudo apt install selinux
sudo yum install selinux
Настройка SELinux
Основной файл конфигурации находится по пути `/etc/selinux/config`. В этом файле вы можете задать режим работы SELinux.
Пример конфигурационного файла:
- `SELINUX` задаёт режим работы (enforcing, permissive, disabled)
- `SELINUXTYPE` задаёт тип политики (targeted, minimum, mls)
Использование SELinux для контроля доступа
Конфигурирование контекстов безопасности
Для изменения контекста безопасности используется команда `chcon`. Например, для установки контекста безопасности на файл `/var/www/html/index.html`, можно использовать следующую команду:
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
В данном случае мы устанавливаем тип контекста `httpd_sys_content_t`, что означает, что файл предназначен для использования веб-сервером Apache.
Управление политиками
Политики SELinux можно управлять с помощью утилит типа `semodule`, `setsebool` и `audit2allow`.
- `semodule`: Управление модулями политики SELinux, добавление и удаление модулей. Например, чтобы добавить новый модуль:
sudo semodule -i mypolicy.pp
- `setsebool`: Управление булевыми значениями, которые включают или выключают части политики SELinux. Например, включить булав:
sudo setsebool httpd_can_network_connect on
- `audit2allow`: Генерация корректировок политики на основе логов отказов. Команда помогает создать специальные правила для разрешения определённых действий, которые были запрещены
audit2allow -a -M mypol
sudo semodule -i mypol.pp
Мониторинг и аудит
Система ведёт журнал событий безопасности через сервис `auditd`. Все действия, нарушающие политику SELinux, логируются и могут быть просмотрены в файле `/var/log/audit/audit.log`. Для просмотра логов в режиме реального времени можно использовать команду `ausearch`.
ausearch -m avc --start today
Заключение
SELinux — мощный инструмент, который позволяет значительно повысить уровень безопасности систем на базе Linux. Правильная настройка и использование позволяет контролировать доступ к системным ресурсам на самом низком уровне, минимизируя риски несанкционированного доступа. Изучение и внедрение SELinux требует тщательного планирования и обратной связи через аудит и коррекцию политик, но преимущества значительно превышают затраты.