Мандатная модель контроля доступа (MAC)
1. Введение в MAC
Мандатная модель контроля доступа (Mandatory Access Control, MAC) — строгая модель безопасности, где решения о доступе принимаются системой на основе централизованной политики безопасности и уровней конфиденциальности субъектов и объектов.
Ключевая особенность: В отличие от DAC, в мандатной модели пользователи (даже владельцы) не могут изменять политику доступа по своему усмотрению.
MAC является основой защиты в военных системах, государственных учреждениях и других средах с высокими требованиями к безопасности. Разработана для защиты от угроз, связанных с вредоносным ПО и внутренними нарушителями.
2. Теоретические основы MAC
2.1. Модель Белла-ЛаПадула (Bell-LaPadula)
Классическая модель MAC для обеспечения конфиденциальности:
- Принцип “no read up”: субъект не может читать объекты с более высоким уровнем секретности
- Принцип “no write down”: субъект не может записывать в объекты с более низким уровнем секретности
Модель использует метки безопасности, где каждый субъект и объект имеет:
- Уровень допуска/секретности (несекретно, конфиденциально, секретно, совершенно секретно)
- Категории доступа (административная, финансовая, научная и т.д.)
2.2. Модель Биба (Biba)
Модель MAC для обеспечения целостности:
- Принцип “no read down”: субъект не может читать объекты с более низким уровнем целостности
- Принцип “no write up”: субъект не может записывать в объекты с более высоким уровнем целостности
2.3. Математическое представление
MAC формально можно представить через:
- Множество субъектов S = {s₁, s₂, …, sₙ}
- Множество объектов O = {o₁, o₂, …, oₘ}
- Множество уровней доступа L = {l₁, l₂, …, lₖ}, где l₁ < l₂ < … < lₖ
- Функцию уровня доступа субъекта fs: S → L
- Функцию уровня доступа объекта fo: O → L
- Функцию разрешенного доступа A(s, o, op) → {true, false}, где op ∈ {read, write, execute}
3. Техническая реализация MAC
3.1. Архитектура MAC-систем
Компоненты типичной MAC-системы:
- Reference Monitor (Монитор обращений) — проверяет каждый запрос к ресурсам
- Security Policy Database (База политик безопасности) — хранит правила доступа
- Security Labels (Метки безопасности) — присваиваются всем субъектам и объектам
- Audit System (Система аудита) — регистрирует все события безопасности
3.2. SELinux (Security-Enhanced Linux)
SELinux — это реализация MAC для Linux, разработанная АНБ США.
Основные компоненты:
- Type Enforcement (TE) — основной механизм контроля, основанный на типах
- Role-Based Access Control (RBAC) — дополнительный уровень контроля через роли
- Multi-Level Security (MLS) — реализация модели Белла-ЛаПадула
Пример домена SELinux:
Процесс: httpd_t (тип процесса)
Файл: httpd_sys_content_t (тип файла)
Правило: allow httpd_t httpd_sys_content_t:file { read getattr };
3.3. AppArmor
AppArmor — облегченная альтернатива SELinux, использующая пути файлов вместо меток.
Структура профиля AppArmor:
/path/to/program {
# Разрешения для файлов
/path/to/file1 r, # только чтение
/path/to/file2 rw, # чтение и запись
/path/to/dir/** rwix, # полный доступ к каталогу рекурсивно
# Сетевые разрешения
network inet tcp,
# Возможности (capabilities)
capability setuid,
}
3.4. Сравнение различных реализаций MAC
| Система | Основа | Гранулярность | Сложность настройки | Производительность |
|---|---|---|---|---|
| SELinux | Типы и домены | Очень высокая | Высокая | Средняя |
| AppArmor | Пути к файлам | Средняя | Низкая | Высокая |
| SMACK | Метки | Средняя | Средняя | Высокая |
| Tomoyo | Пути и поведение | Высокая | Средняя | Средняя |
| TrustedBSD | Метки | Высокая | Высокая | Средняя |
4. Практическое применение MAC
4.1. Системы с высоким уровнем безопасности
MAC используется в следующих областях:
- Военные информационные системы
- Государственные учреждения с обработкой секретных данных
- Финансовые организации
- Критическая инфраструктура
- Медицинские информационные системы
4.2. Современные операционные системы с MAC
Военные и специализированные ОС:
- Security-Enhanced Linux (SELinux)
- Trusted Solaris
- RHEL и CentOS с включенным SELinux
Коммерческие ОС с элементами MAC:
- iOS (песочница приложений)
- Android (разрешения и песочница)
- Windows (AppLocker, Windows Defender Application Control)
- macOS (GateKeeper, песочница приложений)
4.3. Реальный пример: Red Hat Enterprise Linux с SELinux
RHEL использует SELinux в трех режимах:
- Enforcing — политики применяются и блокируют нарушения
- Permissive — нарушения регистрируются, но не блокируются
- Disabled — SELinux отключен
Типичная настройка для веб-сервера:
- Домен процесса Apache:
httpd_t - Типы файлов:
httpd_sys_content_t,httpd_sys_script_exec_t - Порты:
http_port_t(80/tcp, 443/tcp)
5. Преимущества и недостатки MAC
5.1. Преимущества
- Высокий уровень безопасности — централизованный контроль, не зависящий от пользователей
- Защита от ошибок пользователей — даже администраторы не могут нарушить политику безопасности
- Защита от вредоносного ПО — программы ограничены даже при выполнении от имени привилегированных пользователей
- Строгое разделение информации — идеально для многоуровневых систем безопасности
- Контроль целостности системы — возможность применения моделей целостности (Биба)
5.2. Недостатки
- Сложность администрирования — требуется специальная подготовка персонала
- Снижение удобства использования — более строгие ограничения для пользователей
- Производительность — дополнительные проверки влияют на скорость работы
- Сложность настройки — правильная настройка требует времени и экспертизы
- Проблемы совместимости — некоторые приложения могут не работать в строгой MAC-среде
6. Настройка и использование AppArmor
6.1. Основы AppArmor
AppArmor использует профили для ограничения приложений. Профили могут работать в режимах:
- enforce — строгое применение ограничений
- complain — только мониторинг без блокировки
6.2. Структура профиля AppArmor
#include <tunables/global>
/usr/bin/firefox {
#include <abstractions/base>
#include <abstractions/user-tmp>
#include <abstractions/nameservice>
# Доступ к домашнему каталогу пользователя
owner @{HOME}/.mozilla/** rw,
# Доступ к загрузкам
owner @{HOME}/Downloads/** rw,
# Доступ к сети
network inet stream,
network inet6 stream,
# Запрет доступа к системным файлам
deny /etc/shadow r,
# Запуск других программ
/usr/bin/evince Px,
}
6.3. Основные команды AppArmor
# Проверка статуса AppArmor
sudo aa-status
# Создание профиля на основе наблюдения
sudo aa-genprof /path/to/program
# Обновление профиля
sudo aa-logprof
# Переключение профиля в режим enforce
sudo aa-enforce /path/to/profile
# Переключение профиля в режим complain
sudo aa-complain /path/to/profile
7. Сравнение с другими моделями доступа
Сравнительная таблица моделей доступа
| Аспект | MAC (Мандатная) | DAC (Дискреционная) | RBAC (Ролевая) | ABAC (Атрибутивная) |
|---|---|---|---|---|
| Управление | Система | Владелец ресурса | Администратор | Политики и атрибуты |
| Гибкость | Низкая | Высокая | Средняя | Очень высокая |
| Безопасность | Очень высокая | Средняя | Высокая | Высокая |
| Сложность | Высокая | Низкая | Средняя | Очень высокая |
| Централизация | Полная | Отсутствует | Высокая | Высокая |
| Пример | SELinux, AppArmor | NTFS ACL, Unix permissions | Active Directory | XACML |
8. Архитектурный подход к MAC
8.1. Многоуровневая модель безопасности
В современных системах MAC часто реализуется как часть многоуровневой защиты:
- Уровень ядра — базовые механизмы MAC, встроенные в ядро ОС
- Уровень сервисов — дополнительные службы безопасности
- Уровень приложений — конкретные ограничения для отдельных программ
- Уровень данных — защита на уровне отдельных данных (шифрование, метки)
8.2 Реализация принципа наименьших привилегий
MAC позволяет реализовать принцип наименьших привилегий через:
- Изоляцию процессов — каждое приложение работает в своем домене
- Детальные политики — точное определение необходимых разрешений
- Строгий контроль — блокировка любых неавторизованных действий
- Аудит нарушений — мониторинг и обнаружение попыток нарушения
9 Исторический контекст
MAC модели были разработаны в 1970-х годах для защиты военных и правительственных систем:
- 1973 — Модель Белла-ЛаПадула для конфиденциальности
- 1977 — Модель Биба для целостности
- 1997 — Первые реализации MAC для коммерческих UNIX-систем
- 2000 — Начало разработки SELinux (АНБ США)
- 2005 — Включение SELinux в основные дистрибутивы Linux
- 2009 — Появление AppArmor как альтернативы SELinux
10. Вопросы для самопроверки
- В чем принципиальное отличие MAC от DAC?
- Какие основные компоненты включает в себя система MAC?
- Как модель Белла-ЛаПадула обеспечивает конфиденциальность?
- Почему MAC-системы сложнее в администрировании, чем DAC?
- Какие типы ограничений можно установить с помощью AppArmor?
- В каких случаях предпочтительнее использовать SELinux, а в каких — AppArmor?
- Какие уровни безопасности определены в стандартной конфигурации MLS?
- Как MAC противодействует атакам с повышением привилегий?
