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

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

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

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

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

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)


Замкнутая программная среда

Режимы функционирования

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

  • выявления фактов несанкционированного изменения исполняемых и других файлов (в т. ч. относящихся к КСЗ);
  • предотвращения загрузки измененных исполняемых файлов, а также открытия других измененных файлов.

Контроль целостности реализован в невыгружаемом модуле ядра ОС digsig_verif и производится на основе проверки:

  • цифровой подписи, внедренной в файл;
  • цифровой подписи, содержащейся в расширенных атрибутах файла (при условии поддержки расширенных атрибутов файловой системой (ФС));
  • отсоединенной цифровой подписи (содержащейся в отдельном файле).

Цифровая подпись реализована в соответствии с ГОСТ Р 34.10-2012 (256 бит) и ГОСТ Р 34.10-2001 (256 бит), также для совместимости сохранено использование ГОСТ Р 34.10-2001.

При настроенной ЗПС не блокируется использование инструмента qemu-user-static, с помощью которого возможно запустить неподписанные исполняемые файлы, предназначенные для другой аппаратной архитектуры. Поэтому при включении ЗПС может потребоваться дополнительно включить блокировку интерпретаторов, блокирующую в том числе использование qemu-*-static. При этом блокировка интерпретаторов не влияет на использование ядерного механизма binfmt, позволяющего запускать исполняемые файлы другой аппаратной платформы через qemu-*-static (по умолчанию binfmt отключен).

Включение ЗПС может быть выполнено в процессе установки ОС путем выбора соответствующего пункта программы установки ОС. Включение и выключение ЗПС после установки ОС выполняется с помощью инструмента astra-digsig-control, описанного далее.

Типы подписей и наборы ключей

В ЗПС используются следующие типы подписей:

ТипОписание
​Встраиваемая подпись

​Может быть встроена в следующие типы файлов:

  • двоичные (бинарные) исполняемые файлы и библиотеки формата ELF (в ELF-секции файла);
  • PE-файлы, в том числе файлы формата DLL для контролируемого запуска Windows-программ в среде Wine.  (в конце файла).
Подпись в расширенных атрибутах ФСНоль или более произвольных символов, исключая символ «/»
Отсоединенная подписьПредназначена для файлов любых типов, в том числе для модулей ядра. Содержится в отдельных файлах с именами вида @путь@имя_файла.расширение.sign (например, @tmp@example@settings.conf.sign) в каталоге /etc/digsig/external_sig/. Отсоединенная подпись не нарушает структуру исходного файла, что может играть важную роль в системах, использующих периодический контроль целостности по эталонным значениям контрольных сумм. Так как файл  подписи содержит в своем имени путь к подписанному файлу, при перемещении последнего он должен быть подписан заново

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

  1. Основной набор — три встроенных ключа изготовителя. Используется для проверки любых подписей (в т.ч. для проверки подписи ключей из дополнительного набора);
  2. Дополнительный набор — состоит из открытых ключей в каталогах /etc/digsig/keys/ и /etc/digsig/xattr_keys/. Изначально ключи в дополнительном наборе отсутствуют. Ключи из каталога /etc/digsig/keys/ применяются для проверки всех типов подписей. В каталог /etc/digsig/keys/ добавляются открытые ключи в формате GnuPG, созданные с помощью инструмента командной строки gpg или переданные изготовителем. Ключи из данного каталога должны быть подписаны ключом изготовителя. При этом ключи могут быть организованы в иерархическую структуру: файлы ключей в каталоге /etc/digsig/keys/ должны быть подписаны ключом изготовителя, а файлы ключей в дочерних каталогах /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/ применяются для проверки подписей в расширенных атрибутах ФС и отсоединенных подписей. В каталог /etc/digsig/xattr_keys/ добавляются открытые ключи в формате GnuPG Подписи на ключах в данном каталоге не проверяются.

Отзыв сертификата ключа

В случае потери доверия к ключу цифровой подписи возможно исключить его сертификат из проверки подписей файлов. Список отзыва сертификатов расположен в файле /etc/digsig/revoked_keys.

