Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с ядром версии 5.4 и выше
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с ядром версии 5.4 и выше
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1


Предупреждение

Ядро версии 5.4 не рекомендуется к использованию, не является безопасным и предоставлятся только для обеспечения обратной совместимости.


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

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

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

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

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

Рекомендации по повышению защищенности информационных систем

Для повышения защищенности информационных систем (ИС) помимо включения ЗПС рекомендуется применять следующие меры по ограничению запуска программного обеспечения и получения доступа к объектам файловой системы для предотвращения несанкционированного исполнения произвольного кода и доступа к системным компонентам операционной системы (ОС):

  1. Активировать блокировку интерпретаторов (кроме интерпретатора bash). Полный список блокируемых интерпретаторов см. в разделе astra-interpreters-lock статьи Инструменты командной строки astra-safepolicy. При этом в ИС не должно остаться программ, которым разрешено запускать другие программы, включая запуск в режиме эмуляции.
  2. Активировать блокировку интерпретатора bash.
  3. Активировать запрет установки бита исполнения.
  4. Настроить системные и пользовательские профили подсистемы Киоск-2 и включить подсистему Киоск-2 (подробнее см. статью Системный Киоск-2: пакет parsec-kiosk2 (ограничения пользователя).

Для выполнения указанных мер выполнить следующие действия:

При работе в терминале и в сценариях удаленной настройки:

  1. Активировать блокировку интерпретаторов (кроме интерпретатора bash). Команда:

    Command
    sudo astra-interpreters-lock enable


  2. Активировать блокировку интерпретатора bash. Команда:

    Command
    sudo astra-bash-lock enable


  3. Активировать запрет установки бита исполнения. Команда:

    Command
    sudo astra-nochmodx-lock enable


  4. Проверить корректность выполнения действий:
    1. Проверка активации интерпретаторов (кроме интерпретатора bash):

      Command
      sudo astra-interpreters-lock status

      результатом команды должно быть "АКТИВНО" и нулевой код завершения;

      Command
      sudo astra-interpreters-lock is-enabled

       результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.

    2. Проверка активации интерпретатора bash:

      Command
      sudo astra-bash-lock status

      результатом команды должно быть "АКТИВНО" и нулевой код завершения;

      Command
      sudo astra-bash-lock is-enabled

      результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.

    3. Проверка активации запрета установки бита исполнения:

      Command
      sudo astra-nochmodx-lock status

      результатом команды должно быть "АКТИВНО" и нулевой код завершения;

      Command
      sudo astra-nochmodx-lock is-enabled

      результатом команды должно быть "ВКЛЮЧЕНО" и нулевой код завершения.

  5. После настройки профилей пользователей и системных профилей активировать режим Киоск-2 и связанные с ним режимы работы
    1. Активировать режим Киоск-2. Команда:

      Command
      echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce


    2. Включить протоколирование попыток нарушений установленных фильтров доступа. Команда:

      Command
      echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain;


    3. Включить режим контроля доступа Киоск-2 и протоколирования с сохранением данного состояния после перезагрузки. Команда:

      Command
      echo 1 | sudo tee /etc/parsec/kiosk2_enforce; echo 1 | sudo tee /etc/parsec/kiosk2_complain;


При работе в графической сессии:

  1. Открыть инструмент управления политиками безопасности с помощью меню: Пуск — Панель управления — Безопасность — Политика безопасности или выполнив в графическом терминале команду:

    Command
    sudo fly-admin-smc


  2. Войти в раздел политики консоли и интерпретаторов:
    Настройки безопасности — Политика консоли и интерпретаторов.
  3. Активировать пункты:
    1. "Включить блокировку интерпретаторов кроме Bash для пользователей".
    2. "Включить блокировку интерпретатора Bash для пользователей".
  4. Подтвердить изменения путем нажатия на зеленую галочку.
  5. Убедиться, что механизм "Запрет установки бита исполнения для всех пользователей, включая администраторов" активирован:
    Настройки безопасности - Системные параметры.

После выполнения указанных действий перезагрузить ОС:

  • выполнив в терминале команду:

    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) активировались:

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

    Command

    sudo update-initramfs -u -k all


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

Предупреждение
Изменения, сделанные в  каталоге /etc/digsig без выполнения указанной процедуры, никогда не применяются.


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

Блок кода
<имя_параметра>=<значение_параметра>

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

  • 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. При этом действуют следующие ограничения:

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

