+++++ Теория МРД доступна по ссылкам в статье и в видео +++++
+++++ Видео к этой статье +++++
Внешние накопители информации
В статье и видео посвящённой работе МРД с внешними носителями информации на локальном компьютере мы назначали классификационные метки на устройства в "Управлении политикой безопасности":
В домене FreeIPA эти же параметры задаются в "Политика - Политика Parsec - Учтенные устройства":
Перед добавлением устройства нужно создать группу (имя произвольно) в домене (Posix), которую нужно будет указать при добавлении устройства.
Чтобы добавить новое устройство:
1. На странице "Политика - Политика Parsec - Учтенные устройства" нажимаем "Добавить" (делается на компьютере администратора)
2. Открываем "Управление политикой безопасности" (делается на компьютере администратора). Добавляем носитель локально, как делали в статье и видео.
3. И затем копируем правило (выбираете правило и нажимаете кнопку копировать)
Локальную запись для регистрации устройства создавать не требуется. Этот диалог нужен только для того, чтобы сформировать фильтры для udev-правила, чтобы использовать эту информацию для регистрации устройства в домене.
4. Вставляем скопированное в поле "Атрибуты устройства" мастера добавления устройства в FreeIPA и нажимаем "Добавить".
5. Затем можно войти в свойства нового устройства и настроить все те же параметры, которые мы настраивали локально на компьютере.
В случае регистрации устройства в домене метки безопасности работают точно также, как и при создании регистрационной записи локально. В случае ext4 они назначаются только точке монтирования, т.е. устройство нельзя будет смонтировать, если у пользователя не будет прав на чтение точки монтирования.
Дискреционные права доступа применяются так же на точку монтирования. Хотя в FreeIPA это текстовое поле, вводить можно только число UGO, т.е. четыре цифры с лидирующим нулем, никаких rwx.
Информация о внешних накопителях хранится в домене. Когда пользователь входит в домен эта информация выгружается в SSSD и затем эту информацию запрашивает Parsec через свою реализацию NSS, так же как это делается с классификационными метками пользователя и метками целостности. И Parsec генерирует временные udev-правила для подключения этих устройств.
Общая механика следующая:
1. При входе пользователя на шаге auth pam_sss информация об учтённых устройствах вычитывается в кеш sssd.
2. На шаге session pam_parsec_mac в pam-стеке parsec вычитывает эту информацию из sssd через infopipe и генерирует временное udev-правило, описывающее это устройство.
3. При логауте временное правило удаляется.
Таким образом, рабочий сценарий:
1. Пользователь логинится.
2. Пользователь подключает флешку.
3. Пользователь монтирует флешку.
Если подключить флешку до входа в систему, работать не будет, потому-что не возникнет событие и не будет создано udev-правило.
Возможные причины отказа в монтировании:
1. У пользователя нет дискреционных прав на точку монтирования (бит execute или 1 в числовом значении).
2. У пользователя нет прав на чтение точки монтирования согласно классификационной метке.
3. Информация об устройстве не доехала до клиента (очистить кеш sssd или инвалидировать его).
4. Совсем редкий вариант - не работает связка parsec - sssd (либо не запускается pam_parsec, либо в /etc/parsec/mswitch.conf прописаны источниками files)
Создание доменной группы пользователей для разрешения полуавтоматического монтирования
Для создания доменной группы пользователей, участие в которой разрешает пользователям полуавтоматическое монтирование:
- Создать доменную группу с именем floppy и номером 25. Это можно сделать в графическом web-интерфейсе FreeIPA или при наличии билета Kerberos администратора домена командой:
ipa group-add floppy --gid=25
2. Права, предоставляемые участием в группе, будут применены при следующем входе пользователя. Включить пользователей, которым должна быть предоставлена возможность полуавтоматического монтирования, в созданную группу. Это можно сделать в графическом web-интерфейсе FreeIPA или при наличии билета Kerberos администратора домена командой:
ipa group-add-member floppy --users=<имя_пользователя>
Итого:
- Если устройство отформатировано в файловую систему поддерживающую расширенные атрибуты, например EXT4, то на ней можно создавать каталоги и файлы с разными уровнями и категориями конфиденциальности. Если устройство отформатировано в файловую систему не поддерживающую расширенные атрибуты, например FAT32, то на все устройство фиксируется одно сочетание уровень/категория конфиденциальности. Несмотря на то, что файловая система NTFS поддерживает расширенные атрибуты и в теории может содержать классификационные метки, в текущей реализации Astra Linux это не работает. Дело в том, что NTFS монтируется через FUSE, который полностью запрещен в режиме с ненулевой классификационной меткой, поэтому устройства с файловой системой NTFS принудительно монтируются с нулевой меткой конфиденциальности. В текущей реализации Astra Linux флешки с NTFS нельзя использовать для хранения секретной информации.
Сценарий подготовки файловых систем ext4/xfs для работы c несколькими различными классификационными метками
multilevel.sh
#!/bin/bash
USERNAME="user"
DEVICE="/dev/sdc1"
mkfs.ext4 $DEVICE
mkdir -p /media/usb
mount $DEVICE /media/usb
#multilevel
pdpl-file 3:0:-1:ccnr /media/usb/
mkdir /media/usb/{0,1,2,3}
pdpl-file 0:0:0:0 /media/usb/0
pdpl-file 1:0:0:0 /media/usb/1
pdpl-file 2:0:0:0 /media/usb/2
pdpl-file 3:0:0:0 /media/usb/3
chown -R ${USERNAME}:${USERNAME} /media/usb/{0,1,2,3}
ls -la /media/usb/
pdp-ls -M /media/usb/
umount /media/usb
Для подготовки файловой системы:
- Сохранить сценарий в файле multilevel.sh;
- Откорректировать значение переменной USERNAME, указав имя пользователя, для которого подготавливается устройство;
- Откорректировать значение переменной DEVICE, указав имя устройства;
- По необходимости откорректировать значения назначаемых классификационных меток;
- Сделать сценарий исполняемым выполнив команду:
sudo chmod +x multilevel.sh
6. Запустить сценарий от имени суперпользователя (суперпользователя с высоким уровнем целостности при включенном МКЦ):
sudo ./multilevel.sh
✅✅✅Сказать "Спасибо" - dzen.ru/it_propovednik?donate=true