# Установка программы

Опубликовано 2023-07-31

# Версия Astra Linux

Компиляция приложения, сборка debian пакета и тестирование проводилось в Astra Linux версии v1.7.3:

$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinux
Description:    Astra Linux 1.7 x86-64
Release:        1.7_x86-64
Codename:       1.7_x86-64

$ cat /etc/astra_version
1.7.3

# Установка программы и ee зависимостей

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

$ tar -zxvf kinematic.tar.gz
$ ls .      # ниже приблизительное содержимое архива
kinematic_0.16.0_amd64.deb  license.json  license.json.sig  install.sh  uninstall.sh

В архиве находятся следующие файлы:

  • kinematic_X.Y.Z_amd64.deb - debian пакет с программой где X.Y.Z версия программы
  • license.json - файл с лицензией на программу
  • license.json.sig - цифровая подпись лицензии на прогрмму
  • install.sh - скрипт, который производит установку программы на компьютере пользователя
  • uninstall.sh - скрипт, который удаляет программу с компьютера пользователя

Устанавливаемая программа зависит от следующих пакетов:

  • pcscd - сервис для доступа к смарткартами через PC/SC
  • opensc-pkcs11 - библиотеки для работы со сматр картами по протоколу PKCS#11
  • libwebkit2gtk-4.0-37 - WebKit движок для отображения веб страниц
  • libgtk-3-0 - графическая библиотека для создания оконных приложений

Узнать зависимости устанавливаемого пакета можно с помощью следующей комманды:

$ dpkg -I kinematic_0.16.0_amd64.deb
# ниже примерный вывод
new Debian package, version 2.0.
 Package: kinematic
 Version: 0.16.0
 Architecture: amd64
 Installed-Size: 12311
 Maintainer:
 Depends: opensc-pkcs11, pcscd, libwebkit2gtk-4.0-37, libgtk-3-0
 Description:
 Priority: optional

Для установки программы нужно задать права на исполнение скрипту install.sh и запустить его из папки распакованного архива.

$ chmod u+x install.sh
$ ./install.sh

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Application configuration directory: /home/deform/.config/com.kinematic
Application configuration file generated at /home/deform/.config/com.kinematic/app.json

Инсталяционный скрипт загрузит и установит пакеты от которых зависит программа, после чего установит пакет приложения. Так же будет создана папка с идентификатором приложения внутри папки .config, расположенной в домашней директории пользователя. В этой папке будет создан файл с конфигурацией приложения, а также скопированы файл с лицензией и цифровой подписью.

Установщик поместит исполняемую программу по пути usr/bin/kinematic, что сделает ее доступной для запуска из терминала. Также установщик создаст *.desktop файл по пути usr/share/applications/kinematic.desktop, что даст возможность искать и запускать программу через графическое окружение операционной системы.

# Подготовка перед запуском программы

Для работы приложения необходим лицензионный usb токен.

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

$ lsusb
...
Bus 001 Device 041: ID 1050:0407 Yubico.com Yubikey 4/5 OTP+U2F+CCID
...

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

Для работы программы не важно в какой из usb портов вставлен токен.

# Запуск программы

Запустить программу можно как из командой строки, так и через графическую оболочку Fly операционной системы. Ниже будут показаны оба способа.

При первом запуске рекомендуется запускать приложение с помощью терминала, т.к. в версии 0.16 логирование реализовано только в поток стандартного вывода ошибок (stderr), т.е. в терминал, а не файл для логов.

# Запуск из консоли

Запуск приложения через терминал:

$ kinematic
# Ниже будут расположены логи программы

Если при запуске программы лицензионный токен не определяется системой, то программа аварийно завершится. Также программа аварийно завершит работу если извлечь лицензионный токен в процессе ее работы. Ниже показан пример аварийного завершения программы при отсутствии лицензионного токена.

$ kinematic
error while runnign tauri application: Setup(SetupError("[Token Error] No token found which satisfies license"))

# Запуск через ярлык

Для запуска приложения с рабочего стола нужно создать ярлык. Ниже приведены скриншоты как это сделать.

Шаг 1: пуск > поиск (start > search)
Шаг 1: пуск > поиск (start > search)
Шаг 2: поиск установленной программы
Шаг 2: поиск установленной программы
Шаг 3: добавить ярлык
Шаг 3: добавить ярлык
Шаг 4: ярлык программы на рабочем столе
Шаг 4: ярлык программы на рабочем столе