ВНИМАНИЕ! При работе с данным списком следует использовать дозапись в файл, чтобы случайно не перезаписать его и не уничтожить предыдущие значения отозванных сертификатов.

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

sha1sum <файл сертификата.gpg> | awk ’{print $1}’

Для отзыва одного сертификата следует использовать команду:

echo "<SHA-1_отпечаток_сертификата_отзыва>" >> /etc/digsig/revoked_keys

Для отзыва сертификатов по заготовленному списку следует использовать команду:

cat <файл_списка_отзыва> >> /etc/digsig/revoked_keys
ВНИМАНИЕ! После выполнения операции отзыва повторная загрузка сертификата в модуль digsig_verif будет невозможна. Проверка подписей файлов, подписанных ключом, сертификат которого был отозван, будет завершена с ошибкой.

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

sudo bsign-integrator --sign-analyse <идентификатор_сертификата_ключа> -E > SIGNED

Чтобы выполнить поиск файлов по списку сертификатов, следует использовать команду:

sudo bsign-integrator --sign-analyse -L <файл_списка_идентификаторов_ключей> > SIGNED

Описание инструмента командной строки bsign-integrator приведено далее.
Для применения настроек следует выполнить команду:

sudo update-initramfs -u -k all

и перезагрузить систему.

Модуль digsig_verif

Архитектура и настройка модуля digsig_verif

Модуль digsig_verif имеет следующие интерфейсы внутренней архитектуры:

  • /sys/digsig/elf_mode — режим работы при проверке цифровой подписи исполняемых файлов и разделяемых библиотек;
  • /sys/digsig/elf_verification_mode — режим проверки цифровой подписи исполняемых файлов и разделяемых библиотек;
  • /sys/digsig/xattr_mode — режим работы при проверке цифровой подписи в расширенных атрибутах ФС для неисполняемых файлов;
  • /sys/digsig/keys — файл загрузки дополнительных ключей для проверки всех типов цифровых подписей;
  • /sys/digsig/ignore_gost2001 — режим игнорирования проверки цифровой подписи по ГОСТ Р 34.10-2001;
  • /sys/digsig/xattr_control — файл загрузки шаблонов имен файлов, для которых проверяется цифровая подпись в расширенных атрибутах ФС;
  • /sys/digsig/ignore_xattr_keys – режим игнорирования ключей из /etc/digsig/xattr_keys/ для проверки подписей в расширенных атрибутах ФС и отсоединенных подписей;
  • /sys/digsig/xattr_keys — файл загрузки дополнительных ключей, используемых только при проверке цифровой подписи в расширенных атрибутах ФС и отсоединенной подписи.

Файлы интерфейсов позволяют изменять настройки модуля digsig_verif в пределах текущей сессии пользователя, например с целью отладки. Запись значений в файлы выбора режимов переопределяет текущие режимы модуля digsig_verif. При записи значений в файлы загрузки эти значения будут добавлены к уже перечисленным в соответствующих файлах в каталоге /etc/digsig/.
Постоянная настройка модуля digsig_verif осуществляется путем редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf, в котором для соответствующих режимов работы задается их состояние (1 — включен, 0 — отключен). Например, для отключения проверки цифровой подписи по ГОСТ Р 34.10-2001 необходимо в конфигурационном файле /etc/digsig/digsig_initramfs.conf для соответствующего параметра задать значение 1:

DIGSIG_IGNORE_GOST2001=1

После внесения изменений в конфигурационный файл /etc/digsig/digsig_initramfs.conf, а также для загрузки модулем digsig_verif ключей после их размещения в каталогах /etc/digsig/keys/ и /etc/digsig/xattr_keys/ необходимо выполнить команду:

sudo update-initramfs -u -k all

Также настройка режимов работы может быть выполнена в графической утилите astra-systemsettings («Параметры системы», модуль «Замкнутая программная среда» в разделе «Ограничения программной среды», см. электронную справку). Для вызова модуля можно использовать команду:

astra-systemsettings astra_kcm_digsig

Проверка подписи в исполняемых файлах и разделяемых библиотеках

