Работа с SELinux

Основные понятия и управление политиками безопасности с помощью SELinux.
/ FAQ

Работа с SELinux: Основные понятия и управление политиками безопасности с помощью SELinux

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

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

Типовое принуждение (Type Enforcement, TE)

Типовое принуждение — ядро модели безопасности SELinux. В данной модели каждый объект и субъект (процесс) имеет тип. Политики безопасности определяют, какие типы субъектов могут взаимодействовать с какими типами объектов и каким образом (чтение, запись, выполнение и т.д.).

Контроль доступа на основе ролей (Role-Based Access Control, RBAC)

RBAC позволяет автоматически назначать разрешения пользователю в зависимости от его роли. Каждый пользователь входит в одну или несколько ролей и каждая роль имеет набор разрешений, определяющий доступ к ресурсам.

Многоуровневый контроль доступа (Multi-Level Security, MLS)

MLS используется для классификации данных и пользователей на разные уровни. Например, уровни могут быть определены как "секретный", "очень секретный" и "несекретный". Политики безопасности определяют, какие уровни могут взаимодействовать друг с другом.

Управление SELinux

Уровни работы SELinux

SELinux может находиться в одном из трёх режимов:

  1. Enforcing (Активное принуждение) — В этом режиме SELinux полностью контролирует доступы в системе согласно заданным политикам безопасности. Разрешения, противоречащие политике, блокируются
  2. Permissive (Разрешительный) — Политики безопасности применяются, но нарушение политик не блокирует действия. Вместо этого генерируются логи, что полезно для отладки
  3. Disabled (Отключено) — SELinux полностью отключен

Проверка состояния SELinux

Чтобы проверить текущее состояние SELinux, можно использовать команду:

sestatus

Изменение режима работы SELinux

Для переключения между режимами в реальном времени используйте команду:

setenforce [0|1]
  • `0` — переключение в разрешительный режим
  • `1` — переключение в режим активного принуждения

Чтобы изменить режим на постоянной основе, необходимо отредактировать файл конфигурации `/etc/selinux/config`.

Управление политиками безопасности

Определение политик

SELinux использует политики, написанные на специальном языке. Однако большинство пользователей работает с предустановленными политиками, которые представлены в виде пакетов на основе модуля политик.

Установка политик

Для установки и смены политик используются команды `semodule` и `semanage`.

semodule -i policy_module.pp

Использование утилиты `semanage`

`semanage` — это мощный инструмент для управления SELinux-контекстами на различных объектах.

# Пример добавления нового типа объектов
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
# Пример назначения типа
restorecon -Rv /web

Проверка контекстов файлов

Чтобы узнать контекст конкретного файла, используйте команду `ls -Z`:

ls -Z /path/to/file

Логи SELinux

В случае блокировки доступа по политике SELinux следует обращаться к логам. Основные логи можно найти в `/var/log/audit/audit.log`. Для анализа логов удобно использовать утилиту `ausearch` и `audit2why`:

ausearch -m avc -ts recent
audit2why < /var/log/audit/audit.log

Выводы

SELinux предоставляет мощный набор инструментов для повышения безопасности системы. С правильным пониманием базовых концепций и навыков управления политиками можно эффективно защищать систему от несанкционированного доступа и потенциальных угроз. В освоении SELinux критически важны практические эксперименты и регулярное обращение к документации, чтобы стать уверенным пользователем этого инструмента.

Поиск