+++++ Теория МРД доступна по ссылкам в статье и в видео +++++
+++++ Видео к этой статье смотрите по ссылке +++++
Настройка уровней и категорий конфиденциальности
Прежде чем использовать механизм мандатного управления доступом необходимо настроить уровни и категории конфиденциальности.
- Войдите в систему локальным администратором с высоким уровнем целостности, который имеет право выполнять команды от имени root с использованием утилиты sudo.
- Откройте оснастку «Параметры системы > Безопасность > Политика безопасности».
- Откройте страницу «Мандатные атрибуты».
- На вкладке «Категории» настройте, например, следующие записи:
- 0 – Мотострелковые_войска
- 1 – Танковые_войска
- 2 – Ракетные_войска_и_артиллерия
- 3 – Войска_ПВО_Сухопутных_войск
- 4 – Специальные_войска_и_службы
5. На вкладке «Уровни конфиденциальности» удалите созданные ранее уровни и создайте, например:
- 0 – Документы_общего_пользования
- 1 – Для_служебного_пользования
- 2 – Секретно
- 3 – Совершенно_секретно
- 4 – Особой_важности
6. В файле /usr/sbin/pdp-init-fs поднимите значение максимального уровня конфиденциальности sysmaxlev до 4:
sudo nano /usr/sbin/pdp-init-fs
7. Перезагрузите операционную систему компьютера, чтобы изменения вступили в силу.
8. Присвоить администратору МРД максимальный уровень конфиденциальности и все категории, если нужно, чтобы администратор мог работать с секретными документами. В общем случае, когда администратор занят только администрированием, а работой с документами - отдельные сотрудники, присваивать администратору уровни и категории конфиденциальности не нужно, у него и так есть все необходимые права (это показано в видео к этой статье, ссылка на видео - в начале статьи).
Создание структуры каталогов для секретных документов
Для работы с секретными документами под каждый уровень и категорию конфиденциальности рекомендуется создать отдельный каталог.
1. Войдите в систему локальным администратором с высоким уровнем целостности, который имеет право выполнять команды от имени root с использованием утилиты sudo.
2. Создайте в корне системного диска каталог «Документы», назначьте на него максимальный уровень конфиденциальности (4), все доступные в системе категории (-1) и атрибут ccnr, чтобы в этом каталоге можно было хранить объекты с любыми метками конфиденциальности:
sudo mkdir /Документы
sudo pdpl-file 4:0:-1:ccnr /Документы
3. В созданном каталоге «Документы» cоздайте каталог «Мотострелковые_войска» и назначьте на него максимальный уровень конфиденциальности (4), категорию «Мотострелковые_войска» (т.е. значение 0x1, что в двоичном виде соответствует числу 0b1) и атрибут ccnr, чтобы в этом каталоге можно было хранить секретные документы мотострелковых войск с разными уровнями конфиденциальности:
sudo mkdir /Документы/Мотострелковые_войска
sudo pdpl-file 4:0:0x1:ccnr /Документы/Мотострелковые_войска
Создайте остальные каталоги по названию категорий, например для категории "Танковые войска":
sudo mkdir /Документы/Танковые_войска
sudo pdpl-file 4:0:0x2:ccnr /Документы/Танковые_войска
4. Создайте каталоги по уровням конфиденциальности и назначьте на них категорию «Мотострелковые_войска» 0x1 и соответствующий уровень конфиденциальности:
sudo mkdir /Документы/Мотострелковые_войска/Документы_общего_пользования
sudo pdpl-file 0:0:0x1:0 /Документы/Мотострелковые_войска/Документы_общего_пользования
sudo mkdir /Документы/Мотострелковые_войска/Для_служебного_пользования
sudo pdpl-file 1:0:0x1:0 /Документы/Мотострелковые_войска/Для_служебного_пользования
sudo mkdir /Документы/Мотострелковые_войска/Секретно
sudo pdpl-file 2:0:0x1:0 /Документы/Мотострелковые_войска/Секретно
sudo mkdir /Документы/Мотострелковые_войска/Совершенно_секретно
sudo pdpl-file 3:0:0x1:0 /Документы/Мотострелковые_войска/Совершенно_секретно
sudo mkdir /Документы/Мотострелковые_войска/Особой_важности
sudo pdpl-file 4:0:0x1:0 /Документы/Мотострелковые_войска/Особой_важности
Повторите действия для остальных категорий конфиденциальности, например для создания каталога у уровнем конфиденциальности "Секретно" и категорией "Танковые_войска":
sudo mkdir /Документы/Танковые_войска/Секретно
sudo pdpl-file 2:0:0x2:0 /Документы/Танковые_войска/Секретно
5. Настройте дискреционные права для пользователя localadmin (настройка дискреционных прав для рядового пользователя показано в видео к этой статье по ссылке)
sudo chmod -R 700 /Документы/
sudo setfacl --modify u:localadmin:rx /Документы/
sudo setfacl --recursive --modify u:localadmin:rwx,d:u:localadmin:rwx /Документы/Мотострелковые_войска/
sudo setfacl --modify u:localadmin:rx /Документы/Мотострелковые_войска/
Повторите действия для остальных категорий конфиденциальности.
Настройка учетных записей для работы с конфиденциальными документами
Для того чтобы пользователь мог выполнять вход в систему с меткой конфиденциальности, администратор должен назначить ему допустимые категории и уровни конфиденциальности.
1. Войдите в систему локальным администратором с высоким уровнем целостности, который имеет право выполнять команды от имени root с использованием утилиты sudo.
2. Откройте оснастку «Панель управления > Безопасность > Политика безопасности».
3. Откройте страницу «Пользователи > localadmin»
4. На вкладке «МРД» настройте:
- Максимальный уровень конфиденциальности «4:Особой_важности»
- Максимальные категории конфиденциальности 0-4
5. Попробуйте выполнить вход в систему с уровнем конфиденциальности «Особой_важности» и категорией «Мотострелковые_войска».
Ограничение доступа к документам через механизм мандатного управления доступом
Проверим возможности системы по ограничению доступа к конфиденциальным документам через механизм мандатного управления доступом.
1. Выполните вход в систему пользователем localadmin с уровнем конфиденциальности «Секретно» и категорией «Мотострелковые_войска».
2. Проверьте, что в документах вы можете видеть только каталог «Мотострелковые_войска», а внутри него папки не выше уровня «Секретно»:
ls -l /Документы/
ls -l /Документы/Мотострелковые_войска/
3. Проверьте, что вы можете создать файл в каталоге с тем же уровнем конфиденциальности:
echo "Секретная информация" > /Документы/Мотострелковые_войска/Секретно/документ.txt
cat /Документы/Мотострелковые_войска/Секретно/документ.txt Секретная информация
4. Проверьте, что вы не можете рассекретить информацию путем копирования файлов в каталоги с более низким уровнем конфиденциальности:
cp /Документы/Мотострелковые_войска/Секретно/документ.txt /Документы/Мотострелковые_войска/Для_служебного_пользования/
Попробуйте еще раз, используя операции чтения/записи:
cat /Документы/Мотострелковые_войска/Секретно/документ.txt > /Документы/Мотострелковые_войска/Для_служебного_пользования/документ.txt
Засекречивание документов
Изменять метки безопасности объектов файловой системы с помощью утилиты pdpl-file может только администратор МКЦ/МРД, но создать поток, приводящий к тому, что информация из файлов с низкой классификационной меткой попадет в файлы с высокой классификационной меткой может любой пользователь, т.к. это не приведет к разглашению секретной информации. Для этого достаточно будет просто скопировать файлы в соответствующий каталог.
sudo cp /usr/bin/ls /Документы/Мотострелковые_войска/Совершенно_секретно/
cp /Документы/Мотострелковые_войска/Секретно/документ.txt /Документы/Мотострелковые_войска/Совершенно_секретно/
pdp-ls -M /Документы/Мотострелковые_войска/Совершенно_секретно/*
Рассекречивание документов
Если требуется рассекретить информацию или передать ее в смежный департамент, требуется привлечь администратора. Допустим, нам нужно передать часть файлов в танковые войска.
1. Сотрудник должен войти в систему с категорией «Мотострелковые_войска» и уровнем «Секретно», чтобы подготовить каталог с документами, которые подлежат передаче в смежный департамент. Например:
mkdir /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска
cp /Документы/Мотострелковые_войска/Секретно/документ.txt /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска/
mkdir /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска/доп_каталог
echo "Дополнительный блок секретной информации" > /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска/доп_каталог/документ2.txt
2. По заявке от сотрудников администратор на уровне дискреционных прав доступа блокирует возможность редактирования этого каталога:
sudo chmod -R 100 /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска
sudo setfacl --recursive --modify m::r,d:m:r /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска
3. Сотрудники собирают комиссию и по итогам ее заседания направляют администратору заявку на передачу или рассекречивание документов.
4. Далее администратор МРД выполняет перемещение:
4.1. Сначала нужно перенести каталог в корень диска, т.к. на него назначены все категории, уровни конфиденциальности и атрибут CCNR (делается под root и МКЦ 63). Требуется именно перемещать, чтобы сохранились метки безопасности.
sudo mv /Документы/Мотострелковые_войска/Секретно/Передать_в_танковые_войска /
4.2. Затем на каталоги нужно установить атрибут CCNR и расширить классификационную метку, чтобы она включала классификационные метки источника и приемника. Такие настройки нужны, чтобы можно было изменить классификационные метки файлов. Так как новая метка больше текущей метки каталогов, изменять метки нужно сверху вниз с прямой сортировкой:
sudo pdpl-file --recursive 2:0:0x3:ccnr /Передать_в_танковые_войска
4.3. Затем нужно установить целевую метку, снимая атрибут CCNR с каталогов. Так как новая метка меньше текущей метки каталогов, изменять метки нужно снизу вверх с обратной сортировкой:
sudo pdpl-file --recursive --reverse 2:0:0x2:0 /Передать_в_танковые_войска
5. В завершение остается переместить документы в каталог-приемник (под админом МРД):
sudo mv /Передать_в_танковые_войска /Документы/Танковые_войска/Секретно
sudo ls -l /Документы/Танковые_войска/Секретно
Архивирование и восстановление
Администратор может создать архив с сохранением меток безопасности при помощи утилиты tar с ключом --xattrs. Например, чтобы заархивировать все домашние каталоги пользователей, включая объекты с метками конфиденциальности, нужно выполнить следующую команду:
sudo tar --xattrs --acls -cvzf /opt/home.tgz /home/
где:
- --xattrs — включает поддержку расширенных атрибутов;
- --acls — включает поддержку POSIX ACL;
- -c (create) — указывает, что нужно создать архив;
- -v (verboze) — включает детальное отображение информации;
- -z (gzip) — указывает, что нужно не только архивировать файлы, но и сжимать их с применением алгоритма gzip;
- -f (file) — указывает, что далее будет передано имя файла архива;
- /opt/home.tgz — задает имя и место расположения архива (при этом следует учитывать, что файл не будет защищен механизмом мандатного управления доступом);
- /home/ — указывает архивируемый каталог.
Перед восстановлением файлов из архива необходимо разрешить процессам использовать привилегию PARSEC_CAP_UNSAFE_SETXATTR. Для этого нужно записать значение «1» в файл /parsecfs/unsecure_setxattr:
echo 1 | sudo tee /parsecfs/unsecure_setxattr
Теперь для восстановления файлов из архива с сохранением расширенных атрибутов нужно выполнить следующую команду:
sudo execaps -c 0x1000 -- tar --xattrs --acls --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} -xvf /opt/home.tgz -C /
где
- execaps — утилита позволяет запустить процесс с назначением привилегии PARSEC;
- -с — параметр позволяет определить назначаемую привилегию;
- 0x1000 — числовое значение привилегии PARSEC_CAP_UNSAFE_SETXATTR (вывести полный список привилегий с их кодами можно с помощью команды sudo usercaps -M);
- tar — название запускаемой утилиты;
- --xattrs — включает поддержку расширенных атрибутов;
- --acls — включает поддержку POSIX ACL;
- --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} — определяет шаблон включения для ключей xattr (мандатные атрибуты, атрибуты аудита и атрибуты аудита по умолчанию);
- -x (extract) — указывает, что нужно извлечь файлы из архива;
- -v (verboze) — включает детальное отображение информации;
- -f (file) — указывает, что далее будет передано имя файла архива;
- /opt/home.tgz — задает имя и место расположения архива;
- / — задает путь для извлечения файлов.
После восстановления файлов нужно вернуть значение переменной unsecure_setxattr в исходное состояние:
echo 0 | sudo tee /parsecfs/unsecure_setxattr