Модуль digsig_verif позволяет проверять исполняемые файлы и разделяемые библиотеки, подписанные встраиваемой подписью, подписью в расширенных атрибутах ФС, а также отсоединенной подписью. В модуле digsig_verif реализован механизм, позволяющий при проверке подписей файлов использовать ключи из разных наборов и проверять несколько подписей. Для проверки подписи используются открытые ключи из основного набора и из дополнительного набора. Проверка подписи производится при запуске файла на исполнение. Настройка режима проверки подписи исполняемых файлов осуществляется путем редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf или посредством модуля «Замкнутая программная среда» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings («Параметры системы», см. электронную справку).

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

  • DIGSIG_ELF_MODE=0 — отключить проверку цифровой подписи в исполняемых файлах и разделяемых библиотеках;
  • DIGSIG_ELF_MODE=1 — включить проверку цифровой подписи в исполняемых файлах и разделяемых библиотеках. При отсутствующей или неверной подписи запуск файла или библиотеки запрещается;
  • DIGSIG_ELF_MODE=2 — включить отладочный режим проверки цифровой подписи в исполняемых файлах и разделяемых библиотеках. При отсутствующей или неверной подписи запуск файла или библиотеки разрешается с выдачей предупреждения.

Проверку текущего режима работы можно выполнить с помощью команды:

cat /sys/digsig/elf_mode

Если для параметра DIGSIG_ELF_MODE выставлено значение 1 или 2 (включенная проверка или отладочный режим проверки цифровой подписи в исполняемых файлах и разделяемых библиотеках), то возможно установить следующие варианты проверки цифровой подписи с помощью значения параметра DIGSIG_ELF_VERIFICATION_MODE:

  • DIGSIG_ELF_VERIFICATION_MODE=0 — проверять только встраиваемую подпись (используется по умолчанию);
  • DIGSIG_ELF_VERIFICATION_MODE=1 — проверять только подпись в расширенных атрибутах ФС;
  • DIGSIG_ELF_VERIFICATION_MODE=2 — проверять первую найденную подпись, если она неверная, то запуск запрещается. Поиск подписи осуществляется в следующем порядке:
    • встраиваемая подпись;
    • подпись в расширенных атрибутах ФС;
    • отсоединенная подпись;
  • DIGSIG_ELF_VERIFICATION_MODE=3 — проверять все типы подписей, используется первая найденная верная подпись;
  • DIGSIG_ELF_VERIFICATION_MODE=4 — проверять встраиваемую подпись и подпись в расширенных атрибутах ФС. Запуск разрешается только при успешной проверке обоих видов подписи.
ВНИМАНИЕ! Установка значения 1 или 4 параметра DIGSIG_ELF_VERIFICATION_MODE приведет к отказу загрузки ОС, если все исполняемые файлы и разделяемые библиотеки не были предварительно подписаны в расширенных атрибутах файловой системы.

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

sudo update-initramfs -u -k all

Проверка подписи в неисполняемых файлах

Модуль digsig_verif позволяет проверять цифровую подпись неисполняемых файлов любых типов в расширенных атрибутах файловой системы. Для проверки подписи используются ключи из основного набора и открытые ключи из дополнительного набора. Проверка подписи производится при открытии файла. Для проверки подписи в расширенных атрибутах ФС проверяемые файлы должны быть указаны в файле /etc/digsig/xattr_control. Каждая строка в файле задает шаблон имени проверяемого файла в виде маски полного пути. Например, проверка цифровой подписи всех файлов в каталоге /bin, имя которых начинается на lo:

/bin/lo

Для проверки отдельных файлов (без маски) необходимо указать дополнительный символ «/» в начале пути, например:

//home/start.sh

Настройка режима проверки файлов на основе цифровой подписи в расширенных атрибутах ФС осуществляется путем редактирования конфигурационного файла /etc/digsig/digsig_initramfs.conf или с помощью модуля «Замкнутая программная среда» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings («Параметры системы», см. электронную справку).
Для управления режимом проверки цифровой подписи в расширенных атрибутах ФС для неисполняемых файлов используются следующие параметры:

  • DIGSIG_XATTR_MODE=0 — отключить проверку цифровой подписи в расширенных атрибутах ФС для неисполняемых файлов;
  • DIGSIG_XATTR_MODE=1 — включить проверку цифровой подписи в расширенных атрибутах ФС для неисполняемых файлов. При отсутствующей или неверной подписи открытие файла запрещается;
  • DIGSIG_XATTR_MODE=2 — включить отладочный режим проверки цифровой подписи в расширенных атрибутах ФС для неисполняемых файлов. При отсутствующей или неверной подписи открытие файла разрешается с выдачей предупреждения.

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