# Офлайн установка

Для офлайн установки программы нужно подключить локальный репозиторий из которого будут скачиваться пакеты от которых зависит приложение. Чаще всего папку с локальным репозиторием можно найти на диске с которого производилась установка операционной системы Astra Linux. Предположим, что папка с локального резпозитория скопирована в систему по пути /srv/local_repo/:

$ ls /srv/local_repo/
dists  pool  repository-gostsums.txt

Чтобы подключить локальный репозиторий нужно добавить следующую запись в файл /etc/apt/sources.list:

deb file:/srv/local_repo/ stable contrib main non-free

После чего нужно получить последние версии пакетов:

$ sudo apt update

После этого можно установить программу. Инсталятор скачает зависимые пакеты из локального репозитория, который расположен по пути /srv/local_repo/.

# Отладка

# Запуск в виртуальной машине

При запуске программы в виртуальной машине могут возникнуть проблемы с недоступностью лицензионного токена внутри виртуальной машины. Поэтому нужно предпринять дополнительные шаги, чтобы лицензионный токен был доступен внутри гостевой ОС. Если этого не сделать то программа аварийно завершится сразу после запуска с ошибкой показанной ниже.

error while runnign tauri application: Setup(SetupError("[Token Error] No token found which satisfies license"))

При работе из виртуальной машины, настройки по-умолчанию не дают доступа к usb устройствам подключенным к компьютеру из гостевой ОС. Инструкции как предоставить доступ к usb устройству из гостевой ОС зависят от используемого гипервизора. Ниже приведены ссылки на документации популярных гипервизоров:

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

$ lsusb
Bus 001 Device 041: ID 1050:0407 Yubico.com Yubikey 4/5 OTP+U2F+CCID
...

На текущий момент используются токены производителя Yubico. Если в выводе команды lsusb нет упоминания Yubico.com Yubikey, то это означает, что usb токен не определился системой. Это может быть связано как с настройками гипервизора, так и с работоспособностью usb порта.

После того как usb устройство определяется в гостевой ОС нужно убедиться, что в usb устройсве присутствует логический кард-ридер и смарт-карта. В терминах стандарта pkcs#11 кард-ридер и смарт-карта называются слот и токен соответственно. Для просмотра подключенных кард-ридеров и вставленных в них смарт-карт необходимо установить пакет opensc:

$ sudo apt install opensc

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

$ pkcs11-tool --list-slots
Available slots:
Slot 0 (0x0): Yubico YubiKey OTP+FIDO+CCID 00 00
  token label        : app auth key
  token manufacturer : piv_II
  token model        : PKCS#15 emulated
  token flags        : login required, rng, token initialized, PIN initialized
  hardware version   : 0.0
  firmware version   : 0.0
  serial num         : 00000000
  pin min/max        : 4/8

Вывод команды показывает, что в системе определился один кард-ридер под названием Yubico YubiKey OTP+FIDO+CCID. В этот кард-ридер вставлена смарт-карта с названием app auth key.

Если в системе не определился кард-ридер, то вывод программы будет как показано ниже:

# Кард-ридер не определяется системой
$ pkcs11-tool --list-slots
Available slots:
No slots.

Такая проблема может наблюдаться когда программа или сервис (служба) хостовой ОС использует кард-ридер, что делает его недоступным в виртуальном машине. В Debian подобных операционных системах, как Astra Linux или Ubuntu примером такого сервиса, который мешает сделать доступным кард-ридер гостевой ОС, является pcscd. Его необходимо временно отключить в хостовой OC.

# врменно отключаем в хостовой ОС
$ sudo systemctl stop pcscd

# запускаем приложение в гостевой ОС
# пока сервис pcscd отключен в хостовой ОС,
# гостевая может получить экслкюзивный доступ к токену

# запускаем отключенный сервис в хостовой ОС
# после того как в гостевой запустилось приложение
$ sudo systemctl start pcscd

# Требования ИБ к клиентскому/десктопному ПО

Описание требования и комментарии Заказчика Кинематик
Наличие в документации вендора (сообщества) информации о поддержке и обновлениях апробируемого решения .

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

Комментарий: Это либо указано в описании документации, либо демонстрируются конфиг файлы.
После установки программы конфигурационный файл находится по пути $HOME/.config/app.kinematic/app.json. В конфигурации программы нет паролей или каких-либо ключей. В конфигурации указан только пин код к лицензионному токену, который не является секретной информацией и является особенностью данной модели токена.
Должна обеспечиваться защита обратной связи при вводе аутентификационной информации.

