Работа с SELinux
Работа с 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 может находиться в одном из трёх режимов:
- Enforcing (Активное принуждение) — В этом режиме SELinux полностью контролирует доступы в системе согласно заданным политикам безопасности. Разрешения, противоречащие политике, блокируются
- Permissive (Разрешительный) — Политики безопасности применяются, но нарушение политик не блокирует действия. Вместо этого генерируются логи, что полезно для отладки
- 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 критически важны практические эксперименты и регулярное обращение к документации, чтобы стать уверенным пользователем этого инструмента.