sudo update-initramfs -u -k all

Проверку текущего режима работы можно выполнить с помощью команды:

cat /sys/digsig/xattr_mode

Добавление дополнительных ключей

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

Для создания ключей используется доработанный GNU Privacy Guard (GnuPG). В доработанном GnuPG доступно использование алгоритма по ГОСТ Р 34.11-2012 для вычисления хеш-функции. Результат вычисления хеш-функции записывается вместе с подписью. Для получения списка доступных алгоритмов выполнить команду:

gpg --version

Пример результата выполнения команды:

gpg --version

gpg (GnuPG) 1.4.18291
РУСБ.10015-01 97 01-1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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

Для создания ключа необходимо создать ключевую пару (закрытый и открытый ключи) по ГОСТ Р 34.10-2012, выполнив команду:

sudo gpg --full-generate-key

В процессе выполнения команды на запрос о выборе типа ключа указать номер пункта, соответствующий ГОСТ Р 34.10-2012. Пример вывода команды:

sudo gpg --full-generate-key

gpg (GnuPG) 2.2.40; Copyright (C) 2022 g10 Code GmbH

This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Выберите тип ключа:
(1) RSA и RSA (по умолчанию)
(2) DSA и Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
(14) Имеющийся на карте ключ
(14) GOST R34.10-2001 (sign only) OBSOLETE
(15) GOST R34.10-2012 (sign only)
Ваш выбор? 15
длина ключей GOST_R34.10-2012 может быть от 1024 до 4096.
Какой размер ключа Вам необходим? (3072)
Запрошенный размер ключа - 3072 бит
Выберите срок действия ключа.
0 = не ограничен
<n> = срок действия ключа - n дней
<n>w = срок действия ключа - n недель
<n>m = срок действия ключа - n месяцев
<n>y = срок действия ключа - n лет292
РУСБ.10015-01 97 01-1
Срок действия ключа? (0)
Срок действия ключа не ограничен
Все верно? (y/N) y
GnuPG должен составить идентификатор пользователя для идентификации ключа.
Ваше полное имя: test user
Адрес электронной почты: test@test.ru
Примечание:
Вы выбрали следующий идентификатор пользователя:
"test user <test@test.ru>"
Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход? o
Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии.
gpg: /root/.gnupg/trustdb.gpg: создана таблица доверия
gpg: создан каталог ’/root/.gnupg/openpgp-revocs.d’
gpg: сертификат отзыва записан в ’/root/.gnupg/openpgp-revocs.d/07888\
A89440B749338619DF1FBBB20B915E8F5EA.rev’.
открытый и секретный ключи созданы и подписаны.
pub gP256 2024-06-14 [SC]
07888A89440B749338619DF1FBBB20B915E8F5EA
uid test user <test@test.ru>

В созданной ключевой паре открытый ключ имеет идентификатор 07888A89440B749338619DF1FBBB20B915E8F5EA, с которым он добавляется в хранилище gpg-ключей /root/.gnupg/pubring.kbx и по которому он определяется в командах экспорта и копирования.
Если созданный ключ предназначен для подписания в расширенных атрибутах ФС или отсоединенной подписью и нет требований подтверждать подпись открытым ключом изготовителя, то необходимо:

  1. Экспортировать открытый ключ созданной пары в файл, выполнив команду:
    sudo gpg --export <идентификатор_ключа> > <имя_файла_ключа>.gpg
    Пример:
    sudo gpg --export 07888A89440B749338619DF1FBBB20B915E8F5EA > /tmp/secondary_gost_key.gpg
  2. Скопировать полученный файл открытого ключа в каталог /etc/digsig/xattr_keys/.

