Данная статья применима к:

  • Astra Linux Special Edition
  • Astra Linux Common Edition (только в части "Разделяемые каталоги при работе без использования МРД (с нулевыми классификационными метками)")

Разделяемые каталоги при работе без использования МРД (с нулевыми классификационными метками)

Для обеспечения совместной работы пользователей в Astra Linux используются разделяемые каталоги. Содержимое этих каталогов доступно всем пользователям для чтения и (частично) для записи. Эти каталоги являются частью штатной модели файловой системы ОС, и создаются автоматически при установке ОС (подробное описание см. Filesystem Hierarchy Standard). Для работы устанавливаемого в ОС дополнительного ПО могут требоваться собственные разделяемые каталоги, не входящие в стандартную схему. Примерный список и описание каталогов приведены в таблице:

КаталогОписаниеСтандартный
каталог
/tmpКаталог временных файловых объектов.
Не сохраняется после перезагрузки ОС.
Используется для хранения временных (рабочих) данных в файловой системе.
Да
/var/tmpКаталог временных файловых объектов.
Сохраняется после перезагрузки ОС.
Используется для хранения повторно используемых рабочих данных в файловой системе.
Да
/dev/shmКаталог разделяемой памяти.
Не сохраняется после перезагрузки ОС.
Используется для обмена временными рабочими данными через разделяемую оперативную память.
Да
/run/mountКаталог временного монтирования пользовательских устройств.
Используется для автоматического монтирования с помощью сценариев подключаемых пользовательских устройств.
Да
/var/cacheКаталог для кеширования данных.
Обычно не используется при работе на ненулевых уровнях конфиденциальности в Astra Linux Special Edition так как не обязателен для нормальной работы ПО.
Да
/var/opt/cprocsp/tmpКаталог для временных файловых объектов.
Используется для работы прикладного ПО КриптоПРО.
Порядок использования описан в документации.
Нет

Разделяемые каталоги предназначены для создания в них файловых объектов, принадлежащих любым пользователям. В силу этого ограничения доступа, налагаемые моделью дискреционного управления доступом, позволяют всем пользователям выполнять создание своих файловых объектов и поиск любых (принадлежащих другим пользователям) файловых объектов во временных каталогах. Чтение и изменение содержимого не принадлежащих пользователю файловых объектов ограничивается дискреционными правами доступа. Дополнительно применяется специальное ограничение дискреционного доступа sticky-bit, запрещающее удалять и переименовывать не принадлежащие пользователю файловые объекты.

Разделяемые каталоги при работе с использованием МРД (с ненулевыми классификационными метками)

При работе в пользовательских сессиях с ненулевыми классификационными метками ограничения доступа, наложенные дискреционной моделью управления доступом на разделяемые каталоги, недостаточны для полной изоляции уровней конфиденциальности и оставляют возможность появления каналов утечки информации. Для предотвращения появления таких каналов в Astra Linux Special Edition применяется собственная структура временных каталогов, обеспечивающая полную изоляцию информации.

Для обеспечения изоляции для каждого уровня конфиденциальности создается отдельная структура временных каталогов, дублирующая стандартную структуру. Для автоматического создания этой структуры используется файл /etc/parsec/mlinks, содержащий описание создаваемой структуры. Стандартное содержимое файла /etc/parsec/mlinks:

Файл: /etc/parsec/mlinks Контрольная сумма файла: 81baeb641331678aeb2f9acc3c8e50e8690b4cc0dcaa35f0fcd9b36f2f8b79ce
/tmp /var/private/tmp 1777
/var/tmp /var/private/vartmp 1777
# /var/cache /var/private/varcache 0755
/dev/shm /run/private/shm 1777
/run/mount /run/private/mount 0755

В каждой строке содержатся три информационных поля, разделенных пробелами:

  • имя разделяемого каталога стандартной файловой системы, для которого должен быть создан дублирующий разделяемый каталог;
  • имя дублирующего разделяемого каталога, в который будут перенаправлены обращения к стандартному каталогу;
  • права доступа к дублирующему разделяемому каталогу (подробнее см. справку man chmod):
    • 1777 - полный доступ для всех пользователей, дополненный применением sticky-bit;
    • 0755 - разрешение чтения и поиска для всех пользователей;

Дублирующие разделяемые каталоги создаются при установке (загрузке) ОС, и, в дальнейшем служат корневыми каталогами для структуры сессионных каталогов.

В отличие от стандартных разделяемых каталогов все дублирующие разделяемые каталоги автоматически очищаются при перезагрузке ОС.

