Skip to main content

Мандатная модель контроля доступа (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

Компоненты типичной MAC-системы:

  1. Reference Monitor (Монитор обращений) — проверяет каждый запрос к ресурсам
  2. Security Policy Database (База политик безопасности) — хранит правила доступа
  3. Security Labels (Метки безопасности) — присваиваются всем субъектам и объектам
  4. 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 в трех режимах:

  1. Enforcing — политики применяются и блокируют нарушения
  2. Permissive — нарушения регистрируются, но не блокируются
  3. 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. Преимущества

  1. Высокий уровень безопасности — централизованный контроль, не зависящий от пользователей
  2. Защита от ошибок пользователей — даже администраторы не могут нарушить политику безопасности
  3. Защита от вредоносного ПО — программы ограничены даже при выполнении от имени привилегированных пользователей
  4. Строгое разделение информации — идеально для многоуровневых систем безопасности
  5. Контроль целостности системы — возможность применения моделей целостности (Биба)

5.2. Недостатки

  1. Сложность администрирования — требуется специальная подготовка персонала
  2. Снижение удобства использования — более строгие ограничения для пользователей
  3. Производительность — дополнительные проверки влияют на скорость работы
  4. Сложность настройки — правильная настройка требует времени и экспертизы
  5. Проблемы совместимости — некоторые приложения могут не работать в строгой 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, AppArmorNTFS ACL, Unix permissionsActive DirectoryXACML

8. Архитектурный подход к MAC

8.1. Многоуровневая модель безопасности

В современных системах MAC часто реализуется как часть многоуровневой защиты:

  1. Уровень ядра — базовые механизмы MAC, встроенные в ядро ОС
  2. Уровень сервисов — дополнительные службы безопасности
  3. Уровень приложений — конкретные ограничения для отдельных программ
  4. Уровень данных — защита на уровне отдельных данных (шифрование, метки)

8.2 Реализация принципа наименьших привилегий

MAC позволяет реализовать принцип наименьших привилегий через:

  1. Изоляцию процессов — каждое приложение работает в своем домене
  2. Детальные политики — точное определение необходимых разрешений
  3. Строгий контроль — блокировка любых неавторизованных действий
  4. Аудит нарушений — мониторинг и обнаружение попыток нарушения

9 Исторический контекст

MAC модели были разработаны в 1970-х годах для защиты военных и правительственных систем:

  • 1973 — Модель Белла-ЛаПадула для конфиденциальности
  • 1977 — Модель Биба для целостности
  • 1997 — Первые реализации MAC для коммерческих UNIX-систем
  • 2000 — Начало разработки SELinux (АНБ США)
  • 2005 — Включение SELinux в основные дистрибутивы Linux
  • 2009 — Появление AppArmor как альтернативы SELinux

10. Вопросы для самопроверки

  1. В чем принципиальное отличие MAC от DAC?
  2. Какие основные компоненты включает в себя система MAC?
  3. Как модель Белла-ЛаПадула обеспечивает конфиденциальность?
  4. Почему MAC-системы сложнее в администрировании, чем DAC?
  5. Какие типы ограничений можно установить с помощью AppArmor?
  6. В каких случаях предпочтительнее использовать SELinux, а в каких — AppArmor?
  7. Какие уровни безопасности определены в стандартной конфигурации MLS?
  8. Как MAC противодействует атакам с повышением привилегий?