Мандатное управление доступом и мандатный контроль целостности в ОС СН Astra Linux Special Edition описаны в документе РУСБ.10015-01 97 01-1 Руководство по КСИ. Часть 1.

Мандатный контроль целостности

МКЦ - ключевой механизм обеспечения безопасности ОС Astra Linux и ПК СВ Брест. Основной целью МКЦ является защита от вредоносного ПО и несанкционированного доступа к информации. Основной задачей МКЦ является обеспечение целостности системных компонентов. Основным правилом МКЦ является запрет изменения компонентов с уровнем целостности выше предоставленного.

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

При установке ОС по умолчанию предлагается максимальный уровень целостности 63 (битовая маска 00111111), минимальный уровень всегда 0. Максимальными уровнями целостности в системе могут быть числа, у которых битовая маска включает битовые маски всех остальных используемых уровней целостности в системе, например, 63 (0x3F, битовая маска 00111111), 127 (0x7F, битовая маска 01111111), 191 (0xBF, битовая маска 10111111) и 255 (0xFF, битовая маска 11111111).

При установке ПК СВ максимальный уровень целостности компонентов ОС (как и компонентов ПК СВ) повышается до 127. Целостность ВМ по умолчанию равна 63, ее можно изменить в конфигурационном файле /etc/libvirt/libvirtd.conf опцией ilev_vm.

В ПК СВ настройка уровня целостности доступна при установке:

Мандатное разграничение доступа

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

В ПК СВ можно использовать дополнительные механизмы средств защиты информации ОС СН, которые дополнительно обеспечивают выполнение следующих функций безопасности: дискреционное и мандатное управление доступом к ВМ и образам ВМ, в том числе при межпроцессорном и сетевом взаимодействии, включая взаимодействие между ВМ по протоколам стека IPv4 и IPv6 в условиях мандатного управления доступом и доступ субъектов к файлам-образам и экземплярам функционирующих ВМ.

Для реализации настройки МРД, необходимо чтобы:

  • ПК СВ работал в Дискреционном режиме;
  • вход в систему был осуществлен с терминала, введенного в домен к которому принадлежит ПК СВ.

Для настройки использования МРД в ПК СВ  необходимо:

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Экземпляры ВМВМ;
  2. Из списка выбрать ВМ, для которой необходимо настроить МРД;
  3. На странице ВМ перейти во вкладку Безопасность:
  4. В поле Модель PARSEC в выпадающем списке Тип выбрать один из двух типов: 
    • Динамический — уровень доступа к ВМ назначается согласно классификационной метке пользователя;
    • Статический — пользователь может выбрать уровень доступа, указав классификационную метку. Пример метки доступа X:0:0xY, где:

      • X: — уровень конфиденциальности;

      • 0: — уровень МКЦ (игнорируется);
      • 0xY — уровень категории конфиденциальности.

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

        Использование статической метки позволяет определить доступ к ВМ в случае наличия нескольких уровней и категорий ограничения доступа у пользователя или скорректировать доступ исходя из потребностей организации.

  5. В поле Дискреционный контроль доступа необходимо указать (все поля обязательны для заполнения):
    • Тип Пользователь или Группа;
    • Субъект — каким пользователям или группе будет доступна данная ВМ;
    • Права доступаУправление, если субъекту будет доступна возможность управления настройками ВМ, или Использование в ином случае:

      Для назначения меток безопасности необходимо указать хотя бы одну запись.

Примеры

В примерах ниже описаны настройки для пользователя adm1.

Использование динамической модели

Для настройки динамической модели МРД в ПК СВ  необходимо:

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Экземпляры ВМВМ.
  2. Из списка ВМ выбрать ту, для которой необходимо настроить МРД.
  3. На странице ВМ перейти во вкладку Безопасность.
  4. В поле Модель PARSEC в выпадающем списке Тип выбрать Динамический.
  5. В поле Дискреционный контроль доступа:
    • в выпадающем списке Тип выбрать Пользователь;
    • в выпадающем списке Субъект выбрать adm1;
    • в выпадающем списке Права доступа выбрать Управление;
    • нажать кнопку Добавить.
  6. На странице ВМ нажать кнопку Сохранить:

Чтобы увидеть метку конфиденциальности, полученную ВМ после запуска с указанием динамического типа модели необходимо выполнить команду на сервере виртуализации:

pdpl-ps -n <PID>
где PID — идентификатор процессора, который запустил ВМ.

Чтобы узнать идентификатор процесса, запустившего ВМ необходимо выполнить команду:

ps -aux | grep arm1

