Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Замкнутая программная среда
Режимы функционирования
Инструменты из состава ОС предоставляют возможность создавать замкнутую программную среду (ЗПС). ЗПС обеспечивает динамический контроль неизменности (целостности) и подлинности файлов и предназначена для:
- выявления фактов несанкционированного изменения исполняемых и других файлов (в т. ч. относящихся к КСЗ);
- предотвращения загрузки измененных исполняемых файлов, а также открытия других измененных файлов.
Контроль целостности реализован в невыгружаемом модуле ядра ОС 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, описанного далее.
Типы подписей и наборы ключей
В ЗПС используются следующие типы подписей:
Тип | Описание |
---|---|
Встраиваемая подпись | Может быть встроена в следующие типы файлов:
|
Подпись в расширенных атрибутах ФС | Ноль или более произвольных символов, исключая символ «/» |
Отсоединенная подпись | Предназначена для файлов любых типов, в том числе для модулей ядра. Содержится в отдельных файлах с именами вида @путь@имя_файла.расширение.sign (например, @tmp@example@settings.conf.sign ) в каталоге /etc/digsig/external_sig/ . Отсоединенная подпись не нарушает структуру исходного файла, что может играть важную роль в системах, использующих периодический контроль целостности по эталонным значениям контрольных сумм. Так как файл подписи содержит в своем имени путь к подписанному файлу, при перемещении последнего он должен быть подписан заново |
При проверке подписей модуль использует два набора ключей:
- Основной набор — три встроенных ключа изготовителя. Используется для проверки любых подписей (в т.ч. для проверки подписи ключей из дополнительного набора);
- Дополнительный набор — состоит из открытых ключей в каталогах
/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 отпечатка, который можно получить с помощью команды:
Command |
---|
sha1sum <файл сертификата.gpg> | awk ’{print $1}’ |
Для отзыва одного сертификата следует использовать команду:
Command |
---|
echo "<SHA-1_отпечаток_сертификата_отзыва>" >> /etc/digsig/revoked_keys |
Для отзыва сертификатов по заготовленному списку следует использовать команду:
Command |
---|
cat <файл_списка_отзыва> >> /etc/digsig/revoked_keys |
Предупреждение |
---|
ВНИМАНИЕ! После выполнения операции отзыва повторная загрузка сертификата в модуль digsig_verif будет невозможна. Проверка подписей файлов, подписанных ключом, сертификат которого был отозван, будет завершена с ошибкой. |
Для предварительной проверки того, какие файлы были подписаны отзываемым ключом, можно произвести поиск файлов по заданному сертификату ключа и сохранить их список в файл:
Command |
---|
sudo bsign-integrator --sign-analyse <идентификатор_сертификата_ключа> -E > SIGNED |
Чтобы выполнить поиск файлов по списку сертификатов, следует использовать команду:
Command |
---|
sudo bsign-integrator --sign-analyse -L <файл_списка_идентификаторов_ключей> > SIGNED |
Описание инструмента командной строки bsign-integrator
приведено далее.
Для применения настроек следует выполнить команду:
Command |
---|
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/
необходимо выполнить команду:
Command |
---|
sudo update-initramfs -u -k all |
Также настройка режимов работы может быть выполнена в графической утилите astra-systemsettings
(«Параметры системы», модуль «Замкнутая программная среда» в разделе «Ограничения программной среды», см. электронную справку). Для вызова модуля можно использовать команду:
Command |
---|
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
— включить отладочный режим проверки цифровой подписи в исполняемых файлах и разделяемых библиотеках. При отсутствующей или неверной подписи запуск файла или библиотеки разрешается с выдачей предупреждения.
Проверку текущего режима работы можно выполнить с помощью команды:
Command |
---|
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
выполнить команду:
Command |
---|
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 выполнить команду:
Command |
---|
sudo update-initramfs -u -k all |
Проверку текущего режима работы можно выполнить с помощью команды:
Command |
---|
cat /sys/digsig/xattr_mode |
Добавление дополнительных ключей
В дополнительный набор ключей может быть добавлен открытый ключ, подписанный ключом изготовителя или ключом из иерархии подписанных изготовителем ключей, или произвольный открытый ключ без требований к его подписи. Возможно как скопировать переданный открытый ключ в соответствующий каталог, так и создать самостоятельно.
Для создания ключей используется доработанный GNU Privacy Guard (GnuPG). В доработанном GnuPG доступно использование алгоритма по ГОСТ Р 34.11-2012 для вычисления хеш-функции. Результат вычисления хеш-функции записывается вместе с подписью. Для получения списка доступных алгоритмов выполнить команду:
Command |
---|
gpg --version |
Пример результата выполнения команды:
Command | ||
---|---|---|
| ||
gpg (GnuPG) 1.4.18291 |
Для создания ключа необходимо создать ключевую пару (закрытый и открытый ключи) по ГОСТ Р 34.10-2012, выполнив команду:
Command |
---|
sudo gpg --full-generate-key |
В процессе выполнения команды на запрос о выборе типа ключа указать номер пункта, соответствующий ГОСТ Р 34.10-2012. Пример вывода команды:
Command | ||
---|---|---|
| ||
gpg (GnuPG) 2.2.40; Copyright (C) 2022 g10 Code GmbH This is free software: you are free to change and redistribute it. |
В созданной ключевой паре открытый ключ имеет идентификатор 07888A89440B749338619DF1FBBB20B915E8F5EA
, с которым он добавляется в хранилище gpg-ключей /root/.gnupg/pubring.kbx
и по которому он определяется в командах экспорта и копирования.
Если созданный ключ предназначен для подписания в расширенных атрибутах ФС или отсоединенной подписью и нет требований подтверждать подпись открытым ключом изготовителя, то необходимо:
- Экспортировать открытый ключ созданной пары в файл, выполнив команду:
Пример:Command sudo gpg --export <идентификатор_ключа> > <имя_файла_ключа>.gpg Command sudo gpg --export 07888A89440B749338619DF1FBBB20B915E8F5EA > /tmp/secondary_gost_key.gpg - Скопировать полученный файл открытого ключа в каталог
/etc/digsig/xattr_keys/
.
Если созданный ключ предназначен для подписания любой подписью (в т. ч. встраиваемой) и присутствует ключ, открытый ключ которого подписан изготовителем или ключом из иерархии подписанных изготовителем ключей, то необходимо:
- Подписать открытый ключ созданной пары, выполнив команду:
Пример:Command gpg --sign-key <идентификатор_ключа> Command gpg --sign-key 07888A89440B749338619DF1FBBB20B915E8F5EA - Экспортировать подписанный открытый ключ в файл, выполнив команду:
Пример:Command sudo gpg --export <идентификатор_ключа> > <имя_файла_ключа>.gpg Command gpg --export 07888A89440B749338619DF1FBBB20B915E8F5EA > /tmp/secondary_gost_key_signed.gpg - скопировать полученный файл подписанного открытого ключа в каталог
/etc/digsig/keys
.
Для загрузки ключей выполнить команду:
Command |
---|
sudo update-initramfs -u -k all |
Для просмотра всех ключей, созданных с помощью gpg или импортированных в gpg, использовать команду:
Command |
---|
sudo gpg --list-keys |
Подписывание файлов
Открытые ключи из основного набора доступны только для проверки цифровой подписи. Для подписывания файлов необходимо использовать отдельные закрытые ключи, например, ключи созданные с помощью gpg (см. 16.1.5) или переданные изготовителем. При этом для проверки этих подписей их открытые ключи должны быть добавлены в дополнительный набор.
Подписывание файлов осуществляется с помощью инструмента командной строки bsign-integrator или с помощью модуля «Замкнутая программная среда» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings
(«Параметры системы», см. электронную справку). Инструмент bsign-integrator
позволяет осуществлять все операции с цифровыми подписями и поддерживает все типы цифровых подписей. Синтаксис команды:
Command |
---|
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. Примеры:
- Подписать один файл созданным ключом с автоматическим определением требуемого типа подписи:
Command sudo bsign_integrator -ntegrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA filetosign - Подписать файлы из списка:
Command sudo bsign_-integrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA -L filelist - Подписать исполняемый файл в расширенных атрибутах ФС и отсоединенной подписью:
Command sudo bsign_-integrator -s -p=JHbd<jcd -k=07888A89440B749338619DF1FBBB20B915E8F5EA -X -D filetosign - Подписать созданным ключом все файлы типа ELF в расширенных атрибутах ФС:
Command 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 | Метасимвол \z указывается в конце шаблона имени файлового объекта и распространяет действие шаблона на файловые объекты, не зарегистрированные в файловой системе (unlinked) — файловые о, находящиеся в процессе создания или удаления (см. man unlink). Может применяться, если при протоколировании в отчете регистрируются обращения к файловым объектам, имя которых имеет суффикс " (deleted)" ("<пробел>deleted"). |
\<любой_другой_символ> | Символ без специальной интерпретации, например, \\,\[,\*) |
Для включения одного профиля в другой профиль используется лексема @include
:
Блок кода |
---|
@include other-profile-name |
Синтаксис, совместимый с parsec-kiosk
В профилях режима Киоск-2 корректно распознаются строки, соответствующие синтаксису режима киоска (устаревший инструмент для ограничений действий пользователя). При этом при использовании синтаксиса режима киоска в режиме Киоск-2:
- в именах файлов спецсимволы не интерпретируются;
- любое из прав на чтение (r) или исполнение (x) преобразуется в право на чтение (r), а право на запись (w) преобразуется в права на запись (w) и создание (c);
- правила одинаково применяются для доступа как владельцев, так и других пользователей;
- строка обязательно должна начинаться с символа «"» или «/»;
- если файл представляет символьную ссылку, то режим Киоск-2 обрабатывает целевой файл ссылки;
- имя профиля должно начинаться только с латинской буквы, а также в нем должен отсутствовать символ «/».
Если профиль, созданный в режиме киоска, отредактировать и сохранить с использованием графического инструмента fly-admin-kiosk
, то он сохранится с использованием синтаксиса режима Киоск-2.
Работа с Киоск-2 через консоль
Включение и выключение Киоск-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 |
и перезагрузить ОС. Результаты применения этих команд будут действительны после перезагрузки ОС.
Для выключения режимов контроля доступа Киоск-2 и протоколирования в соответствующих командах требуется заменить 1 на 0.
Для того чтобы избирательно включать режим Киоск-2 и исключать выбранных пользователей:
- В каталоге
/etc/parsec/kiosk2
создать каталогdisabled
:Command cd /etc/parsec/kiosk2
sudo mkdir disabled - Переместить в каталог
disabled
профили тех пользователей, для которых не должны применяться ограничения:Command sudo mv <имя_пользователя1> <имя_пользователя2> disabled - Включить режим Киоск-2:
Command echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce
После выполнения данных действий ограничения режима Киоск-2 будут применены ко всем пользователям, кроме <имя_пользователя1>
, <имя_пользователя2>
и тех пользователей, для которых не были созданы профили. После перезагрузки ОС режим Киоск-2 вернется в состояние, указанное в /etc/parsec/kiosk2_enforce
. При повторном включении режима Киоск-2 исключения для <имя_пользователя1>
, <имя_пользователя2>
и тех пользователей, для которых не были созданы профили, сохранятся и ограничения доступа к ним не будут применены.
Протоколирование процессов
Для того чтобы ограничения на работу приложений выполнялись корректно и без ошибок, требуется учитывать все зависимости файлов данного приложения. Поэтому при создании системного профиля приложения рекомендуется выполнить протоколирование процессов при работе с соответствующим приложением. Результат протоколирования процессов показывает все необходимые файлы приложения и пути к ним. Для выполнения протоколирования процессов:
- Выключить режим контроля доступа Киоск-2:
Command echo 0 | sudo tee /sys/module/parsec/parameters/uc_enforce - Включить протоколирование процессов:
Command echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain - Создать профиль пользователя:
Command true | sudo tee /etc/parsec/kiosk2/<имя_пользователя> - Запустить сессию пользователя <имя_пользователя>:
Command su - <имя_пользователя> - Запустить протоколируемое приложение;
- Выйти из сессии пользователя:
Command exit - Выключить протоколирование процессов:
Command echo 0 | sudo tee /sys/module/parsec/parameters/uc_complain - Получить сообщения о запрещенных операциях:
Command 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 соответственно. |
Для запуска утилиты выполнить в консоли команду:
Command |
---|
sudo fly-admin-kiosk |
или перейти «меню «Пуск» — Панель управления — Безопасность — Системный киоск».
Графический киоск
Для ограничения прав запуска программ локальными пользователями возможно использовать режим графического киоска. Настройка режима графического киоска выполняется с использованием модуля «Графический киоск» в разделе «Ограничения программной среды» графической утилиты astra-systemsettings
(«Параметры системы», см. электронную справку). Для вызова модуля можно использовать команду:
Command |
---|
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 можно было запускать приложения, необходимо включить этот бит, выполнив от имени администратора команду:
Command |
---|
chmod u+s /usr/bin/firejail |
В состав ОС входят профили изоляции системных вызовов для большинства популярных приложений, в том числе для Firefox, Chromium, VLC. Для выполнения программы в режиме изоляции требуется указать имя приложения в качестве параметра для инструмента Firejail, например:
Command |
---|
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 |