Сессионные каталоги автоматически создаются при входе пользователей в сессию с ненулевой классификационной меткой (при входе с нулевой классификационной меткой и ненулевой целостностью механизм не применяется), и при работе в такой сессии все обращения к разделяемым каталогам автоматически перенаправляются в соответствующие сессионные каталоги. При этом содержимое настоящего каталога, например, каталога /tmp, будет отображаться в каталог /var/private/vartmp/l0i0c0x0t0x0.

Название сессионных каталогов имеет вид:

l<иерархический_уровень_конфиденциальности>i<неиерархический_уровень_целостности>c0x<неиерархические_категории_конфиденциальности>t0x0
Аналогично используется каталог /home/.pdp для локальных сессий с ненулевой классификационной меткой: при входе локального пользователя в сессию с ненулевой классификационной меткой в каталоге /home/.pdp для пользовательского домашнего каталога создается подкаталог с именем l*i*c0x*t0x0, соответствующим классификационной метке пользовательской сессии, а обычный домашний каталог /home/<имя_пользователя> монтируется в каталог /home/.pdp/<имя_пользователя>/l0i0c0x0t0x0.

где:

  • l<иерархический_уровень_конфиденциальности> - иерархический уровень конфиденциальности пользовательской сессии, десятичное число;
  • i<уровень_целостности> - неиерархический уровень целостности пользовательской сессии, десятичное число;
  • c0x<неиерархические_категории_конфиденциальности> -  неиерархические категории конфиденциальности, шестнадцатеричное число;
  • t0x0 - метка типа, всегда t0x0.

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

Пример:

При первом входе пользователя в сессию со следующими параметрами:

  • иерархический уровень конфиденциальности 3;
  • неиерархический уровень целостности 0;
  • неиерархические категории конфиденциальности 1;

будет сформировано имя сессионного каталога:

l3i0c1x0t0x0

и будут автоматически созданы сессионные каталоги, в которые будут перенаправлены обращения к соответствующим стандартным разделяемым каталогам:

  • /var/private/tmp/l3i0c1x0t0x0;
  • /var/private/vartmp/l3i0c1x0t0x0;
  • /var/private/varcache/l3i0c1x0t0x0 (при условии, что его создание разрешено в файле /etc/parsec/mlinks);
  • /run/private/shm/l3i0c1x0t0x0;
  • /run/private/mount/l3i0c1x0t0x0.

Дополнительно будут созданы каталоги для чтения содержимого стандартных разделяемых каталогов:

  • /var/private/tmp/l0i0c0x0t0x0;
  • /var/private/vartmp/l0i0c0x0t0x0;
  • /var/private/varcache/l0i0c0x0t0x0 (при условии, что его создание разрешено в файле /etc/parsec/mlinks);
  • /run/private/shm/l0i0c0x0t0x0;
  • /run/private/mount/l0i0c0x0t0x0.

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

При дальнейшем входе пользователей в сессии с такими же классификационными метками будут использоваться уже созданные сессионные разделяемые каталоги.

Нестандартные разделяемые каталоги при работе с ненулевыми классификационными метками

При использовании в ОС дополнительного прикладного ПО, использующего нестандартные разделяемые каталоги, для обеспечения работы этого ПО может понадобиться создать дополнительные дублирующие разделяемые каталоги. Для автоматического создания сессионных каталогов и перенаправления обращений соответствующая запись должна быть включена в файл /etc/parsec/mlinks. Например, для нестандартного разделяемого каталога /var/opt/cprocsp/tmp (используется ПО КриптоПРО) должна быть добавлена запись вида:

/var/opt/cprocsp/tmp /var/private/tmp/cprocsp 1777

За очистку приватных каталогов при перезагрузке отвечает раздел clear_private сценария /usr/lib/parsec/systemd/parsec_systemd_init. Чтобы пользовательский каталог не очищался при перезагрузке, можно добавить в этот сценарий строку, которая пропускает очистку, например:

#
# Clear private dirs.
#
clear_private() {
    for d in `find /var/private/*/* 2>/dev/null` ; do
        # Следующая строка предотвращает отчистку каталога /var/private/test и его подкаталогов
        if [[ "$d" =~ ^/var/private/test/* ]]; then continue; fi 
        # Следующая строка очищает каталог
        rm -rf $d
    done
    return $?;
}


Следует помнить, что при внесении изменений в файл /etc/parsec/mlinks изменится его контрольная сумма, зафиксированная в списке gostsums.txt на установочном диске. Если файл поставлен на контроль целостности, то после его изменения следует обновить настройки контроля целостности, чтобы избежать невозможности загрузки ОС из-за нарушения целостности контролируемого файла.