Если созданный ключ предназначен для подписания любой подписью (в т. ч. встраиваемой) и присутствует ключ, открытый ключ которого подписан изготовителем или ключом из иерархии подписанных изготовителем ключей, то необходимо:

  1. Подписать открытый ключ созданной пары, выполнив команду:
    gpg --sign-key <идентификатор_ключа>
    Пример:
    gpg --sign-key 07888A89440B749338619DF1FBBB20B915E8F5EA
  2. Экспортировать подписанный открытый ключ в файл, выполнив команду:
    sudo gpg --export <идентификатор_ключа> > <имя_файла_ключа>.gpg
    Пример:
    gpg --export 07888A89440B749338619DF1FBBB20B915E8F5EA > /tmp/secondary_gost_key_signed.gpg
  3. скопировать полученный файл подписанного открытого ключа в каталог /etc/digsig/keys.

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

sudo update-initramfs -u -k all

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

sudo gpg --list-keys


Подписывание файлов

Открытые ключи из основного набора доступны только для проверки цифровой подписи. Для подписывания файлов необходимо использовать отдельные закрытые ключи, например, ключи созданные с помощью gpg (см. 16.1.5) или переданные изготовителем. При этом для проверки этих подписей их открытые ключи должны быть добавлены в дополнительный набор.

Подписывание файлов осуществляется с помощью инструмента командной строки bsign-integrator или с помощью модуля «Замкнутая программная среда» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings («Параметры системы», см. электронную справку). Инструмент bsign-integrator позволяет осуществлять все операции с цифровыми подписями и поддерживает все типы цифровых подписей. Синтаксис команды:

sudo bsign-integrator <действие> [параметр] [файл]

Описание действий и параметров инструмента bsign-integrator приведено в таблицах:
Действия инструмента bsign-integrator:

ДействиеОписание
​-b, --bsignВывести значение инструмента работы с подписями, заданного по умолчанию​
-d, --default <инструмент>Указать инструмент работы с подписями, который будет использоваться по умолчанию
-w, --show-infoВывести информацию о подписях для указанного файла
-s, --signПодписать файл или файлы. С действием должен быть указан единичный файл для подписания или файл со списком файлов (с параметром -L). Если в параметрах не указаны типы подписей, нужный тип определяется автоматически
-a, --sign-analyse <отпечаток>Вывести список файлов, подпись которых соответствует указанному SHA1 отпечатку сертификата ключа проверки цифровой подписи. Если в параметрах не указаны типы подписей, то выполняется поиск по файлам со всеми видами цифровой подписи
-T, --tools-listВывести список поддерживаемых инструментов работы с подписями

Параметры инструмента bsign-integrator:

ПараметрОписание
​-C, --current <путь>Указать путь к инструменту работы с подписями, который будет использован в текущей команде​
-L, --input_listИспользовать файл со списком файлов в качестве входных значений
-E, --elf-onlyПодпись в elf-секции файла (только для файлов типа ELF)
-A, --attachedПодпись в конце файла
-X, --xattr-onlyПодпись в расширенных атрибутах ФС
-D, --detachedПодпись в отдельном файле (отсоединенная подпись)
-k=<идентификатор>, --key=<идентификатор>Указать идентификатор ключа для использования в текущей команде. Используется вместе с параметром --passphrase
-p=<пароль>, --passphrase=<пароль>Указать пароль ключа, использованного в параметре --key
-j,--jobs=<количество>Количество процессов, которое разрешено запускать одновременно. Если не задано, то соответствует количеству процессоров в системе

Более подробное описание инструмента командной строки bsign-integrator приведено на справочной странице man bsign-integrator. Примеры:

  • Подписать один файл созданным ключом с автоматическим определением требуемого типа подписи:
    sudo bsign_integrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA filetosign
  • Подписать файлы из списка:
    sudo bsign_integrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA -L filelist
  • Подписать исполняемый файл в расширенных атрибутах ФС и отсоединенной подписью:
    sudo bsign_integrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA -X -D filetosign
  • Подписать созданным ключом все файлы типа ELF в расширенных атрибутах ФС:
    sudo find / -type f -exec file {} \; | grep " ELF " | cut -d: -f1 > ELFS
    sudo bsign-integrator -s -k=07888A89440B749338619DF1FBBB20B915E8F5EA -p=JHbd<jcd -X -L ELFS

    Примечание. Данный процесс является очень продолжительным и может занять несколько часов.

