Подробный гайд: Мандатный контроль доступа (МКД) к ISO9660 в Astra Linux

Настройка мандатного контроля доступа к ISO9660 в SE. Особенности работы с метками на уровне точки монтирования и рекомендации по безопасной обработке образов.

2026.04.22                  


Подробный гайд: Мандатный контроль доступа (МКД) к ISO9660 в Astra LinuxПодробный гайд: Мандатный контроль доступа (МКД) к ISO9660 в Astra Linux

Важное техническое ограничение

Файловая система ISO9660 (используется для CD/DVD и образов .iso) не поддерживает расширенные атрибуты (xattr), в которых Astra Linux хранит мандатные метки. Поэтому назначить индивидуальные метки конфиденциальности/целостности файлам внутри ISO9660 невозможно. Управление доступом реализуется на уровне точки монтирования и политик процессов. Для сертифицированной работы с мандатным контролем рекомендуется извлекать данные в файловые системы с поддержкой xattr (ext4, xfs, btrfs).

Ниже приведён рабочий сценарий для Astra Linux Special Edition (SE) 1.7/1.8 с включённым МКД.


Требования

  • Astra Linux SE (в Common Edition МКД ограничен или отсутствует)
  • Права root или пользователя с ролью admin/security
  • Включённый режим мандатного контроля (pdp активен)
  • Установлены пакеты: astra-mac, acl, attr

Шаг 1: Проверка состояния МКД

sudo pdpctl status

Ожидаемый вывод: Мандатный контроль доступа: включён

Если выключен:

sudo pdpctl enable
sudo reboot

Проверка текущих меток:

ls -Z /

Метка имеет формат уровень:категории (например, 0:0, 1:1,2).


Шаг 2: Безопасное монтирование ISO9660

sudo mkdir -p /mnt/iso_protected
sudo mount -t iso9660 -o loop,ro,noexec,nosuid,nodev /path/to/image.iso /mnt/iso_protected

Для физического носителя:

sudo mount -o ro,noexec,nosuid,nodev /dev/cdrom /mnt/iso_protected

Параметры noexec,nosuid,nodev обязательны в мандатной среде для исключения повышения привилегий.


Шаг 3: Назначение мандатной метки точке монтирования

Поскольку ISO9660 не хранит xattr, метка применяется к каталогу точки монтирования. Ядро будет проверять её при доступе.

# Пример: метка "0:0" (общедоступный уровень, без категорий)
sudo chcat --level=0:0 /mnt/iso_protected

# Для конфиденциального уровня (пример: 2, категории 1 и 3)
sudo chcat --level=2:1,3 /mnt/iso_protected

Проверка:

ls -Zd /mnt/iso_protected

Файлы внутри /mnt/iso_protected/ не будут показывать метки через ls -Z, но ядро будет применять политику на основе метки каталога и уровня процесса.

Шаг 4: Настройка правил доступа (политики МКД)

Используйте macctl для явного разрешения/запрета доступа по меткам:

# Разрешить чтение процессам с уровнем ≥ метки точки монтирования
sudo macctl add_rule -d /mnt/iso_protected -r read -l 0:0 -m allow

# Запретить запись (для ISO9660 избыточно, но полезно для аудита)
sudo macctl add_rule -d /mnt/iso_protected -r write -l 0:0 -m deny

Применить политики:

sudo macctl apply
sudo pdpctl reload

Формат правил зависит от версии Astra Linux. В SE 1.8 используется синтаксис macctl rule add .... Подробности: man macctl.


Шаг 5: Проверка и тестирование

1. Запустите процесс с конкретным мандатным уровнем:
   sudo pdpctl run --level=0:0 cat /mnt/iso_protected/file.txt
2. Попробуйте доступ от процесса с несовместимым уровнем:
   sudo pdpctl run --level=3:5 cat /mnt/iso_protected/file.txt

Ожидается: Permission denied (в журнале: audit: MAC access denied)

3. Проверка журнала:
   sudo journalctl -u pdp -f
   # или
   sudo ausearch -m MAC_POLICY_DECISION

Альтернативный (рекомендуемый) метод: извлечение в MAC-совместимую ФС

Если требуется пофайловый мандатный контроль, используйте следующий подход:

# 1. Создайте раздел/каталог на ext4/xfs
sudo mkdir -p /srv/mac_data
sudo mount -t ext4 /dev/sdXN /srv/mac_data

# 2. Распакуйте ISO
sudo bsdtar -xf /path/to/image.iso -C /srv/mac_data/

# 3. Рекурсивно назначьте метки
sudo chcat -R --level=2:1 /srv/mac_data/*

# 4. Проверьте
ls -Z /srv/mac_data/

Теперь каждый файл будет хранить метку в xattr, и МКД будет работать штатно.


Важные замечания

Параметр Статус
Сохранение меток на ISO9660 Невозможно (нет xattr)
Метка точки монтирования Работает на уровне VFS
Персистентность после ребута Требует fstab + macctl или systemd-сервиса
Совместимость с сертификацией Только при использовании Astra Linux SE
Аудит доступа Включается через auditd + pdp

Для автоматического восстановления метки точки монтирования добавьте в /etc/fstab:

/path/to/image.iso  /mnt/iso_protected  iso9660  loop,ro,noexec,nosuid,nodev  0 0

И создайте systemd-сервис или правило udev/macctl, восстанавливающее метку после монтирования.

Источники и документация

  • man pdpctl, man macctl, man chcat
  • «Руководство администратора безопасности Astra Linux Special Edition» (раздел «Мандатный контроль доступа»)
  • ФСТЭК России: «Требования по безопасности к ОС» (приказ №17)
  • Официальный портал Astra Linux: docs.astralinux.ru

Рекомендация:

В сертифицированных средах избегайте прямого использования ISO9660 для данных, требующих мандатного контроля. Используйте образы только как источник для распаковки в ext4/xfs с последующим назначением меток chcat -R. Это гарантирует соответствие требованиям ФСТЭК и стабильную работу pdp.