root@node1:~# ps -aux | grep adm1
adm1    143728  2.5  0.9 2215584 78912 ?       Sl   18:37   0:07 /usr/bin/qemu-kvm-one -name guest=one-117,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/7-one-117/master-key.aes"} -machine pc-i440fx-7.2,usb=off,dump-guest-core=off,memory-backend=pc.ram -accel kvm -cpu qemu64 -m 512 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":536870912} -overcommit mem-lock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 7bbc4a04-708f-49a4-9141-29914e00228b -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=48,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device {"driver":"ich9-usb-ehci1","id":"usb","bus":"pci.0","addr":"0x8.0x7"} -device {"driver":"ich9-usb-uhci1","masterbus":"usb.0","firstport":0,"bus":"pci.0","multifunction":true,"addr":"0x8"} -device {"driver":"ich9-usb-uhci2","masterbus":"usb.0","firstport":2,"bus":"pci.0","addr":"0x8.0x1"} -device {"driver":"ich9-usb-uhci3","masterbus":"usb.0","firstport":4,"bus":"pci.0","addr":"0x8.0x2"} -device {"driver":"virtio-scsi-pci","id":"scsi0","num_queues":1,"bus":"pci.0","addr":"0x3"} -device {"driver":"ahci","id":"sata0","bus":"pci.0","addr":"0x4"} -device {"driver":"virtio-serial-pci","id":"virtio-serial0","bus":"pci.0","addr":"0x5"} -object {"qom-type":"secret","id":"libvirt-2-storage-auth-secret0","data":"u0Q3SRxQ81UnPT8JCDNgW+cwlShwQMoa9DLsqMuser/QY+8=","keyid":"masterKey0","iv":"4Jx+iTFr9zI23a+0d2R7Fw==","format":"base64"} -blockdev {"driver":"rbd","pool":"one","image":"one-35-117-0","server":rage:{"host":"10.177.125.51","port":"6789"},{"host":"10.177.125.52","port":"6789"},{"host":"10.177.53","port":"6789"}],"user":"libvirt","auth-client-required":rage:"cephx","none"],"key-secret":"libvirt-2-storage-auth-secret0","node-name":"libvirt-2-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","cache":{"direct":true,"no-flush":false},"driver":"raw","file":"userlibvirt-2-storage"} -device {"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-2-format","id":"virtio-disk0","bootindex":1,"write-cache":"on"} -blockdev {"driver":"file","filename":"/var/lib/one//datastores/104/117/disk.1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"} -device {"driver":"ide-cd","bus":"sata0.0","drive":"libvirt-1-format","id":"sata0-0-0"} -chardev socket,id=charchannel0,fd=43,server=on,wait=off -device {"driver":"virtserialport","bus":"virtio-serial0.0","nr":1,"chardev":"charchannel0","id":"channel0","name":"org.qemu.guest_agent.0"} -audiodev {"id":"audio1","driver":"none"} -vnc 0.0.0.0:117,password=on,audiodev=audio1 -device {"driver":"qxl-vga","id":"video0","max_outputs":1,"ram_size":134217728,"vram_size":134217728,"vram64_size_mb":0,"vgamem_mb":32,"bus":"pci.0","addr":"0x2"} -device {"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x7"} -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on
oneadmin  146650  0.1  0.1  19252 10316 ?        Ss   18:41   0:00 /lib/systemd/systemd --user
root      148226  0.0  0.0   6228   824 pts/0    S+   18:42   0:00 grep user
CODE

Пример вывода:

root@node1:~# pdpl-ps -n 143728
143728 2:63:0x2:0x0!
CODE

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

  1. В веб-интерфейсе сервера FreeIPA  на вкладке Пользователи из меню слева выбрать Активные пользователи.
  2. На странице Активные пользователи выбрать необходимого пользователя.
  3. На вкладке Параметры идентификации в поле Классификационная метка пользователя будет отражена метка пользователя:
  4. В командной строке ВМ ввести команду:

    pdp-id
    Пример вывода:

    adm1@astrvdi:~$ pdp-id
    Уровень конф.=2(Уровень_2), Уровень целостности:0(Низкий), Категории=0xf(Катеория_0, Категория_1, Категория_2, Категория_3)
    Роли=()
    CODE

Использование статической модели

Для настройки статической модели МРД в ПК СВ  необходимо:

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Экземпляры ВМВМ.
  2. Из списка ВМ выбрать ту, для которой необходимо настроить МРД.
  3. На странице ВМ перейти во вкладку Безопасность.
  4. В поле Модель PARSEC:
    1. в выпадающем списке Тип выбрать Статический;
    2. в поле Метка задать необходимую метку (в данном примере 2:0:0х2).
  5. В поле Дискреционный контроль доступа:
    • в выпадающем списке Тип выбрать Пользователь;
    • в выпадающем списке Субъект выбрать adm1;
    • в выпадающем списке Права доступа выбрать Управление;
    • нажать кнопку Добавить;
    • в выпадающем списке Тип выбрать Пользователь;
    • в выпадающем списке Субъект выбрать user21;
    • в выпадающем списке Права доступа выбрать Управление;
    • нажать кнопку Добавить.
  6. На странице ВМ нажать кнопку Сохранить:
  7. Вывод метки:

    root@node1:~# pdpl-ps -n 143728
    143728 2:63:0x2:0x0!
    CODE

Для пользователя user21 в веб-интерфейсе ПК СВ на странице Экземпляры ВМВМ будут видны только ВМ с меткой соответствующей выбранному пользователю (МКЦ может отличаться):