Комментарий: Звездочки при вводе пароля.
В программе Кинематик не предусмотрена аутентификация пользователей. Авторизация пользователей обеспечивается лицензионным токеном. Другими словами работать в программе может любой пользователь у которого есть лицензионный токен.
Должно обеспечиваться поддержка технологии единого входа (SSO).

Комментарий: Сквозная авторизация по учетной записи АРМ.
В программе Кинематик не предусмотрена аутентификация пользователя, поэтому технология единого входа (SSO) отсутсвтует. Программа только авторизует пользователя по лицензионному токену, т.е. проверяет, что у пользователя есть право на работу с программой.
Наличие механизмов регистрации и учета событий ИБ.

Комментарий: Логирование – кто, когда, что, результат (успешно/неуспешно) событий типа изменения прав, настроек. Пример: 2.1 431972 Вход учетной записи: Проверка учетных данных Успех и Отказ.
В программе Кинематик не предусмотрена аутентификация пользователя. Также в версии v0.16 отсутствуют какие-либо изменяемые настройки и права.
Журналы событий апробируемого решения на всех уровнях детализации, не должны содержаться аутентификационные данные (пароли и т.п.).

Комментарий: В случае присутствия паролей в логах уровня debug и т.п. должны быть обеспечены механизмы отключения данного уровня логирования в продуктиве.
В версии v0.16 логирование в файл и/или журнал событий отсутсвует.
Должна поддерживаться совместная работа с антивирусным программным обеспечением Kaspersky. Программа поддерживает совместную работу с антивирусным программным обеспечением Kaspersky. В процессе тестирования проводился запуск сканирования системы с помощью анивируса Kaspersky Total Security Plus версии v11.4.0. Антивирус не обнаружил угроз ни в процессе работы приложения Kinematic, ни после его завершения.
Апробируемое решение и/или зависимые компоненты должны поддерживаться для сканирования средствами MaxPatrol и не должны содержать уязвимости в компонентах апробируемого решения уровней High и Critical.

Комментарий: Предоставить список зависимых компонентов – например, базы данных.
ПО Кинематик v0.16 зависит от следующих пакетов: opensc-pkcs11, pcscd, libwebkit2gtk-4.0-37, libgtk-3-0. Нам не известно поддерживает ли MaxPatrol сканирование debian пакетов.
Все пароли по умолчанию для встроенных учетных записей должны иметь возможность замены.

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

Комментарий: Настройки типа admin/admin могут быть изменены.
В программе Кинематик не предусмотрена аутентификация пользователя.
Должен обеспечиваться своевременный выпуск пакетов обновлений апробируемого решения разработчиками.

Комментарий: Указать периодичность обновления ПО, или версионность на сайте.
Передаваемая на тестирование версия программы имеет версию v0.16. Обновления программы доступны в течение срока действия лицензии.
Отсутствие неотключаемых функций взаимодействия с сетью Интернет (в том числе в части управления лицензиями).

Комментарий: ПО должно уметь работать офлайн. Обращается ли ПО в Интернет за лицензиями?
Программу Кинематик можно установить на компьютер без подключения к сети интернет. Для работы и проверки лецензии доступ к сети не требуется, т.е. программа работает полностью офлайн. Проверка лицензии осущетсвляется с помощью подключенного usb токена, который требуется при запуске и в процессе работы программы.
Пароли (ключи) должны передаваться в зашифрованном/хешированном виде. Программа Кинематик не передает какие-либо пароли или ключи.
Пароли (ключи) должны храниться в зашифрованном/хешированном виде. Программа Кинематик не хранит ни каких паролей или ключей.
Должно обеспечиваться использование стойких хэш-алгоритмов (SHA512, PBKDF2, bcrypt, scrypt и т.п.). Программа Кинематик не использует хеширование для работы или авторизации пользователя по usb токену.
Должна обеспечиваться хранение ключей шифрования и/или ЭП пользователей на отчуждаемом носителе.

Комментарий: Например, аутентификация по токену.
Программа Кинематик использует usb токен производителя Yubico для проверки условий действия лицензии.
В случае встраивании СКЗИ, реализованных на основе алгоритмов, соответствующих национальным стандартам, в программное обеспечение необходимо наличие положительного заключения ФСБ России по результатам оценки влияния среды функционирования СКЗИ. СЗКИ не встроено