Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 19 Следующий »

Данная статья применима к:

  • 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

Общая информация

Замкнутая программная среда (ЗПС) является средством повышения безопасность ОС путем контроля целостности (неизменности) файлов. Механизм контроля реализован в виде невыгружаемого модуля ядра Astra Linux (модуль digsig_verif), выполняющего проверку электронной цифровой подписи файлов (ЭЦП). Проверка применяется:

  • к файлам формата ELF (исполняемым файлам и разделяемым библиотекам) - проверка ЭЦП, записанной в специальное поле файла (далее - встроенная ЭЦП);
  • к любым файлам - проверка ЭЦП, размещаемой в расширенных атрибутах файла (далее - присоединенная ЭЦП);

Режимы выполнения проверки описаны ниже.

Средства создания ЗПС предоставляют возможности внедрения встроенной ЭЦП в исполняемые файлы формата ELF, входящие в состав устанавливаемого СПО, и возможность создания присоединенных ЭЦП. Поддерживается использование при подписывании несколькх ключей.

Настройка режима работы модуля digsig_verif

Графический инструмент fly-admin-smc

Графический инструмент fly-admin-smc может применяться для настройки всех параметров. Инструмент устанавливается по умолчанию при установке ОС и доступен в графическом меню: fly-admin-smc (<<Панель управления --- Безопасность --- Политика безопасности --- Замкнутая программная среда>>) . Описание графического инструмента приведено в электронной справке.

Инструмент командной строки astra-digsig-control

Инструмент командной строки astra-digsig-control применяется для настройки режима проверки подписи в исполняемых файлах. См. Инструменты командной строки astra-safepolicy.

Параметры работы ЗПС в файле /etc/digsig/digsig_initramfs.conf

Настройка режима работы ЗПС может осуществляться путем прямого редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf.

Для того, чтобы изменения, сделанные в конфигурационном файле /etc/digsig/digsig_initramfs.conf активировались:

  1. Выполнить команду:

    sudo update-initramfs -u -k all

  2. Перезагрузить компьютер.

Параметры задаются в виде:

<имя_параметра>=<значение_параметра>

Используются следующие параметры:

  • DIGSIG_ELF_MODE — режим проверки встроенной ЭЦП в файлах формата ELF. Возможные значения:
    • 0 — Значение по умолчанию. Проверка встроенной ЭЦП отключена. Может применяться как отладочный режим для разработки и отладки СПО;
    • 1 — Штатный режим проверки встроенной ЭЦП. Проверка встроенной ЭЦП включена. Выполнение файлов, имеющих неверную встроенную ЭЦП или не имеющих встроенную ЭЦП, запрещается;
    • 2 — Режим проверки работы СПО в ЗПС. Проверка встроенной ЭЦП включена. Выполнение файлов, имеющих неверную встроенную ЭЦП или не имеющих встроенную ЭЦП, разрешается, но при этом выдается сообщение об ошибке проверки ЭЦП;
  • DIGSIG_XATTR_MODE — режим проверки прикрепленной ЭЦП в расширенных атрибутах. Возможные значения:
    • 0 — Значение по умолчанию. Проверка прикрепленной ЭЦП отключена. Может применяться как отладочный режим для разработки и отладки СПО;
    • 1 — Штатный режим проверки прикрепленной ЭЦП. Проверка прикрепленной ЭЦП включена. Выполнение файлов, имеющих неверную прикрепленную ЭЦП или не имеющих прикрепленную ЭЦП, запрещается;
    • 2 — Режим проверки работы СПО в ЗПС. Проверка прикрепленной ЭЦП включена. Выполнение файлов, имеющих неверную прикрепленную ЭЦП или не имеющих прикрепленную ЭЦП, разрешается, но при этом выдается сообщение об ошибке проверки ЭЦП;
  • DIGSIG_IGNORE_XATTR_KEYS – режим применения при проверке встроенной ЭЦП ключей для проверки присоединенной ЭЦП:

    • 0 — Значение по умолчанию. При проверке встроенной ЭЦП ключи для проверки присоединенной ЭЦП используются;
    • 1 – При проверке встроенной ЭЦП ключи для проверки присоединенной ЭЦП игнорируются;
  • DIGSIG_IGNORE_GOST2001 – режим использования при проверке ЭЦП по ГОСТ~Р~34.10-2001:
    • 0 — Значение по умолчанию. При проверке ЭЦП по ГОСТ~Р~34.10-2001 используется;
    • 1 – При проверке ЭЦП по ГОСТ~Р~34.10-2001 не используется;

