Актуальная версия статьи: Ограничения программной среды в Astra Linux Special Edition x.8. |
|
Ядро версии 5.4 не рекомендуется к использованию, не является безопасным и предоставлятся только для обеспечения обратной совместимости. |
Замкнутая программная среда (ЗПС) является средством повышения защищенности операционной системы путем контроля целостности (неизменности) файлов. Механизм контроля реализован в виде невыгружаемого модуля ядра Astra Linux (модуль digsig_verif), выполняющего проверку электронной цифровой подписи файлов (ЭЦП). Проверка применяется:
Режимы выполнения проверки описаны далее.
Средства создания ЗПС предоставляют возможности внедрения встроенной ЭЦП в исполняемые файлы формата ELF, входящие в состав устанавливаемого СПО, и возможность создания присоединенных ЭЦП. Поддерживается использование при подписывании нескольких ключей.
Для повышения защищенности информационных систем (ИС) помимо включения ЗПС рекомендуется применять следующие меры по ограничению запуска программного обеспечения и получения доступа к объектам файловой системы для предотвращения несанкционированного исполнения произвольного кода и доступа к системным компонентам операционной системы (ОС):
Для выполнения указанных мер выполнить следующие действия:
При работе в терминале и в сценариях удаленной настройки:
Активировать блокировку интерпретаторов (кроме интерпретатора bash). Команда:
| sudo astra-interpreters-lock enable |
Активировать блокировку интерпретатора bash. Команда:
| sudo astra-bash-lock enable |
Активировать запрет установки бита исполнения. Команда:
| sudo astra-nochmodx-lock enable |
Проверка активации интерпретаторов (кроме интерпретатора bash):
| sudo astra-interpreters-lock status |
результатом команды должно быть "АКТИВНО" и нулевой код завершения;
| sudo astra-interpreters-lock is-enabled |
результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
Проверка активации интерпретатора bash:
| sudo astra-bash-lock status |
результатом команды должно быть "АКТИВНО" и нулевой код завершения;
| sudo astra-bash-lock is-enabled |
результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
Проверка активации запрета установки бита исполнения:
| sudo astra-nochmodx-lock status |
результатом команды должно быть "АКТИВНО" и нулевой код завершения;
| sudo astra-nochmodx-lock is-enabled |
результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
Активировать режим Киоск-2. Команда:
| echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce |
Включить протоколирование попыток нарушений установленных фильтров доступа. Команда:
| echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain; |
Включить режим контроля доступа Киоск-2 и протоколирования с сохранением данного состояния после перезагрузки. Команда:
| echo 1 | sudo tee /etc/parsec/kiosk2_enforce; echo 1 | sudo tee /etc/parsec/kiosk2_complain; |
При работе в графической сессии:
Открыть инструмент управления политиками безопасности с помощью меню: Пуск — Панель управления — Безопасность — Политика безопасности или выполнив в графическом терминале команду:
| sudo fly-admin-smc |
После выполнения указанных действий перезагрузить ОС:
выполнив в терминале команду:
| sudo reboot |
Графический инструмент fly-admin-smc может применяться для настройки всех параметров ЗПС. Инструмент входит в состав пакета fly-admin-local, устанавливается по умолчанию при установке ОС и доступен в графическом меню: <<Панель управления — Безопасность — Политика безопасности — Замкнутая программная среда>>. Описание графического инструмента приведено в его электронной справке. Модуль fly-admin-smc для работы с ЗПС входит в пакет fly-admin-digsig и также устанавливается по умолчанию.
Инструмент командной строки astra-digsig-control входит в состав пакета astra-safepolicy. Применяется только для настройки режима проверки подписи в исполняемых файлах.
Настройка режима работы ЗПС может осуществляться путем прямого редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf.
Для того, чтобы изменения, сделанные в каталоге /etc/digsig (в том числе — изменения, сделанные в конфигурационном файле /etc/digsig/digsig_initramfs.conf) активировались:
|
Параметры задаются в виде:
<имя_параметра>=<значение_параметра> |
Используются следующие параметры:
1 — штатный режим проверки встроенной ЭЦП. Проверка встроенной ЭЦП включена. Выполнение файлов, имеющих неверную встроенную ЭЦП или не имеющих встроенную ЭЦП, запрещается;
DIGSIG_IGNORE_XATTR_KEYS – режим применения при проверке встроенной ЭЦП ключей для проверки присоединенной ЭЦП:
Помимо конфигурационного файла /etc/digsig/digsig_initramfs.conf в каталоге /etc/digsig/ представлены:
В файле /etc/digsig/xattr_control хранится список шаблонов шаблонов имен, определяющих имена файлов, в которых проверяется присоединенная ЭЦП. Порядок применения шаблонов:
Динамическое управление режимами работы ЗПСДинамическое управление режимами работы ЗПС осуществляется через интерфейс sysfs. При этом действуют следующие ограничения:
Доступны следующие интерфейсы, представленные специальными файлами:
Для получения значения параметра конфигурации, управляемого интерфейсом, нужное значение следует прочитать из соответствующего интерфейса:
Например, проверка установленных режимов проверки присоединенной и отсоединенной ЭЦП может быть выполнена командой:
|
Ключи для работы с ЭЦП
В модуль digsig_verify встроены открытые ключи, которые используются:
В каждый момент времени модуль использует два набора ключей:
Все ключи хранятся в указанных каталогах и их подкаталогах (см. ниже). Ключи хранятся в формате gnupg --export/etc/digsig/keys и загружаются при загрузке ОС;
При проверке ЭЦП первоначально поиск ключей выполняется в дополнительном наборе. Если дополнительный набор не содержит ключа, использовавшегося для создания ЭЦП, модуль ищет подходящий ключ в основном наборе.
Каждый новый ключ, использованный для подписывания СПО, необходимо включить в дополнительный набор ключей, для чего скопировать файл с ключом в каталог /etc/digsig/keys/ или /etc/digsig/xattr_keys, например, с использованием команды:
| sudo cp /<каталог>/<файл ключа> /etc/digsig/keys/ |
Каждый ключ в момент его добавления в каталог /etc/digsig/keys должен быть подписан уже загруженным ключом. При этом в подкаталогах ключи располагаются в иерархической структуре, которая обрабатывается сверху вниз таким образом, что:
Например:
| /etc/digsig/keys/key1.gpg — публичный ключ 1, подписанный на встроенном ключе; /etc/digsig/keys/key2.gpg — публичный ключ 2, подписанный на встроенном ключе; /etc/digsig/keys/key1/key1-1.gpg — публичный ключ, подписанный на ключе 1 /etc/digsig/keys/key1/key1-2.gpg — публичный ключ, подписанный на ключе 1 /etc/digsig/keys/key2/key2-1.gpg — публичный ключ, подписанный на ключе 2 /etc/digsig/keys/key2/key2-2.gpg — публичный ключ, подписанный на ключе 2 |
Каждый дополнительный ключ, использованный для проверки присоединенной ЭЦП, необходимо скопировать в каталог /etc/digsig/xattr_keys/. Например:
| sudo cp /<каталог>/<файл ключа> /etc/digsig/xattr_keys/ |
В каталоге /etc/digsig/xattr_keys/ также может располагаться иерархическая структура дополнительных ключей, в которой одни дополнительные ключи должны быть подписаны на других дополнительных ключах. При этом дополнительные ключи должны располагаться в подкаталогах таким образом, чтобы при их загрузке не нарушалась цепочка проверки подписей (см. пример выше).
В состав Astra Linux входит графический инструмент fly-admin-smc, предоставляющий возможности работы с настройками ЗПС. Инструмент доступен в графическом меню: "Пуск" - "Панель управления" - "Безопасность" - "Политика безопасности" - "Замкнутая программная среда". Работа с инструментом подробно описана во встроенной справке. (клавиша F1).
См. Порядок создания подписей файлов для режима ЗПС а также Подписание пакетов ПО.
Далее рассматривается создание собственного ключа, предназначенного для создания и проверки присоединенной ЭЦП. Для создания ключей используется ПО GNU Privacy Guard. Входящий в состав Astra Linux модифицированный GnuPG поддерживает алгоритм ГОСТ~Р~34.11-94. Список доступных алгоритмов можно проверить командой:
| gpg --version |
Далее приведен пример создания дополнительного ключа и его использования для создание встроенной ЭЦП.
Создать ключевую пару. По умолчанию пара будет сохранена подкаталоге .gnupg домашнего каталога текущего пользователя. Ключевая пара может быть создана с помощью графического инструмента fly-admin-amc, или в командной строке в интерактивном или пакетом режиме.
| По умолчанию для ключевой пары используется алгоритм RSA. Использование этого алгоритма в ЗПС Astra Linux не поддерживается. Для ЗПС Astra Linux следует использовать алгоритм GOST_R34.10-2012. |
Для создания ключевой пары в интерактивном режиме выполнить команду gpg с возможностью интерактивного выбора алгоритма:
| gpg --full-generate-key |
Для создания ключевой пары следует выбрать алгоритм GOST_R34.10-2012. После ответа на заданные вопросы будет выдана информация о созданной ключевой паре вида:
pub gP256 2024-03-12 [SC]
566F70D5D822D1B51B23CBE60055EBA236DA8851
uid Astra Linux <info@astralinux.ru> |
Далее в примерах для идентификации ключа используется идентификатор ключа - последовательность шестнадцатеричных цифр, в примере выше это 566F70D5D822D1B51B23CBE60055EBA236DA8851. Ключ можно также идентифицировать по имени пользователя;
Создать файл с параметрами ключа, например:
Key-Type:GOST_R34.10-2012 %no-protection Name-Real:<имя_пользователя> Name-Comment: <комментарий> Name-Email: <e-mail> |
подробнее см. Unattended GPG key generation;
Выполнить команду:
gpg --gen-key --batch <имя_файла_с_параметрами_ключа> |
Информацию о созданном ключе можно получить командой:
| gpg --list-keys |
При наличии установленного ключа для подписи созданный ключ может быть подписан:
| gpg --export <идентификатор_ключа> | sudo gpg --import sudo gpg --sign-key <идентификатор_ключа> |
для применения подписанный ключ должен быть экспортирован в каталог /etc/digsig/xattr_keys. Команды:
| sudo gpg --export <идентификатор_ключа> | sudo tee /etc/digsig/xattr_keys/<имя_файла_с_подписанным_экспортированным_ключом> |
Наличие подписи в ключах для проверки присоединенной ЭЦП не проверяется. Поэтому созданный ключ можно экспортировать не подписывая:
|
В файле /etc/digsig/xattr_control задать маски имен контролируемых файлов, например:
/bin/spo |
Если заданная маска оканчивается символом "/", то она интерпретируется как имя каталога и контролируются все файлы в этом каталоге, в ином случае маска интерпретируется как префикс полного имени контролируемых файлов.
Подписать контролируемые файлы внешней ЭЦП:
Подписание файлов должно быть выполнено до включения проверки ЭЦП, так как после включения проверки ЭЦП подписание не подписанных файлов будет заблокировано. |
| bsign --sign --xattr <имя_файла> |
Дополнительная информация доступна в справке по утилите bsign;
Включить проверку ЭЦП:
Выполнить команду:
| sudo update-initramfs -u -k all |
Перезагрузить ОС;
Для проверки наличия и правильности ЭЦП файла можно использовать утилиту bsign:
| bsign -w <имя_файла> |
Проверка работы ЗПС
Модуль проверки подписи приложений digsig_verif является модулем ядра. Сообщения модулей ядра можно просмотреть командой:
| sudo dmesg |
Или, в случае модуля digsig_verif:
| sudo dmesg | grep DIGSIG |
Попытки запуска не подписанных файлов во включенной ЗПС будут отображаться в журналах, сохраняемых в файлах /var/log/messages и /var/log/kernel.log, сообщениями вида:
... DIGSIG: [ERROR] NOT SIGNED: path=.... |