Использование SELinux для контроля доступа

Как использовать SELinux для расширенного контроля доступа к системным ресурсам.
/ Системное администрирование Аутентификация и авторизация

Использование SELinux для контроля доступа

Введение

SELinux (Security-Enhanced Linux) — это модуль безопасности для ядра Linux, разработанный агентством NSA (National Security Agency) США. Он предоставляет механизм для включения строгого контроля доступа на уровне ядра, что позволяет более точно управлять доступом к системным ресурсам.

Основные концепции SELinux

  1. Политики безопасности: SELinux использует политики безопасности для определения, какие операции могут выполняться над какими ресурсами. Политики могут быть гибкими и настраиваемыми
  2. Контексты безопасности: В SELinux всё имеет контекст безопасности (security context), включая процессы, файлы и порты. Контексты состоят из нескольких компонент: пользователь (user), роль (role), тип (type), уровень (level)
  3. Типы режимов работы: 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 требует тщательного планирования и обратной связи через аудит и коррекцию политик, но преимущества значительно превышают затраты.

Поиск