Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
Общая информация
Инструменты замкнутой программной среды (ЗПС) предоставляют администраторам ОС возможность внедрения цифровой подписи в исполняемые файлы формата ELF, входящие в состав устанавливаемого СПО, и в расширенные атрибуты файловой системы.
Механизм контроля целостности исполняемых файлов и разделяемых библиотек формата ELF при запуске программы на выполнение (загрузке библиотеки) реализован в модуле ядра ОС digsig_verif. Модуль digsig_verif является невыгружаемым модулем ядра Linux и может функционировать в одном из следующих режимов:
- исполняемым файлам и разделяемым библиотекам с неверной ЭЦП, а также без ЭЦП загрузка на исполнение запрещается (штатный режим функционирования);
- исполняемым файлам и разделяемым библиотекам с неверной ЭЦП, а также без ЭЦП загрузка на исполнение разрешается, при этом выдается сообщение об ошибке проверки ЭЦП (режим для проверки ЭЦП в СПО);
- ЭЦП при загрузке исполняемых файлов и разделяемых библиотек не проверяется (отладочный режим для тестирования СПО).
Механизм контроля целостности файлов при их открытии на основе ЭЦП, содержащейся в расширенных атрибутах файлов, также реализован в модуле ядра ОС digsig_verif и может функционировать в одном из следующих режимов:
- запрещается открытие или запуск файлов, поставленных на контроль, имеющих неверную ЭЦП или не имеющих ЭЦП (т.е. файлов, либо не подписанных, либо не имеющих ключа в каталогах /etc/digsig/xattr_keys или /etc/digsig/keys);
- открытие файлов, поставленных на контроль, имеющих неверную ЭЦП или не имеющих ЭЦП разрешается, при этом выдается сообщение об ошибке проверки ЭЦП (режим для проверки ЭЦП в расширенных атрибутах файловой системы);
- ЭЦП при открытии файлов не проверяется.
Настройка модуля digsig_verif
Настройка режима функционирования модуля digsig_verif осуществляется посредством графического инструмента fly-admin-smc (<<Панель управления --- Безопасность --- Политика безопасности --- Замкнутая программная среда>>) или путем редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf. Описание использования графического инструмента приведено в электронной справке.
Дополнительно для настройки режима функционирования модуля digsig_verif с проверкой подписи в исполняемых файлах можно использовать инструмент командной строки astra-digsig-control, входящий в пакет astra-safepolicy (см. Инструменты командной строки astra-safepolicy).
Порядок прямого редактирования конфигурации модуля digsig_verif для настройки режима проверки подписи ELF:
В модуль digsig_verify встроены открытые ключи АО "НПО РусБИТех", которые используются:
- для проверки подписи исполняемых файлов;
- для проверки подписи открываемых файлов в расширенных атрибутах;
- для проверки подписи на дополнительных ключах, загружаемых из каталога /etc/digsig/keys.
В каждый момент времени модуль использует два набора ключей:
- основной набор (изначально три встроенных ключа АО "НПО РусБИТех") --- для проверки любых подписей;
- дополнительный набор (изначально пустой) --- только для проверки подписи открываемых файлов в расширенных атрибутах.
Если дополнительный набор не содержит ключа, который использовался для подписи файла в расширенных атрибутах, модуль ищет подходящий ключ в основном наборе.
Каталог /etc/digsig/keys содержит открытые ключи в формате gnupg --export, которыми расширяется основной набор ключей при загрузке системы. Каждый ключ, использованный для подписывания СПО, необходимо скопировать в каталог /etc/digsig/keys/, например, с использованием команды:
В каталоге /etc/digsig/keys/ может располагаться иерархическая структура ключей. Каждый ключ должен быть подписан уже загруженным ключом основного набора в момент его добавления в основной набор. Иерархия подкаталогов /etc/digsig/keys обрабатывается сверху вниз таким образом, что:
- файлы ключей в /etc/digsig/keys должны быть подписаны встроенными в модуль digsig_verify ключами АО "НПО РусБИТех";
- файлы ключей в /etc/digsig/keys/subdirectory могут быть подписаны и встроенными ключами АО "НПО РусБИТех", и ключами из /etc/digsig/keys;
- в целом, каждый ключ из подкаталога внутри /etc/digsig/keys должен быть подписан либо ключом из вышележащего каталога, либо встроенным ключом АО "НПО РусБИТех".
Например:
/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
Для проверки использования дополнительных ключей для контроля целостности исполняемых файлов и разделяемых библиотек формата ELF (до перезагрузки ОС) можно от имени учетной записи
администратора через механизм sudo выполнить команды:
sudo -s
cat /etc/digsig/key_for_signing.gpg > /sys/digsig/keys
cat /etc/digsig/keys/key1.gpg >> /sys/digsig/keys
cat /etc/digsig/keys/key2.gpg >> /sys/digsig/keys
cat /etc/digsig/keys/key1/key1-1.gpg >> /sys/digsig/keys
cat /etc/digsig/keys/key1/key1-2.gpg >> /sys/digsig/keys
cat /etc/digsig/keys/key2/key2-1.gpg >> /sys/digsig/keys
cat /etc/digsig/keys/key2/key2-2.gpg >> /sys/digsig/keys
exit
Настройка режима функционирования механизма контроля целостности файлов при их открытии на основе ЭЦП в расширенных атрибутах файловой системы осуществляется с помощью графического инструмента fly-admin-smc (<<Панель управления --- Безопасность --- Политика безопасности --- Замкнутая программная среда>>) или путем редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf.
Порядок прямого редактирования конфигурации модуля digsig_verif для настройки режима проверки подписи в расширенных атрибутах (xattr):
- Для отображения сообщения о загрузке неподписанного файла можно добавить в автозапуск утилиту fly-syslog-monitor.
Каталог /etc/digsig/xattr_keys содержит открытые ключи в формате gnupg --export, которыми расширяется дополнительный набор ключей модуля (изначально пустой набор, используемый только для проверки подписи в расширенных атрибутах файла). Подписи на ключах дополнительного набора не проверяются.
Каждый дополнительный ключ, использованный для подписывания файлов в расширенных атрибутах, необходимо скопировать в каталог /etc/digsig/xattr_keys/, например, с
использованием команды:
В каталоге /etc/digsig/xattr_keys/ может располагаться иерархическая структура дополнительных ключей для контроля целостности файлов.
В указанной структуре одни дополнительные ключи могут быть подписаны на других дополнительных ключах.
При этом дополнительные ключи должны располагаться в подкаталогах таким образом, чтобы при их загрузке не нарушалась цепочка проверки подписей:
/etc/digsig/xattr_keys/key2.gpg - публичный ключ 2
/etc/digsig/xattr_keys/key1/key1-1.gpg - публичный ключ, подписанный на ключе 1
/etc/digsig/xattr_keys/key1/key1-2.gpg - публичный ключ, подписанный на ключе 1
/etc/digsig/xattr_keys/key2/key2-1.gpg - публичный ключ, подписанный на ключе 2
/etc/digsig/xattr_keys/key2/key2-2.gpg - публичный ключ, подписанный на ключе 2
Для проверки использования дополнительных ключей для контроля целостности файлов (до перезагрузки ОС) можно от имени учетной записи администратора через механизм sudo выполнить команды:
sudo -s
cat /etc/digsig/xattr_keys/key1.gpg >> /sys/digsig/xattr_keys
cat /etc/digsig/xattr_keys/key2.gpg >> /sys/digsig/xattr_keys
cat /etc/digsig/xattr_keys/key1/key1-1.gpg >> /sys/digsig/xattr_keys
cat /etc/digsig/xattr_keys/key1/key1-2.gpg >> /sys/digsig/xattr_keys
cat /etc/digsig/xattr_keys/key2/key2-1.gpg >> /sys/digsig/xattr_keys
cat /etc/digsig/xattr_keys/key2/key2-2.gpg >> /sys/digsig/xattr_keys
exit
Управление модулем digsig_verif осуществляется через интерфейс sysfs с использованием файлов:
- /sys/digsig/elf_mode --- просмотр и переключение режима работы при проверке ЭЦП исполняемых файлов и разделяемых библиотек формата ELF;
- /sys/digsig/xattr_mode --- просмотр и переключение режима работы при проверке ЭЦП в расширенных атрибутах файловой системы;
- /sys/digsig/keys --- файл загрузки дополнительных ключей для проверки ЭЦП исполняемых файлов формата ELF и ЭЦП в расширенных атрибутах ФС;
- /sys/digsig/ignore_gost2001 --- отключение проверки ЭЦП по ГОСТ~Р~34.10-2001;
- /sys/digsig/ignore_xattr_keys --- 1;
- /sys/digsig/xattr_control --- список шаблонов имен, используемых при проверке ЭЦП в расширенных атрибутах ФС;
- /sys/digsig/xattr_keys --- файл загрузки дополнительных ключей, используемых только при проверке ЭЦП в расширенных атрибутах ФС.
Проверка режимов работы выполняется командами:
cat /sys/digsig/xattr_mode
Для отключения проверки ЭЦП по ГОСТ~Р~34.10-2001 необходимо в конфигурационном файле /etc/digsig/digsig_initramfs.conf установить следующее значение параметра:
После внесения изменений в конфигурационный файл /etc/digsig/digsig_initramfs.conf и для загрузки модулем digsig_verif ключей после их размещения его в каталогах /etc/digsig/keys/ и /etc/digsig/xattr_keys/
необходимо от имени учетной записи администратора через механизм \verb|sudo| выполнить команду:
Подписывание ПО
В модуле ядра digsig_verif реализован механизм, позволяющий использовать несколько ключей при подписывании файлов формата ELF.
Порядок использования ключей для digsig_verif:
- дополнительные ключи записываются в /sys/digsig/keys или /sys/digsig/xattr_keys' в иерархической последовательности цепочек подписей;
- все дополнительные ключи должны быть подписаны главным ключом или другим дополнительным ключом, подпись которого может быть проверена (за исключением первого ключа в каталоге /sys/digsig/xattr_keys).
Для создания дополнительных ключей используется GNU Privacy Guard.
Модифицированный GnuPG выводит ГОСТ~Р~34.11-94 в списке доступных алгоритмов.
Для получения списка доступных алгоритмов необходимо выполнить команду:
Пример списка:
Далее приведен пример создания дополнительного ключа и его использования для подписывания СПО.
Сначала создается ключевая пара GOST R 34.10-2001, которая сохраняется в каталоге ~/.gnupg.
Для создания ключевой пары необходимо выполнить приведенную далее команду с последующим выбором в меню gpg алгоритма ГОСТ~Р~34.10-2001:
Экспорт ключа в файл осуществляется командой:
gpg --sign-key "Test GOST R 34.10-2012 Secondary Key <test@gost.secondary.key>"
gpg --export "Test GOST R 34.10-2001 Secondary Key <test@gost.secondary.key>" > /tmp/secondary_gost_key_signed.gpg
Пользователь подписывает утилитой bsign на данном ключе произвольный файл с внедрением подписи только в расширенные атрибуты:
Дополнительная информация доступна в справке по утилите bsign;
Для проверки правильности ЭЦП файла формата ELF используется утилита bsign:
Дополнительный ключ пользователя, подписанный на главном ключе, копируется в каталог /etc/digsig/.
Подписанный файл формата ELF может выполняться:
Проверка работы ЗПС
Модуль проверки подписи приложений digsig_verif является невыгружаемым модулем ядра. Сообщения таких модулей можно просмотреть командой:
... DIGSIG: [ERROR] NOT SIGNED: path=....
Журналы с сообщениями об ошибках сохраняются в файлах /var/log/messages и /var/log/kernel.log.