Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение |
---|
Ядро версии 5.4 не рекомендуется к использованию, не является безопасным и предоставлятся только для обеспечения обратной совместимости. |
Общая информация
Инструменты замкнутой программной среды (ЗПС) предоставляют администраторам ОС возможность внедрения цифровой подписи в исполняемые файлы формата ELF, входящие в состав устанавливаемого СПО, и в расширенные атрибуты файловой системы.
Механизм контроля целостности исполняемых файлов и разделяемых библиотек формата ELF при запуске программы на выполнение (загрузке библиотеки) реализован в модуле ядра ОС digsig_verif. Модуль digsig_verif является невыгружаемым модулем ядра Linux и может функционировать в одном из следующих режимов:
- исполняемым файлам и разделяемым библиотекам с неверной ЭЦП, а также без ЭЦП загрузка на исполнение запрещается (штатный режим функционирования);
- исполняемым файлам и разделяемым библиотекам с неверной ЭЦП, а также без ЭЦП загрузка на исполнение разрешается, при этом выдается сообщение об ошибке проверки ЭЦП (режим для проверки ЭЦП в СПО);
- ЭЦП при загрузке исполняемых файлов и разделяемых библиотек не проверяется (отладочный режим для тестирования СПО).
- запрещается открытие или запуск файлов, поставленных на контроль, имеющих неверную ЭЦП или не имеющих ЭЦП (т.е. файлов, либо не подписанных, либо не имеющих ключа в каталогах /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:
Редактирование конфигурационного файла /etc/digsig/digsig_initramfs.conf осуществляется следующим образом:
для использования отладочного режима для тестирования СПО необходимо установить для параметра DIGSIG_ELF_MODE значение 0:
Информация |
---|
DIGSIG_ELF_MODE=0 |
для использования режима для проверки ЭЦП в СПО необходимо установить для параметра DIGSIG_ELF_MODE значение 2:
Информация |
---|
DIGSIG_ELF_MODE=2 |
для использования штатного режима функционирования необходимо установить для параметра DIGSIG_ELF_MODE значение 1:
Информация |
---|
DIGSIG_ELF_MODE=1 |
В модуль digsig_verify встроены открытые ключи АО "НПО РусБИТех", которые используются:
- для проверки подписи исполняемых файлов;
- для проверки подписи открываемых файлов в расширенных атрибутах;
- для проверки подписи на дополнительных ключах, загружаемых из каталога /etc/digsig/keys.
- основной набор (изначально три встроенных ключа АО "НПО РусБИТех") --- для проверки любых подписей;
- дополнительный набор (изначально пустой) --- только для проверки подписи открываемых файлов в расширенных атрибутах.
Каталог /etc/digsig/keys содержит открытые ключи в формате gnupg --export, которыми расширяется основной набор ключей при загрузке системы. Каждый ключ, использованный для подписывания СПО, необходимо скопировать в каталог /etc/digsig/keys/, например, с использованием команды:
Command |
---|
sudo cp /<каталог>/<файл ключа> /etc/digsig/keys/ |
- файлы ключей в /etc/digsig/keys должны быть подписаны встроенными в модуль digsig_verify ключами АО "НПО РусБИТех";
- файлы ключей в /etc/digsig/keys/subdirectory могут быть подписаны и встроенными ключами АО "НПО РусБИТех", и ключами из /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 |
Для проверки использования дополнительных ключей для контроля целостности исполняемых файлов и разделяемых библиотек формата ELF (до перезагрузки ОС) можно от имени учетной записи
администратора через механизм sudo выполнить команды:
Command |
---|
sudo -s cat /etc/digsig/key_for_signing.gpg > /sys/digsig/keys exit |
Предупреждение |
---|
При проверке ЭЦП в расширенных атрибутах файловой системы установка для параметра DIGSIG_XATTR_MODE значения 1 запрещает открытие поставленных на контроль файлов с неверной ЭЦП или без ЭЦП. |
Порядок прямого редактирования конфигурации модуля digsig_verif для настройки режима проверки подписи в расширенных атрибутах (xattr):
Редактирование конфигурационного файла /etc/digsig/digsig_initramfs.conf осуществляется следующим образом:
для включения проверки подписей в режиме запрета открытия поставленных на контроль файлов с неверной ЭЦП или без ЭЦП в расширенных атрибутах файловой системы необходимо установить для параметра |DIGSIG_XATTR_MODE значение 1:
Информация |
---|
GSIG_XATTR_MODE=1 |
для включения проверки подписей в режиме вывода предупреждений об открытии поставленных на контроль файлов с неверной ЭЦП или без ЭЦП в расширенных атрибутах файловой системы необходимо установить для параметра DIGSIG_XATTR_MODE значение 2:
Информация |
---|
DIGSIG_XATTR_MODE=2 |
для игнорирования дополнительных ключей, используемых только при проверке ЭЦП в расширенных атрибутах файловой, необходимо установить для параметра DIGSIG_IGNORE_XATTR_KEYS значение 1:
Информация |
---|
DIGSIG_IGNORE_XATTR_KEYS=1 |
для настройки шаблонов имен, используемых при проверке ЭЦП в расширенных атрибутах ФС, необходимо в файле /etc/digsig/xattr_control задать их список. Каждая строка задает свой шаблон в виде маски полного пути. Например, следующий шаблон определяет, что будет проверяться ЭЦП всех файлов в каталоге /bin, имя которых начинается на lo (т.е. имён, соотвествующих регулярному выражению (шаблону) /bin/lo*):
Информация |
---|
\bin\lo |
- Для отображения сообщения о загрузке неподписанного файла можно добавить в автозапуск утилиту fly-syslog-monitor.
Каждый дополнительный ключ, использованный для подписывания файлов в расширенных атрибутах, необходимо скопировать в каталог /etc/digsig/xattr_keys/, например, с
использованием команды:
Command |
---|
sudo cp /<каталог>/<файл ключа> /etc/digsig/xattr_keys/ |
В указанной структуре одни дополнительные ключи могут быть подписаны на других дополнительных ключах.
При этом дополнительные ключи должны располагаться в подкаталогах таким образом, чтобы при их загрузке не нарушалась цепочка проверки подписей:
Информация |
---|
/etc/digsig/xattr_keys/key1.gpg - публичный ключ 1 /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 |
Command |
---|
sudo -s cat /etc/digsig/xattr_keys/key1.gpg >> /sys/digsig/xattr_keys exit |
- /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 --- файл загрузки дополнительных ключей, используемых только при проверке ЭЦП в расширенных атрибутах ФС.
Command |
---|
cat /sys/digsig/elf_mode cat /sys/digsig/xattr_mode |
Для отключения проверки ЭЦП по ГОСТ~Р~34.10-2001 необходимо в конфигурационном файле /etc/digsig/digsig_initramfs.conf установить следующее значение параметра:
Информация |
---|
DIGSIG_IGNORE_GOST2001=1 |
После внесения изменений в конфигурационный файл /etc/digsig/digsig_initramfs.conf и для загрузки модулем digsig_verif ключей после их размещения его в каталогах /etc/digsig/keys/ и /etc/digsig/xattr_keys/
необходимо от имени учетной записи администратора через механизм \verb|sudo| выполнить команду:
Command |
---|
sudo update-initramfs -u -k all |
Порядок использования ключей для digsig_verif:
- дополнительные ключи записываются в /sys/digsig/keys или /sys/digsig/xattr_keys' в иерархической последовательности цепочек подписей;
- все дополнительные ключи должны быть подписаны главным ключом или другим дополнительным ключом, подпись которого может быть проверена (за исключением первого ключа в каталоге /sys/digsig/xattr_keys).
Модифицированный GnuPG выводит ГОСТ~Р~34.11-94 в списке доступных алгоритмов.
Для получения списка доступных алгоритмов необходимо выполнить команду:
Command |
---|
gpg --version |
Пример списка:
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL
Замкнутая программная среда (ЗПС) является средством повышения защищенности операционной системы путем контроля целостности (неизменности) файлов. Механизм контроля реализован в виде невыгружаемого модуля ядра Astra Linux (модуль digsig_verif), выполняющего проверку электронной цифровой подписи файлов (ЭЦП). Проверка применяется:
- к файлам формата ELF (исполняемым файлам и разделяемым библиотекам) - проверка ЭЦП, записанной в специальное поле файла (далее - встроенная ЭЦП);
- к любым файлам - проверка ЭЦП, размещаемой в расширенных атрибутах файла (далее - присоединенная ЭЦП);
Режимы выполнения проверки описаны далее.
Средства создания ЗПС предоставляют возможности внедрения встроенной ЭЦП в исполняемые файлы формата ELF, входящие в состав устанавливаемого СПО, и возможность создания присоединенных ЭЦП. Поддерживается использование при подписывании нескольких ключей.
Рекомендации по повышению защищенности информационных систем
Для повышения защищенности информационных систем (ИС) помимо включения ЗПС рекомендуется применять следующие меры по ограничению запуска программного обеспечения и получения доступа к объектам файловой системы для предотвращения несанкционированного исполнения произвольного кода и доступа к системным компонентам операционной системы (ОС):
- Активировать блокировку интерпретаторов (кроме интерпретатора bash). Полный список блокируемых интерпретаторов см. в разделе astra-interpreters-lock статьи Инструменты командной строки astra-safepolicy. При этом в ИС не должно остаться программ, которым разрешено запускать другие программы, включая запуск в режиме эмуляции.
- Активировать блокировку интерпретатора bash.
- Активировать запрет установки бита исполнения.
- Настроить системные и пользовательские профили подсистемы Киоск-2 и включить подсистему Киоск-2 (подробнее см. статью Системный Киоск-2: пакет parsec-kiosk2 (ограничения пользователя).
Для выполнения указанных мер выполнить следующие действия:
При работе в терминале и в сценариях удаленной настройки:
Активировать блокировку интерпретаторов (кроме интерпретатора bash). Команда:
Command sudo astra-interpreters-lock enable Активировать блокировку интерпретатора bash. Команда:
Command sudo astra-bash-lock enable Активировать запрет установки бита исполнения. Команда:
Command sudo astra-nochmodx-lock enable - Проверить корректность выполнения действий:
Проверка активации интерпретаторов (кроме интерпретатора bash):
Command sudo astra-interpreters-lock status результатом команды должно быть "АКТИВНО" и нулевой код завершения;
Command sudo astra-interpreters-lock is-enabled результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
Проверка активации интерпретатора bash:
Command sudo astra-bash-lock status результатом команды должно быть "АКТИВНО" и нулевой код завершения;
Command sudo astra-bash-lock is-enabled результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
Проверка активации запрета установки бита исполнения:
Command sudo astra-nochmodx-lock status результатом команды должно быть "АКТИВНО" и нулевой код завершения;
Command sudo astra-nochmodx-lock is-enabled результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.
- После настройки профилей пользователей и системных профилей активировать режим Киоск-2 и связанные с ним режимы работы
Активировать режим Киоск-2. Команда:
Command echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce Включить протоколирование попыток нарушений установленных фильтров доступа. Команда:
Command echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain; Включить режим контроля доступа Киоск-2 и протоколирования с сохранением данного состояния после перезагрузки. Команда:
Command echo 1 | sudo tee /etc/parsec/kiosk2_enforce; echo 1 | sudo tee /etc/parsec/kiosk2_complain;
При работе в графической сессии:
Открыть инструмент управления политиками безопасности с помощью меню:
Пуск — Панель управления — Безопасность — Политика безопасности
или выполнив в графическом терминале команду:Command sudo fly-admin-smc - Войти в раздел политики консоли и интерпретаторов:
Настройки безопасности — Политика консоли и интерпретаторов. - Активировать пункты:
- "Включить блокировку интерпретаторов кроме Bash для пользователей".
- "Включить блокировку интерпретатора Bash для пользователей".
- Подтвердить изменения путем нажатия на зеленую галочку.
- Убедиться, что механизм "Запрет установки бита исполнения для всех пользователей, включая администраторов" активирован:
Настройки безопасности - Системные параметры.
После выполнения указанных действий перезагрузить ОС:
выполнив в терминале команду:
Command sudo reboot - или используя графическое меню Пуск — Завершение работы — Перезагрузка.
Настройка режима работы модуля digsig_verif
Графический инструмент fly-admin-smc
Графический инструмент fly-admin-smc может применяться для настройки всех параметров ЗПС. Инструмент входит в состав пакета fly-admin-local, устанавливается по умолчанию при установке ОС и доступен в графическом меню: <<Панель управления — Безопасность — Политика безопасности — Замкнутая программная среда>>. Описание графического инструмента приведено в его электронной справке. Модуль fly-admin-smc для работы с ЗПС входит в пакет fly-admin-digsig и также устанавливается по умолчанию.
Инструмент командной строки astra-digsig-control
Инструмент командной строки astra-digsig-control входит в состав пакета astra-safepolicy. Применяется только для настройки режима проверки подписи в исполняемых файлах.
Параметры работы ЗПС в каталоге /etc/digsig/
Параметры работы ЗПС в файле /etc/digsig/digsig_initramfs.conf
Настройка режима работы ЗПС может осуществляться путем прямого редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf.
Предупреждение | ||||
---|---|---|---|---|
Для того, чтобы изменения, сделанные в каталоге /etc/digsig (в том числе — изменения, сделанные в конфигурационном файле /etc/digsig/digsig_initramfs.conf) активировались:
|
Параметрызадаются в виде:
Блок кода |
---|
<имя_параметра>=<значение_параметра> |
Используются следующие параметры:
- 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 не используется;
Данные для работы ЗПС
Помимо конфигурационного файла /etc/digsig/digsig_initramfs.conf в каталоге /etc/digsig/ представлены:
- каталог /etc/digsig/keys — каталог дополнительных ключей для проверки встроенной и присоединенной ЭЦП;
- файл /etc/digsig/xattr_control — список шаблонов шаблонов имен, определяющих файлы, в которых проверяется присоединенная ЭЦП;
- каталог /etc/digsig/xattr_keys — каталог дополнительных ключей, используемых только при проверке присоединенной ЭЦП;
Шаблоны для проверки присоединенной ЭЦП
В файле /etc/digsig/xattr_control хранится список шаблонов шаблонов имен, определяющих имена файлов, в которых проверяется присоединенная ЭЦП. Порядок применения шаблонов:
- в шаблонах должны указываться абсолютные пути, т.е шаблон всегда должен начинаться с символа slash (косая черта, "/");
- шаблоны, начинающиеся с двух символов slash ("//"), указывают имя конкретного файла. Например: //bin/script.sh;
- шаблоны, оканчивающиеся символом slash, указывают имя каталога, в котором должны проверяться все файлы (включая файлы в подкаталогах). Например: /bin/;
- все остальные шаблоны рассматриваются как префикс имени файла, Например, шаблону /bin/script соответствуют файлы: /bin/script, /bin/script.signed, /bin/script12345 и т.д.
Hide If | ||||||||
---|---|---|---|---|---|---|---|---|
Динамическое управление режимами работы ЗПСДинамическое управление режимами работы ЗПС осуществляется через интерфейс sysfs. При этом действуют следующие ограничения:
Доступны следующие интерфейсы, представленные специальными файлами:
Для получения значения параметра конфигурации, управляемого интерфейсом, нужное значение следует прочитать из соответствующего интерфейса:
Например, проверка установленных режимов проверки присоединенной и отсоединенной ЭЦП может быть выполнена командой:
|
Ключи для работы с ЭЦП
В модуль digsig_verify встроены открытые ключи, которые используются:
- для проверки встроенных ЭЦП;
- для проверки присоединенных ЭЦП;
- для проверки ЭЦП в дополнительных ключах, загружаемых из каталога /etc/digsig/keys.
В каждый момент времени модуль использует два набора ключей:
- основной набор ключей, встроенный в модуль — для проверки всех ЭЦП;
- дополнительный набор ключей в каталоге /etc/digsig/keys (изначально пустой) — для проверки встроенных ЭЦП;
- дополнительный набор ключей в каталоге /etc/digsig/keys_xattrs (изначально пустой) — для проверки присоединенных ЭЦП и, возможно, встроенных ЭЦП. Подпись на первом ключе из этого набора не проверяется..
Все ключи хранятся в указанных каталогах и их подкаталогах (см. ниже). Ключи хранятся в формате gnupg --export/etc/digsig/keys и загружаются при загрузке ОС;
При проверке ЭЦП первоначально поиск ключей выполняется в дополнительном наборе. Если дополнительный набор не содержит ключа, использовавшегося для создания ЭЦП, модуль ищет подходящий ключ в основном наборе.
Каждый новый ключ, использованный для подписывания СПО, необходимо включить в дополнительный набор ключей, для чего скопировать файл с ключом в каталог /etc/digsig/keys/ или /etc/digsig/xattr_keys, например, с использованием команды:
Command |
---|
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/. Например:
Command |
---|
sudo cp /<каталог>/<файл ключа> /etc/digsig/xattr_keys/ |
В каталоге /etc/digsig/xattr_keys/ также может располагаться иерархическая структура дополнительных ключей, в которой одни дополнительные ключи должны быть подписаны на других дополнительных ключах. При этом дополнительные ключи должны располагаться в подкаталогах таким образом, чтобы при их загрузке не нарушалась цепочка проверки подписей (см. пример выше).
Графический инструмент fly-admin-smc
В состав Astra Linux входит графический инструмент fly-admin-smc, предоставляющий возможности работы с настройками ЗПС. Инструмент доступен в графическом меню: "Пуск" - "Панель управления" - "Безопасность" - "Политика безопасности" - "Замкнутая программная среда". Работа с инструментом подробно описана во встроенной справке. (клавиша F1).
Подписывание ПО
Встроенная ЭЦП
См. Создание встроенной подписи в ELF файлах для режима ЗПС а также Подписание пакетов ПО.
Присоединенная ЭЦП
Далее рассматривается создание собственного ключа, предназначенного для создания и проверки присоединенной ЭЦП. Для создания ключей используется ПО GNU Privacy Guard. Входящий в состав Astra Linux модифицированный GnuPG поддерживает алгоритм ГОСТ~Р~34.11-94. Список доступных алгоритмов можно проверить командой:
Command |
---|
gpg --version |
Далее приведен пример создания дополнительного ключа и его использования для создание встроенной ЭЦП.
Создать ключевую пару. По умолчанию пара будет сохранена подкаталоге .gnupg домашнего каталога текущего пользователя. Ключевая пара может быть создана с помощью графического инструмента fly-admin-amc, или в командной строке в интерактивном или пакетом режиме.
Предупреждение По умолчанию для ключевой пары используется алгоритм RSA. Использование этого алгоритма в ЗПС Astra Linux не поддерживается. Для ЗПС Astra Linux следует использовать алгоритм GOST_R34.10-2012. Для создания ключевой пары в интерактивном режиме выполнить команду gpg с возможностью интерактивного выбора алгоритма:
Command 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;
Выполнить команду:
Command gpg --gen-key --batch <имя_файла_с_параметрами_ключа>
Информацию о созданном ключе можно получить командой:
Command gpg --list-keys
При наличии установленного ключа для подписи созданный ключ может быть подписан:
Command gpg --export <идентификатор_ключа> | sudo gpg --import
sudo gpg --sign-key <идентификатор_ключа>для применения подписанный ключ должен быть экспортирован в каталог /etc/digsig/xattr_keys. Команды:
Command sudo gpg --export <идентификатор_ключа> | tee /etc/digsig/xattr_keys/<имя_файла_с_подписанным_экспортированным_ключом> Информация Наличие подписи в ключах для проверки присоединенной ЭЦП не проверяется. Поэтому созданный ключ можно экспортировать не подписывая:
Command gpg --export <идентификатор_ключа> | sudo tee /etc/digsig/xattr_keys/<имя_файла_с_экспортированным_ключом>
В файле /etc/digsig/xattr_control задать маски имен контролируемых файлов, например:
Блок кода /bin/spo
Если заданная маска оканчивается символом "/", то она интерпретируется как имя каталога и контролируются все файлы в этом каталоге, в ином случае маска интерпретируется как префикс полного имени контролируемых файлов.
Подписать контролируемые файлы внешней ЭЦП:
Предупреждение Подписание файлов должно быть выполнено до включения проверки ЭЦП, так как после включения проверки ЭЦП подписание не подписанных файлов будет заблокировано.
Command bsign --sign --xattr <имя_файла> Дополнительная информация доступна в справке по утилите bsign;
Включить проверку ЭЦП:
- Изменить параметр DIGSIG_XATTR_MODE в файле /etc/digsig/digsig_initramfs.conf, указав нужный режим проверки;
Выполнить команду:
Command sudo update-initramfs -u -k all Перезагрузить ОС;
Для проверки наличия и правильности ЭЦП файла можно использовать утилиту bsign:
Command |
---|
bsign -w <имя_файла> |
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Поддерживаются следующие алгоритмы:
С открытым ключом: RSA, RSA-E, RSA-S, ELG-E, DSA,
GOST_R 34.10-2001,GOST_R 34.10-2012
Симметричные: 3DES, CAST5, BLOWFISH,
AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Хэш-функции: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512,
SHA224, GOST_R34.11-2012, GOST_R34.11-94
Алгоритмы сжатия: Без сжатия, ZIP, ZLIB,
BZIP2Далее приведен пример создания дополнительного ключа и его использования для подписывания СПО.
Сначала создается ключевая пара GOST R 34.10-2001, которая сохраняется в каталоге ~/.gnupg.
Для создания ключевой пары необходимо выполнить приведенную далее команду с последующим выбором в меню gpg алгоритма ГОСТ~Р~34.10-2001:
Command |
---|
gpg --gen-key |
Пример диалога:
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: создан каталог `/home/keys/.gnupg'
gpg: создан новый файл настоек `/home/keys/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/home/keys/.gnupg/gpg.conf' еще не активны при этом запуске
gpg: создана таблица ключей `/home/keys/.gnupg/secring.gpg'
gpg: создана таблица ключей `/home/keys/.gnupg/pubring.gpg'
Выберите тип ключа:
(1) RSA и RSA (по умолчанию)
(2) DSA и Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
(10) GOST R 34.10-2001 (только для подписи) устаревший
(12) GOST R 34.10-2012 (только для подписи)
Ваш выбор? 12
GOST keypair will have 256 bits.
Выборите срок действия ключа.
0 = без ограничения срока действия
<n> = срок действия - n дней
<n>w = срок действия - n недель
<n>m = срок действия - n месяцев
<n>y = срок действия - n лет
Срок действия ключа? (0) 0
Срок действия ключа не ограничен
Все верно? (y/N) y
Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его
из Вашего имени, комментария и адреса электронной почты в виде:
"Baba Yaga (pensioner) <yaga@deepforest.ru>"
Ваше настоящее имя: Test GOST R 34.10-2012 Secondary Key
Адрес электронной почты: test@gost.secondary.key
Комментарий:
Вы выбрали следующий ID пользователя:
"Test GOST R 34.10-2001 Secondary Key <test@gost.secondary.key>"
Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход? O
Для защиты закрытого ключа необходим пароль.
Введите пароль: ПАРОЛЬ
Повторите пароль: ПАРОЛЬ
Экспорт ключа в файл осуществляется командой:
Command |
---|
gpg --export "Test GOST R 34.10-2012 Secondary Key <test@gost.secondary.key>" > /tmp/secondary_gost_key.gpg |
Ключ пользователя может быть заверен с использованием команд:
Command |
---|
gpg --import /tmp/secondary_gost_key.gpg 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 |
Пользователь подписывает на данном ключе некоторый файл формата ELF с использованием утилиты bsign (по умолчанию подпись внедряется в том числе и в расширенные атрибуты файла):
Command |
---|
bsign --sign test_elf |
Command |
---|
keys@debian:~$ bsign --sign --xattr test_elf |
Для проверки правильности ЭЦП файла формата ELF используется утилита bsign:
Command |
---|
bsign -w test_elf |
Подписанный файл формата ELF может выполняться:
Command |
---|
./test_elf |
Проверка работы ЗПС
Модуль проверки подписи приложений digsig_verif является невыгружаемым модулем ядра. Сообщения таких модулей ядра можно просмотреть командой:
Command |
---|
sudo dmesg |
Или, в случае модуля digsig_verif:
Command |
---|
sudo dmesg | grep DIGSIG |
При попытке запуска неподписанной программы в ЗПС в журнале будут отображаться сообщения Попытки запуска не подписанных файлов во включенной ЗПС будут отображаться в журналах, сохраняемых в файлах /var/log/messages и /var/log/kernel.log, сообщениями вида:
Блок кода |
---|
... DIGSIG: [ERROR] NOT SIGNED: path=.... |
. |
. |