Динамическое управление режимами работы ЗПС

Динамическое управление модулем digsig_verif осуществляется через  интерфейс sysfs. Изменения, внесенные этим способом, активируются немедленно и сохраняются до перезагрузки ОС. Для управления доступны следующие  интерфейсы, представленные специальными файлами:

  • Интерфейсы, управляющие параметрами конфигурации: 
    • /sys/digsig/elf_mode --- просмотр и переключение режима проверки встроенной ЭЦП. Управляет параметром конфигурации DIGSIG_ELF_MODE. Поддерживается только динамическое включение режима проверки (режим 1 или 2). Динамическое выключение и динамическое изменение включенного режима не поддерживаются;
    • /sys/digsig/xattr_mode --- просмотр и переключение режима проверки присоединенной ЭЦП. Управляет параметром конфигурации DIGSIG_XATTR_MODE. Поддерживается только динамическое включение режима проверки (режим 1 или 2). Динамическое выключение и динамическое изменение включенного режима не поддерживаются;
    • /sys/digsig/ignore_gost2001 --- управление режимом проверки ЭЦП по ГОСТ~Р~34.10-2001. Управляет параметром конфигурации DIGSIG_IGNORE_GOST2001. Поддерживается только динамическое включение режима исключения. Динамическое выключение не поддерживается;
    • /sys/digsig/ignore_xattr_keys --- управление режимом применения при проверке встроенной ЭЦП ключей для проверки присоединенной ЭЦП. Управляет параметром конфигурации DIGSIG_IGNORE_XATTR_KEYS. Поддерживается только динамическое включение режима исключения. Динамическое выключение не поддерживается;
  • Интерфейсы для передачи данных:
    • /sys/digsig/keys --- интерфейс загрузки дополнительных ключей для проверки встроенной и присоединенной ЭЦП;
    • /sys/digsig/xattr_control --- список шаблонов имен, используемых при проверке присоединенной ЭЦП;
    • /sys/digsig/xattr_keys --- интерфейс загрузки дополнительных ключей, используемых только при проверке присоединенной ЭЦП;

Для задания значения параметра конфигурации, управляемого интерфейсом, нужное значение следует записать в соответствующий файл:

echo <значение> | sudo tee /sys/digsig/<имя_файла>
Для получения значения параметра конфигурации, управляемого файлом, нужное значение следует прочитать из соответствующего файла:
sudo cat /sys/digsig/<имя_файла>
Например, проверка режимов проверки присоединенной и отсоединенной ЭЦП может быть выполнена командой:
sudo cat /sys/digsig/elf_mode /sys/digsig/xattr_mode
Ключи для работы с ЭЦП

В модуль digsig_verify встроены открытые ключи, которые используются:

  • для проверки встроенных ЭЦП;
  • для проверки присоединенных ЭЦП;
  • для проверки ЭЦП в дополнительных ключах, загружаемых из каталога /etc/digsig/keys.

В каждый момент времени модуль использует два набора ключей:

  • основной набор ключей — для проверки всех ЭЦП;
  • дополнительный набор ключей  в каталоге /etc/digsig/keys (изначально пустой) — для проверки встроенных ЭЦП;
  • дополнительный набор ключей  в каталоге /etc/digsig/keys_xattrs (изначально пустой) — для проверки присоединенных ЭЦП и, возможно, встроенных ЭЦП. Подпись на первом ключе из этого набора не проверяется..

Все ключи хранятся в указанных каталогах и их подкаталогах (см. ниже). Ключи хранятся в формате gnupg --export/etc/digsig/keys и загружаются при загрузке ОС;

При проверке ЭЦП первоначально поиск ключей выполняется в дополнительном наборе. Если дополнительный набор не содержит ключа, использовавшегося для создания ЭЦП, модуль ищет подходящий ключ в основном наборе.

Каждый новый ключ, использованный для подписывания СПО, необходимо включить в дополнительный набор ключей, для чего скопировать файл с ключом в каталог /etc/digsig/keys/ или /etc/digsig/xattr_keys, например, с использованием команды:

    sudo cp /<каталог>/<файл ключа> /etc/digsig/keys/
Каждый ключ в момент его добавления в каталог /etc/digsig/keys должен быть подписан уже загруженным ключом. При этом в подкаталогах ключи располагаются в иерархической структуре, которая обрабатывается сверху вниз таким образом, что:

  • файлы ключей в корневом каталоге (/etc/digsig/keys) должны быть подписаны встроенными в модуль digsig_verify ключами;
  • каждый ключ в подкаталогах должен быть подписан либо ключом из вышележащего каталога, либо встроенным ключом.