Доступны следующие  интерфейсы, представленные специальными файлами:

  • интерфейсы просмотра и включения параметров конфигурации:
    • /sys/digsig/elf_mode — режим проверки встроенной ЭЦП. Соответствует параметру конфигурации DIGSIG_ELF_MODE.

      Предупреждение

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

      Command
      sudo cp /etc/digsig/build_system_rbt_root_key_2018.gpg /sys/digsig/keys

      Установленные таким образом ключи будут сохраняться до перезагрузки ОС.


    • /sys/digsig/xattr_mode — режим проверки присоединенной ЭЦП. Соответствует параметру конфигурации DIGSIG_XATTR_MODE;
    • /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 — интерфейс загрузки дополнительных ключей, используемых только при проверке присоединенной ЭЦП;

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

Command
sudo cat /sys/digsig/<имя_файла>

Например, проверка установленных режимов проверки присоединенной и отсоединенной ЭЦП может быть выполнена командой:

Command
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, например, с использованием команды:

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

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

  1. Создать ключевую пару. По умолчанию пара будет сохранена подкаталоге .gnupg домашнего каталога текущего пользователя. Ключевая пара может быть создана с помощью графического инструмента fly-admin-amc, или в командной строке в интерактивном или пакетом режиме.

    Предупреждение
    По умолчанию для ключевой пары используется алгоритм RSA. Использование этого алгоритма в ЗПС Astra Linux не поддерживается. Для ЗПС Astra Linux следует использовать алгоритм GOST_R34.10-2012.
    1. Для создания ключевой пары в интерактивном режиме выполнить команду gpg с возможностью интерактивного выбора алгоритма:

      Command
      gpg --full-generate-key

      Для создания ключевой пары следует выбрать алгоритм GOST_R34.10-2012. После ответа на заданные вопросы будет выдана информация о созданной ключевой паре вида:

      Блок кода
      pub   gP256 2024-03-12 [SC]
            566F70D5D822D1B51B23CBE60055EBA236DA8851
      uid                      Astra Linux <info@astralinux.ru>

      Далее в примерах для идентификации ключа используется идентификатор ключа -  последовательность шестнадцатеричных цифр, в примере выше это 566F70D5D822D1B51B23CBE60055EBA236DA8851. Ключ можно также идентифицировать по имени пользователя;

    2. Для создания ключевой пары с использованием алгоритмов ГОСТ в пакетном режиме:
      1. Создать файл с параметрами ключа, например:

        Блок кода
        Key-Type:GOST_R34.10-2012
        %no-protection
        Name-Real:<имя_пользователя>
        Name-Comment: <комментарий>
        Name-Email: <e-mail>

        подробнее см. Unattended GPG key generation;

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

        Command

        gpg --gen-key --batch <имя_файла_с_параметрами_ключа>


      3. Информацию о созданном ключе можно получить командой:

        Command
        gpg --list-keys


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

    Command
    gpg --export <идентификатор_ключа> | sudo gpg --import 
    sudo gpg --sign-key <идентификатор_ключа>

    для применения подписанный ключ должен быть экспортирован в каталог /etc/digsig/xattr_keys. Команды:

    Command
    sudo gpg --export  <идентификатор_ключа> | sudo tee /etc/digsig/xattr_keys/<имя_файла_с_подписанным_экспортированным_ключом>


    Информация

    Наличие подписи в ключах для проверки присоединенной ЭЦП не проверяется. Поэтому созданный ключ можно экспортировать не подписывая:

    Command

    sudo gpg --export <идентификатор_ключа> | sudo tee /etc/digsig/xattr_keys/<имя_файла_с_экспортированным_ключом>



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

    Блок кода
    /bin/spo

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

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

    Предупреждение

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


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

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

  5. Включить проверку ЭЦП:

    1. Изменить параметр  DIGSIG_XATTR_MODE в файле /etc/digsig/digsig_initramfs.conf, указав нужный режим проверки;
    2. Выполнить команду:

      Command
      sudo update-initramfs -u -k all


    3. Перезагрузить ОС;


Для проверки наличия и правильности ЭЦП файла можно использовать утилиту bsign:

Command
bsign -w <имя_файла>


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

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

Command
sudo dmesg

Или, в случае модуля digsig_verif:

Command
sudo dmesg | grep DIGSIG

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

Блок кода
... DIGSIG: [ERROR]  NOT SIGNED: path=....