Режим Киоск-2

Режим Киоск-2 — это инструмент подсистемы безопасности PARSEC для ограничения возможностей, предоставляемых непривилегированным пользователям. Работу режима Киоск-2 обеспечивает пакет parsec-kiosk2.

Профили пакета parsec-kiosk2

Пользовательские профили

Профили пользователей parsec-kiosk2 располагаются в каталоге /etc/parsec/kiosk2 и служат для применения ограничений действий пользователей. Профиль пользователя — это текстовый файл, имя которого совпадает с именем пользователя. Один профиль пользователя служит для установки ограничений только для одного пользователя. Если при включенном режиме Киоск-2 в каталоге /etc/parsec/kiosk2 отсутствует профиль пользователя, то права данного пользователя в ОС не ограничиваются.

ВНИМАНИЕ! Если для пользователя создан пустой профиль, то данному пользователю запрещены любые действия.

Системные профили

Системные профили parsec-kiosk2 располагаются в каталоге /etc/parsec/kiosk2-profiles и также служат для применения ограничений действий пользователей. Содержимое файла системного профиля представляет собой список файлов и профилей приложений с абсолютными или относительными путями, а также с информацией о правах доступа и владельцах этих файлов. Системный профиль можно добавить в профили нескольких пользователей, тогда для всех этих пользователей будет доступно использование приложения в соответствии с ограничениями в правах доступа и
владельцах, указанных в системном профиле данного приложения.

Синтаксис профилей parsec-kiosk2

Синтаксис разрешения на доступ к файлу:

+file rwc u/o: <имя_файла>

или на доступ к ссылке:

+link rwc uo: <имя_файла>

где:

  • rwc — права доступа к файлу: чтение (r), запись (w) и создание (c), которые указываются при наличии соответствующего разрешения;
  • u — доступ владельцу файла;
  • o — доступ остальным пользователям;
  • <имя_файла> — файл, права доступа к которому назначаются. При этом имя файла для ссылки должно соответствовать существующей символьной ссылке. Целевой файл для ссылки, который не обязан существовать в момент загрузки профиля, добавляется в список доступных.

В синтаксисе профилей режима Киоск-2 можно использовать кириллицу, также могут быть использованы метасимволы в имени файла.

ВНИМАНИЕ! Метасимволы в имени файла для ссылки не интерпретируются.

Доступные метасимволы:

МетасимволОписание
​**Ноль или более произвольных символов, включая символ «/»​
*Ноль или более произвольных символов, исключая символ «/»
?Один произвольный символ, исключая символ «/»
[набор_символов]Один из символов, принадлежащий набору. В наборе любые символы теряют свое специальное значение. Символ «]» может входить в набор только на первой позиции
\dОдна десятичная цифра
\DОдна или более десятичная цифра
\hОдна шестнадцатеричная цифра
\HОдна или более шестнадцатеричная цифра
\xNNБайт с заданным значением
\z

Пустая строка или подстрока, которая добавляется к еще не созданным или уже удаленным файлам. Данная конструкция используется при управлении созданием файла, например:

+file wc u: /home/*/.config/example/example.conf\z

В этом случае разрешается доступ как к файлу example.conf, так и к example.conf Если удалить \z, то доступ к example.conf будет запрещен. Открытие существующего файла на запись будет успешным, а создание нового — нет

\<любой_другой_символ>

Символ без специальной интерпретации, например, \\,\[,\*)

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

@include other-profile-name

Синтаксис, совместимый с parsec-kiosk

В профилях режима Киоск-2 корректно распознаются строки, соответствующие синтаксису режима киоска (устаревший инструмент для ограничений действий пользователя). При этом при использовании синтаксиса режима киоска в режиме Киоск-2:

  • в именах файлов спецсимволы не интерпретируются;
  • любое из прав на чтение (r) или исполнение (x) преобразуется в право на чтение (r), а право на запись (w) преобразуется в права на запись (w) и создание (c);
  • правила одинаково применяются для доступа как владельцев, так и других пользователей;
  • строка обязательно должна начинаться с символа «"» или «/»;
  • если файл представляет символьную ссылку, то режим Киоск-2 обрабатывает целевой файл ссылки;
  • имя профиля должно начинаться только с латинской буквы, а также в нем должен отсутствовать символ «/».

Если профиль, созданный в режиме киоска, отредактировать и сохранить с использованием графического инструмента fly-admin-kiosk, то он сохранится с использованием синтаксиса режима Киоск-2.

Работа с Киоск-2 через консоль

Включение и выключение Киоск-2

При первом запуске ОС режим Киоск-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

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

Для выключения режимов контроля доступа Киоск-2 и протоколирования в соответствующих командах требуется заменить 1 на 0.

Для того чтобы избирательно включать режим Киоск-2 и исключать выбранных пользователей:

  1. В каталоге /etc/parsec/kiosk2 создать каталог disabled:
    cd /etc/parsec/kiosk2
    sudo mkdir disabled
  2. Переместить в каталог disabled профили тех пользователей, для которых не должны применяться ограничения:
    sudo mv <имя_пользователя1> <имя_пользователя2> disabled
  3. Включить режим Киоск-2:
    echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce

После выполнения данных действий ограничения режима Киоск-2 будут применены ко всем пользователям, кроме <имя_пользователя1>, <имя_пользователя2> и тех пользователей, для которых не были созданы профили. После перезагрузки ОС режим Киоск-2 вернется в состояние, указанное в /etc/parsec/kiosk2_enforce. При повторном включении режима Киоск-2 исключения для <имя_пользователя1>, <имя_пользователя2> и тех пользователей, для которых не были созданы профили, сохранятся и ограничения доступа к ним не будут применены.

Протоколирование процессов

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

  1. Выключить режим контроля доступа Киоск-2:
    echo 0 | sudo tee /sys/module/parsec/parameters/uc_enforce
  2. Включить протоколирование процессов:
    echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain
  3. Создать профиль пользователя:
    true | sudo tee /etc/parsec/kiosk2/<имя_пользователя>
  4. Запустить сессию пользователя <имя_пользователя>:
    su - <имя_пользователя>
  5. Запустить протоколируемое приложение;
  6. Выйти из сессии пользователя:
    exit
  7. Выключить протоколирование процессов:
    echo 0 | sudo tee /sys/module/parsec/parameters/uc_complain
  8. Получить сообщения о запрещенных операциях:
    sudo dmesg | grep PARSEC-UC:

Создание профиля

Для создания системного профиля протоколируемого приложения в каталоге /etc/parsec/kiosk2-profiles создать файл, задав в качестве его имени название приложения, и вписать в него все пути с учетом синтаксиса из сообщений о запрещенных операциях.
Для создания профиля пользователя в каталоге /etc/parsec/kiosk2 создать файл с именем, совпадающим с именем этого пользователя.

Графический инструмент управления профилями

Для управления режимом Киоск-2 и профилями, расположенными в каталогах /etc/parsec/kiosk2 и /etc/parsec/kiosk2-profiles, используется графический инструмент fly-admin-kiosk. Описание инструмента приведено в электронной справке.

ВНИМАНИЕ! Для работы с профилями режима киоска с использованием утилиты fly-admin-kiosk необходимо адаптировать их синтаксис и поместить профили в каталоги /etc/parsec/kiosk2 и /etc/parsec/kiosk2-profiles пакета parsec-kiosk2 соответственно.

Для запуска утилиты выполнить в консоли команду:

sudo fly-admin-kiosk

или перейти «меню «Пуск» — Панель управления — Безопасность — Системный киоск».

Графический киоск

Для ограничения прав запуска программ локальными пользователями возможно использовать режим графического киоска. Настройка режима графического киоска выполняется с использованием модуля «Графический киоск» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings («Параметры системы», см. электронную справку). Для вызова модуля можно использовать команду:

astra-systemsettings astra_kcm_graphics_kiosk
ВНИМАНИЕ! Настройка режима графического киоска с помощью модуля «Графический киоск» графической утилиты astra-systemsettings осуществляется администратором на максимальном уровне мандатного контроля целостности, установленном в ОС.

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

Графический киоск в режиме «Мобильный»

Графический киоск в режиме «Мобильный» ограничивает доступ пользователяc к функциям системы и возможность запуска графических приложений. Настройка графического киоска выполняется администратором в конфигурационном файле /etc/mobile-kiosk/mobile-kiosk.conf (если указанные каталог и конфигурационный файл отсутствуют, их необходимо создать). В конфигурационном файле необходимо указать имя учетной записи пользователя, для которого настраивается графический киоск, и в качестве значения параметра Applications перечислить desktop-файлы приложений, которые можно будет запускать указанному пользователю:

[<имя_пользователя>]
Applications=<приложение1>,<приложение2>,...

Пример настройки киоска для пользователя user, разрешающая запуск только приложений «Галерея» и «Музыка»:

[user]
Applications=fly-gallery,fly-music

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

  • просмотр и удаление уведомлений;
  • строка поиска;
  • изменение громкости звука и яркости экрана;
  • завершение работы.

Остальные приложения и функции системы (в том числе добавление, перемещение и удаление значков, изменение обоев, добавление виджетов) пользователю будут недоступны.

Если в конфигурационном файле /etc/mobile-kiosk/mobile-kiosk.conf в качестве значения параметра Applications указано одно приложение и дополнительно указан параметр SingleMode=true, киоск будет работать в одиночном режиме — указанное приложение будет запускаться автоматически при входе пользователя в сессию и пользователь сможет работать только в данном приложении. При завершении работы приложения будет автоматически завершена пользовательская сессия. Из функций системы пользователю будет доступно только завершение работы.

Пример настройки киоска для пользователя user, разрешающая работать в одиночном режиме в приложении «Калькулятор»:

[user]
Applications=org.kde.kalk
SingleMode=true

Изоляция приложений

Для обеспечения изолированного выполнения графических и консольных приложений в состав ОС входит инструмент Firejail . Целью применения Firejail является минимизация риска компрометации основной ОС при запуске недоверенных или потенциально уязвимых программ.

Для обеспечения изоляции приложений в Firejail используются:

  • механизм пространств имен namespaces;
  • фильтрация системных вызовов seccomp-bpf.

После запуска инструмент Firejail и все его дочерние процессы используют отдельные представления ресурсов ядра, таких как сетевой стек, таблица процессов и точки монтирования.

Firejail не требует подготовки системного образа: состав окружения формируется при запуске на основе содержимого текущей ФС, и удаляется после завершения работы приложения.

При использовании Firejail предоставляются средства задания правил доступа к ФС, позволяющие:

  • определять файлы и каталоги, к которым разрешен или запрещен доступ;
  • предоставлять доступ к файлам или каталогам только для чтения;
  • подключать для данных временные ФС (tmpfs);
  • совмещать каталоги через bind-mount и overlayfs.

При установке ОС установка инструмента Firejail выполняется автоматически. В целях повышения безопасности при установке Firejail снимается бит suid. Для того чтобы с помощью Firejail можно было запускать приложения, необходимо включить этот бит, выполнив от имени администратора команду:

chmod u+s /usr/bin/firejail

В состав ОС входят профили изоляции системных вызовов для большинства популярных приложений, в том числе для Firefox, Chromium, VLC. Для выполнения программы в режиме изоляции требуется указать имя приложения в качестве параметра для инструмента Firejail, например:

firejail firefox

Для запуска браузера Firefox может потребоваться внести изменения в конфигурационный файл /etc/firejail/firefox.profile, заменив строку seccomp на строку:

seccomp.drop @clock,@cpu-emulation,@debug,@module,@obsolete,@raw-io,@reboot,@resources,@swap,acct,add_key,bpf,fanotify_init,io_cancel,io_destroy,io_getevents,io_setup,io_submit,ioprio_set,kcmp,keyctl,mount,name_to_handle_at,nfsservctl,ni_syscall,open_by_handle_at,personality,pivot_root,process_vm_readv,ptrace,remap_file_pages,
request_key,setdomainname,sethostname,syslog,umount,umount2,userfaultfd,vhangup,vmsplice



  • Нет меток