Например:

/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/ также может располагаться иерархическая структура дополнительных ключей, в которой одни дополнительные ключи должны быть подписаны на других дополнительных ключах. При этом дополнительные ключи должны располагаться в подкаталогах таким образом, чтобы при их загрузке не нарушалась цепочка проверки подписей (см. пример выше).

Подписывание ПО

Встроенная ЭЦП

См. Создание встроенной подписи в ELF файлах для режима ЗПС.

Присоединенная ЭЦП

В примере рассматривается создание собственного ключа, предназначенного для создание и проверки присоединенной ЭЦП. Для создания дополнительных ключей используется ПО GNU Privacy Guard. Входящий в состав Astra Linux модифицированный GnuPG поддерживает алгоритм ГОСТ~Р~34.11-94. Список доступных алгоритмов можно проверить командой:

gpg --version

Далее приведен пример создания дополнительного ключа и его использования для создание встроенной ЭЦП.

  1. Создать ключевую пару По умолчанию пара будет сохранена подкаталоге .gnupg домашнего каталога текущего пользователя. Для создания ключевой пары выполнить команду:

    gpg --gen-key
    После ответа на заданные вопросы будет выдана информация о созданной ключевой паре вида:

    _открытый и секретный ключи созданы и подписаны.
    
    pub   rsa3072 2022-11-24 [SC] [   годен до: 2024-11-23]
          12B6FA0CD98F2D9CE72AB595C0316DBD6D879F9Fо uid                      имя_пользователя <адрес_электронной_почты>
    sub   rsa3072 2022-11-24 [E] [   годен до: 2024-11-23]

    Далее используется идентификатор ключа -  в примере выше последовательность 12B6FA0CD98F2D9CE72AB595C0316DBD6D879F9F;

  2. Экспортировать ключ в файл:

    gpg --export <идентификатор_ключа> > <имя_файла_с_экспортированным_ключом>

  3. При наличии установленного ключа для подписи созданный ключ может быть подписан:

    sudo gpg --import <имя_файла_с_экспортированным_ключом>
    sudo gpg --sign-key <идентификатор_ключа>
    для применения подписанный ключ должен быть экспортирован в каталог /etc/digsig/xattr_keys. Команды:
    sudo gpg --export  <идентификатор_ключа> | tee /etc/digsig/xattr_keys/<имя_файла_с_подписанным_экспортированным_ключом>

  4. При отсутствии подписанного ключа созданный ключ можно просто скопировать в каталог /etc/digsig/xattr_keys:

    sudo cp <имя_файла_с_экспортированным_ключом> /etc/digsig/xattr_keys/

  5. В файле /etc/digsig/xattr_control задать маски имен контролируемых файлов, например:

    /bin/spo

    Если заданная маска оканчивается символом "/", то она интерпретируется как имя каталога и контролируются все файлы в этом каталоге, в ином случае маска интерпретируется как префикс полного имени контролируемых файлов.

  6. Подписать контролируемые файлы внешней ЭЦП:

    Подписание файлов должно быть выполнено до включения проверки ЭЦП, так как после включения проверки ЭЦП подписание неподписанных файлов будет заблокировано.


    bsign --sign --xattr <имя_файла>


  7. Дополнительная информация доступна в справке по утилите bsign;

  8. Для временного включения проверки присоединенной подписи выполнить команду:

    echo 1 | sudo tee /etc/digsig/xattr_mode

  9. Подписамтьвает утилитой bsign на данном ключе произвольный файл с внедрением подписи только в расширенные атрибуты:

keys@debian:~$ bsign --sign --xattr test_elf

Дополнительная информация доступна в справке по утилите bsign;

Для проверки правильности ЭЦП файла формата ELF используется утилита bsign:
bsign -w <имя_файла>

Дополнительный ключ пользователя, подписанный на главном ключе, копируется в каталог /etc/digsig/.

Подписанный файл формата ELF может выполняться:
 /sys/digsig/./test_elf

Проверка работы ЗПС

Модуль проверки подписи приложений digsig_verif является модулем ядра. Сообщения модулей ядра можно просмотреть командой:

sudo dmesg
Или, в случае модуля digsig_verif:
sudo dmesg | grep DIGSIG
Попытки запуска неподписанных файлов во включенной ЗПС будут отображаться в журналах, сохраняемых в файлах /var/log/messages и /var/log/kernel.log, сообщениями вида:

... DIGSIG: [ERROR]  NOT SIGNED: path=....
  • Нет меток