Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 11 Следующий »

Подробно все изменения описаны в РУК КСЗ по ОССН Смоленск 1.6

Значения по умолчанию

  • По умолчанию, после установки ОС:
    • включен режим МКЦ ОС:
      • установлен параметр ядра `max_ilev = 63`
      • все процессы, начиная от init до менеджера входа fly-dm, имеют уровень целостности 63 (если в конфигурации юнита явно не указано иное).
      • Графический сервер Xorg по умолчанию работает не от имени суперпользователя root (uid 0), а от пользователя, и работает на выделенном уровне МКЦ 8.

    • МКЦ на ФС после установки по умолчанию не включен,
      и должен быть включен после настройки ОС администратором.

    • В системе МКД настроено 4 уровня конфиденциальности (0 - 3), количество которых можно увеличить до 255

  • По умолчанию, при входе через графический интерфейс:
    • Администратор, созданный при установке ОС, получает 63-й «красный» уровень МКЦ,
    • Пользователи получают нулевой «синий» уровень МКЦ
  • По умолчанию, при входе через SSH:
    • Администраторы из группы astra-admin автоматически получают 63-й «красный» уровень МКЦ
    • Пользователи получают нулевой «синий» уровень МКЦ.
  • Администратор, созданный при установке ОС, при входе через консоль должен вручную выставлять уровень МКЦ в 63.

  • Для отдельных юнитов, в дальнейшем, возможно задать свой "выделенный уровень МКЦ" (например, apache можно запустить на первом уровне МКЦ), так же возможно задать для юнита systemd свой уровень конфиденциальности.
    После включения МКЦ на ФС юниты или процессы на выделенном уровне МКЦ (например, на уровнях 1 или 2) не смогут записывать в файлы и каталоги, на которые будет установлено максимальное значение МКЦ 63 (см. set-fs-ilev или fly-admin-smc). Рекомендуемые уровни МКЦ:

для сетевых сервисов: - 1

для подсистем виртуализации (для гостевых систем, отличных от ОССН Смоленск и контейнеров LXC на нулевом уровне): 2,

для внешнего СПО: 4

  • X-сервер в общем случае (если есть поддержка KMS в ядре) по умолчанию работает от имени пользователя fly-dm под выделенным уровнем МКЦ 8.

  • При установке системы следующим устройствам автоматически присваивается уровень конфиденциальности 3:

/dev/sd* 
/dev/vd*
/dev/hd*



Флаги мандатной метки

  • На контейнеры (каталоги) больше нельзя устанавливать флаги ehole.
    Допускается только установка флагов
ccnr (для конфиденциальности)
ccnri (для целостности).

Можно использовать псевдоним CCNRA (соответствует одновременно установленным флагам ccnr и ccnri).


  • Флаг ehole доступен, как и ранее, для установки на файлах, и, дополнительно, введен новый флаг
whole

дающий разрешение записывать в файл «снизу вверх» (чтение по обычным правилам МРД).
Новый флаг whole также нельзя устанавливать на контейнерах.


  • Запись в каталог с высокой целостностью и установленным флагом ccnri
    не может быть выполнена процессом с более низким уровнем целостности чем у контейнера (каталога).

  • Пользователь не может производить запись в контейнер (каталог)
    с установленным больше нуля уровнем МКЦ  и с установленным флагом ccnri,
    если он не вошел в систему на уровне МКЦ равном или большем уровню МКЦ контейнера,
    или не обладает привилегией parsec_cap_ignmacint.

  • Пользователь не может производить запись в контейнер (каталог)
    с установленной (ненулевой) меткой конфиденциальности и с установленным флагом ccnr
    информацию, отличную от уровня конфиденциальности контейнера,
    если он не зашел под уровнем конфиденциальности равным уровню конфиденциальности контейнера (каталога),
    или не обладает привилегиями parsec_cap_ignmaccat и parsec_cap_ignmaclvl.

  • Eсли в загрузчике указать параметр ядра
parsec.ccnr_relax=1

то непривилегированный пользователь получит возможность производить запись файлов с разным уровнем конфиденциальности в контейнер (каталог) с установленным флагом ccnr.


Уровни целостности

  • Сравнение уровней целостности проводится по битовой маске:

запись в объект (или остановка процесса или юнита) разрешена,
если набор бит уровня МКЦ субъекта
"включает" в себя (операция сравнения &) набор бит уровня МКЦ объекта.


  • В системе определен набор из восьми ненулевых изолированных уровней МКЦ:

000 0b00000000 - Нулевой уровень. "Низкий", или "Low"
001 0b00000001 - Уровень задействован как "Сетевые сервисы"
002 0b00000010 - Уровень задействован как "Виртуализация"
004 0b00000100 - Уровень задействован как "Специальное ПО"
008 0b00001000 - Уровень задействован как "Графический сервер"
016 0b00010000 - Свободен, может быть использован для сетевых сервисов.
032 0b00100000 - Свободен, может быть использован для сетевых сервисов.
064 0b01000000 - Зарезервирован, и может быть использован при поднятии max_ilev.
128 0b10000000 - Зарезервирован, и может быть использован при поднятии max_ilev.

При этом, изолированные уровни 1,2,4,8-задействованы,
уровни 16,32 также могут быть использованы для различных сетевых сервисов и СПО.
Уровни 64 и 128 зарезервированы, и могут быть использованы только при одновременном поднятии max_ilev.


  • Уровень МКЦ после установки контроля целостности на ФС по умолчанию будет равен 63 (0b00111111), и запись в объекты ФС возможна только для процессов с уровнями

63 0b00111111
127 0b01111111
191 0b10111111
255 0b11111111



Уровни целостности для systemd-служб

  • Механизм одновременной работы с разными уровнями sumac теперь доступен только для тех пользователей,
    которым задана привилегия parsec_cap_sumac.


  • В ОС реализована возможность назначения уровня целостности и конфиденциальности для systmed-служб.
    Для этого в unit-файле службы <name>.service нужно добавить параметр PDPLabel с нужной мандатной меткой в разделе [Service]:
[Service]
PDPLabel=<Уровень>:<Целостность>:<Категории>

Формат метки аналогичен принятому в системе Parsec (pdpl-file --help), за исключением поля типа метки: метка процесса не может иметь флагов ccnr/ccnri/ehole/whole.

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

После редактирования unit-файла вызовите:

systemctl daemon-reload; systemctl restart <name>.service

Для проверки реально полученной метки процесса определите pid процесса:

systemctl status <name>.service

и по определённому pid процесса узнайте метку

pdpl-ps <pid>

Parsec-привилегии

  • Добавлена Parsec-привилегия PARSEC_CAP_SUMAC, позволяющая запускать процессы другим уровнем конфиденциальности.

Поддерживаются привилегии, добавленные в предыдущей версии ОССН Смоленск:

  • Привилегия PARSEC_CAP_UNSAFE_SETXATTR, позволяющая устанавливать мандатные атрибуты объектов ФС без учета мандатных атрибутов родительского объекта-контейнера.
    Привилегия используется для восстановления объектов ФС из резервных копий, и действует только после установки значения 1  для параметра /parsecfs/unsecure_setxattr

  • Привилегия PARSEC_CAP_IGNMACINT, разрешающая игнорировать мандатную политику по уровням целостности

  • Нет меток