Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

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

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

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

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

  • По умолчанию, при входе через графический интерфейс:


    Информация
    • Администратор, созданный при установке ОС, получает 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.

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

  • На контейнеры (каталоги) больше нельзя устанавливать флаги 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.


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

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

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


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

1 0b00000001 (уровень задействован)
2 0b00000010 (уровень задействован)
4 0b00000100 (уровень задействован)
8 0b00001000 (уровень задействован для X-сервера)
16 0b00010000 (может быть использован для сетевых сервисов)
32 0b00100000 (может быть использован для сетевых сервисов)
64 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, разрешающая игнорировать мандатную политику по уровням целостности