Как стать автором
Обновить

Подготовка MiniOS для работы на Рутокен ЭЦП flash

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров906

Сказ о том как я подготавливал защищенную версию MiniOS для запуска с Rutoken ЭЦП 2.0 Flash 32Gb и работы с электронной подписью

MiniOS — легкий модульный дистрибутив Linux на базе Debian, предназначенный для работы с USB-накопителями. Он предлагает формат модулей SB, которые позволяют пользователям настраивать и конфигурировать систему под свои нужды. Утилиты apt2sb и script2sb обеспечивают простоту создания и управление пакетами, а также автоматизацию процессов, что значительно упрощает взаимодействие с дистрибутивом.
Возможность работы с read-only (RO) разделами позволяет обеспечить безопасность защищая ее от нежелательных изменений.

Для токенов существует РОСА Барий, однако бесплатная версия ограничена и не так интересна как ее платная версия, подробнее можно ознакомиться тут.

Рутокен ЭЦП 2.0 Flash объединяющий в себе полноценный СКЗИ и управляемый контроллером защищенный раздел flash памяти. В моем случае токен на 32ГБ без сертификатов, разделенный на 2 раздела, Read-only для системы и скрытый раздел для хранения данных. Если у вас комплект Рутокен Диск  то данное руководство уничтожит установленный Рутокен Диск. Подробнее можно узнать в характеристиках на сайте производителя.

Используемое ПО на момент подготовки статьи:

MiniOS Standart 64бит 4.1.2 с ядром 6.1 (Можно использовать вариант Ultra, потребуется установить меньше ПО, только необходимое для работы с токеном. Формат системы Ultra и toolbox поддерживают secure boot из коробки, выбор за вами. Я буду менять ядро для варианта Standart с поддержкой secure boot. )

Подготовим токен, подготовку произвожу под Windows 10, для Linux команды идентичные.

Скачаем rtadmin3.1 с сайта производителя, драйвера Рутокен для Windows, установим их, распакуем rtadmin перейдем к файлу rtadmin, откроем консоль cmd в директории rtadmin3.1

Подключим токен и выведем список подключенных токенов:
rtadmin list-tokens
Выведем информацию о токене командой:
rtadmin info
Важное уточнение info выведет информацию если подключен один токен, если их несколько необходимо использовать фильтр “-s” или “-e” или глобальный параметр –parallel который выполнит команды на всех подключенных токенах.
-s – отобразить информацию только по токену с указанным серийным номером.
-e – исключить из отображения указанные серийные номера.

Отформатируем токен командой:
rtadmin format -r --pin-change-policy both --min-so-pin 8 --min-user-pin 8 --max-so-pin-retry-count 3 --max-user-pin-retry-count 5

Разберем команду:
format -r(repair) – форматирует токен без запроса пароля, т.е. принудительно, все данные стираются.
pin-change-policy - сообщает кто может менять пин код пользователя, доступны both, so и user. both - разрешит всем, so - только администратору, user - только пользователю.
min-so-pin и min-user-pin – отвечает за минимальную длинную пин-кода администратора и пользователя соответственно.
max-so-pin-retry-count и max-user-pin-retry-count – отвечают за количество неверно введенных пин-кодов, если превысить значение, пин-код блокируется, в случае пользовательского пин-кода его можно сбросить через администратора, если заблокировать пин-код администратор то поможет только повторное форматирование токена с потерей данных, ключ -r.

Разблокировать пользователя и все локальные пин-коды можно командой:
rdadmin unblock-pins -P console
Потребуется пин администратора.

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

rtadmin set-so-pin -P -p 87654321 -N console

rtadmin set-user-pin -P -p 12345678 -N console

Разберем команды:
set-so-pin – устанавливаем пин администратора
-P – способ ввода пин-кода
-p – позволяет явно указать пин-код в команде
-N console – вызывает приглашение ввода нового пин-кода, если указать generate то пин будет сгенерирован.
set-user-pin – установим пин-код пользователя.

Установим метку токена командой

rtadmin set-label -P console -l MyRutoken

 Создадим локальные пин-коды для раздела с будущей системой и скрытого раздела с данными:
rtadmin create-local-pin -P -p 12345678 -N -p 87654321 -i3

rtadmin create-local-pin -P -p 12345678 -N -p 12345678 -i4

На данном примере создали пин-коды по аналогии со стандартными, i3 – администратор раздела с системой, i4 – пользователь скрытого раздела, после настройки изменим пин-коды командами:
rtadmin set-local-pin -P -p 87654321 -N console -i3

rtadmin set-local-pin -P -p 12345678 -N console -i4

Отформатируем flash токена, разделим на два раздела и присвоим права/владельца командой:
rtadmin format-drive -P console --volume 8192:rw:local-3 --volume 21650:h:local-4

Разберем команду:
format-drive – применятся только на устройствах с флеш памятью.
-P console – приглашение ввода пин-кода администратора через консоль.
--volume – размер раздела в Мб.
rw – чтение и запись, доступны h – скрытый, r – чтение, cd – эмуляция CD-ROM.
local-3 – устанавливаем владельца для раздела с системой ранее созданный пин-код i3.
local-4 – устанавливаем владельца для скрытого раздела с данными ранее созданный пин-код i4.

После выполнения команды, будет доступен один раздел RW, в который распакуем образ MiniOS.

После распаковки внесем правки в файл minios/minios.conf

USER_NAME=”live” – устанавливает имя пользователя.
USER_PASSWORD=”userpassword” – устанавливает пользовательский пароль.
ROOT_PASSWORD=”myrootpassword” – устанавливает пароль root. 
HOST_NAME=”minios-rt” – изменяем имя системы.
LOCALES=”ru_RU.UTF-8” – включим русский язык в системе.
TIMEZONE=”Europe/Moscow” – установим часовой пояс.
KEYBOARD_LAYOUT="us,ru" – установим Английскую и Русскую раскладку клавиатуры.

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

Определимся с уровнями/слоями: базовые уровни с 00 по 02, позволят запустить систему без GUI, с 03 по 04 необходимое для запуска графической оболочки XFCE, на 05 уровне по умолчанию в Standart находится Firefox.

Начнем собирать нашего франкенштейна с 06 уровня. Все последующие уровни собираются над 04, за исключением конкретного случая далее.

Загружаемся с подготовленной флешки в Live режиме MiniOS, собираем модули:

Начнем со смены ядра mos которое по умолчанию в версии Standart на ядро с поддержкой Secure Boot:

Выполним sudo minios-kernelpack
Откроется список доступных ядер, нам необходимо выбрать стандартное ядро Debian, на момент написания 6.1.0-35-amd64
Ждем завершения, в директории выполнения будет три файла, 1 - initrfs*.img 2 - vmlinuz* и 3 - модуль с ядром 01-kernel-*-amd64.sb, копируем на флешку и перезагружаемся, в основную систему.
Есть два пути замены ядра, переименовываем файлы в initrfs.img и vmlinuz соответственно, и копируем с заменой в "ваша флешка"/minios/boot/, либо копируем с текущим названием в /minios/boot/ и редактируем syslinux.cfg, заменяя в файле initrfs.img и vmlinuz на ваши.
Копируем модуль ядра в /minios/, перезагружаемся с флешки для подготовки модулей с ПО.

Уровень 06, тот самый фикс локали:
Выполняем: sudo chroot2sb -l 4 -n 06-locale-ru.sb
У нас откроется окружение chroot, выполним последовательно:
locale-gen en_US en_US.UTF-8 ru_RU ru_RU.UTF-8
dpkg-reconfigure locales
Откроется меню выбора локали, выберем ru_RU.UTF-8 и en_US.UTF-8, по умолчанию установим RU.

Настроим раскладку клавиатуры:
Выполняем sudo nano/etc/default/keyboard
И вносим правки, нам необходимо поменять XKBLAYOUT и XKBOPTIONS на:
XKBLAYOUT="us,ru"
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"
Сохраняем файл, выходим из среды chroot командой exit, она запустит сборку модуля, копируем модуль 06-locale-ru.sb на флешку и перезагружаемся в основную систему, копируем модуль в /minios/ через основную систему.

Подготовим скрипты для сборки основного ПО не связанного с токеном.

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

APPS/ Основная директория в ней расположим следующие:
Автоматизирующий скрипт 00-autoinstall.sh
00-scripts/ для хранения скриптов установки
gost-rt/install/ для скрипта установки и архива с КриптоПРО
openssl-rt/install/ для rtengene и настроенного openssl для работы с ГОСТ шифрованием
99-files/ для любых ваших файлов, необходимо воспроизвести структуру, например
если пользователь стандартный live то файлы необходимо сохранить так:
99-files/home/live/ ваши файлы и директории

Создадим скрипт 00-autoinstall.sh:

#!/bin/sh
script2sb -s 00-scripts/07-apps.sh -l 6 -n 07-apps.sb
script2sb -s 00-scripts/08-aspia.sh -l 6 -n 08-aspia.sb
script2sb -s 00-scripts/09-codium.sh -l 6 -n 09-codium.sb
script2sb -s 00-scripts/10-office.sh -l 6 -n 10-office.sb
script2sb -s 00-scripts/11-v2rayn.sh -l 6 -n 11-v2rayn.sb
script2sb -s 00-scripts/12-pcsc.sh -l 6 -n 12-pcsc.sb
script2sb -s 00-scripts/13-chromium-gost.sh -l 6 -n 13-chromium-gost.sb
script2sb -s 00-scripts/99-files.sh -l 99 -n 99-files.sb -d 99-files/

Создадим файл 07-apps.sh со следующим содержимым:

#!/bin/sh
apt update
# Базовое ПО
apt install gparted wipe aria2 qdiskinfo grsync \
davfs2 hardinfo hexedit nmap uget gtkhash gdisk \
rsync smbclient whois zenmap transmission ncat telnet \
dmraid gpart jfsutils kpartx mtools reiser4progs reiserfsprogs udftools yelp -y
# ПО для шифрования
apt install keepassxc zulucrypt-gui zulumount-gui \
zulucrypt-cli zulumount-cli veracrypt -y
# Запись рабочего стола
apt install obs-studio -y
# Удаленный рабочий стол
apt install remmina remmina-plugin-rdp remmina-plugin-vnc -y
# VPN клиенты для удаленного подключения
apt install openvpn wireguard openconnect -y
# Поддержка VPN протоколов в Network Manager
apt install network-manager-openvpn network-manager-openconnect -y
# Видео проигрыватель
apt install vlc -y
# Плагины для Firefox
apt install webext-foxyproxy webext-privacy-badger \
webext-ublock-origin-firefox webext-keepassxc-browser -y
# XCA для управления УЦ
apt install xca -y
# Android утилиты
apt install adb fastboot android-file-transfer -y
# Устранение зависимостей и очистка перед сборкой
apt install -f
apt clean
apt autoclean

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

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

Подготовим скрипт для установки клиента и консоли Aspia, назовем его 08-aspia.sh:

#!/bin/sh
apt update
wget -q --show-progress https://github.com/dchapyshev/aspia/releases/download/v2.7.0/aspia-client-2.7.0-x86_64.deb
wget -q --show-progress https://github.com/dchapyshev/aspia/releases/download/v2.7.0/aspia-console-2.7.0-x86_64.deb
dpkg -i ./aspia-client*.deb
dpkg -i ./aspia-console*.deb
rm *.deb -f
apt install -f
apt-get clean
apt-get autoclean

Установим открытый редактор кода VScodium, сохраним скрипт как 09-codium.sh:

#!/bin/sh
apt update
apt install xdg-utils -y
wget -q --show-progress https://github.com/VSCodium/vscodium/releases/download/1.100.23258/codium_1.100.23258_amd64.deb
dpkg -i ./codium*.deb
rm *.deb -f
apt install -f
apt-get clean
apt-get autoclean

На 10 уровне разместим libreoffice, сохраним скрипт как 10-libreoffice.sh:

#!/bin/sh
apt update && apt install libreoffice libreoffice-l10n-ru myspell-ru mythes-ru pdfarranger mupdf -y
apt install -f
apt-get clean
apt-get autoclean

Для тех кому может потребоваться современный протокол VPN установим v2rayN, сохраним как 11-v2rayn.sh:

#!/bin/sh
apt update
wget -O v2rayn.deb -q --show-progress https://github.com/2dust/v2rayN/releases/download/7.12.3/v2rayN-linux-64.deb
dpkg -i ./v2rayn.deb
rm *.deb -f
apt install -f
apt-get clean
apt-get autoclean

Настал уровень с базовым ПО для работы с токенами, сохраним как 12-pcsc.sh:

#!/bin/sh
apt update && apt install libccid pcscd libpcsclite1 pcsc-tools  \
libengine-pkcs11-openssl ca-certificates opensc-pkcs11 opensc -y
apt install -f
apt clean
apt autoclean

Для сайтов с ГОСТ шифрованием установим Chromium-Gost, сохраним как 13-chromium-gost.sh:

#!/bin/sh
apt update
apt install fonts-liberation libvulkan1 xdg-utils -y
wget -O chromium-gost.deb -q --show-progress https://update.cryptopro.ru/get/chromium-gost/linux/amd64/deb
dpkg -i ./chromium-gost.deb
rm *.deb -f
apt install -f
apt-get clean
apt-get autoclean

Создадим скрипт заглушку 99-files.sh для корректной работы модуля script2sb:

#!/bin/sh

Создадим директорию для 99 модуля:
mkdir -p 99-files/home/live

Поместим в нее следующие скрипты, для их работы нужен rtadmin3.1.
Первый назовем h-lock.sh для блокировки скрытого раздела:

#!/bin/sh
rtadmin set-volume-access-mode -P console --volume-id 2 --new-mode h --temp

Второй h-unlock.sh для временной разблокировки в режиме чтения:

#!/bin/sh
rtadmin set-volume-access-mode -P console --volume-id 2 --new-mode r --temp

Третий h-unlock-rw.sh для временной разблокировки с возможностью записи:

#!/bin/sh
rtadmin3.1/rtadmin set-volume-access-mode -P console --volume-id 2 --new-mode rw --temp

Четвертый скрипт временно переведет раздел с системой в режим записи

#!/bin/sh
rtadmin3.1/rtadmin set-volume-access-mode -P console --volume-id 1 --new-mode rw --temp

Ключ --temp работает до извлечения токена или перезагрузки, после токен скрывает скрытый раздел или переводит в режим чтения раздел, если изменения нужны постоянные - убираем ключ.

Так же разместим файл readme.md со следующим содержимым для удобства:

# Подключение по ssh через ключ на токене
ssh -I /usr/lib/librtpkcs11ecp.so <user>@<host> <-p port>

# Проверка ГОСТ TLS на сайте
https://tlsgost-256.cryptopro.ru/
https://tlsgost-512.cryptopro.ru/
# Cообщение если все ок: (Welcome to Crypto-Pro tls server! TLS connection with id-tc26-gost-3410-12-512-paramSetA no auth requred.)
# Ошибку сертификата игнорируем, необходим сертификат (Тестовый УЦ ООО "КРИПТО-ПРО"), страница не откроется при ошибке (ERR_SSL_VERSION_OR_CIPHER_MISMATCH) 

# Проверка правильности установки PCSC
pcsc_scan
# Должен отобразить устройство Activ Rutoken

# Проверка доступности модуля для Рутокен
find  /usr/*(lib|lib64) -name librtpkcs11ecp.so
pkcs11-tool --module {A} -T
# Проверка сертификатов на токене:
pkcs11-tool --module {A} -O

Подготовим модуль содержащий в себе библиотеки для работы с Рутокен и провайдер СКЗИ в виде КриптоПРО-CSP, важная ремарка, КриптоПРО платное ПО, если требуется весь его функционал приобретите лицензию, демо версия на 90 дней, для целей только поддержки ГОСТ шифрования — лицензия не требуется.

В директории gost-rt сохраним КриптоПРО и создадим файл скрипта в gost-rt/install/install.sh для установки библиотек для работы с Рутокен и плагин Госуслуг:

#!/bin/sh
# https://download.rutoken.ru/
apt update
apt install libusb -y
# Установим ПО для работы с Рутокеном, и плагин Госуслуг:
wget -q --show-progress https://ds-plugin.gosuslugi.ru/plugin/upload/assets/distrib/IFCPlugin-x86_64.deb
wget -q --show-progress https://download.rutoken.ru/Rutoken/PKCS11Lib/2.17.5.0/Linux/x64/librtpkcs11ecp_2.17.5.0-1_amd64.deb
wget -q --show-progress https://download.rutoken.ru/Rutoken_Plugin/4.10.1.0/Linux/libnpRutokenPlugin_4.10.1-1_amd64.deb
wget -q --show-progress https://download.rutoken.ru/Rutoken/Control_Center/0.2.0/x86_64/rtcontrolcenter_0.2.0-1_amd64.deb
wget -q --show-progress http://download.rutoken.ru/Rutoken_Connect/Current/Linux/x64/rtconnect-6.1.1-1_amd64.deb
dpkg -i ./IFCPlugin*.deb
dpkg -i ./rtconnect*.deb
dpkg -i ./librtpkcs11ecp*.deb
dpkg -i ./libnpRutokenPlugin*.deb
dpkg -i ./rtcontrolcenter*.deb

# Установим утилиту администрирования Рутокен:
wget -q --show-progress http://download.rutoken.ru/Rutoken/Utilites/rtAdmin/3.1/Linux/glibc-x86_64/rtadmin
mv rtadmin /usr/local/bin/rtadmin
chmod +x /usr/local/bin/rtadmin

# Установим КриптоПро. Как минимум, должны быть отмечены для установки пакеты:
# KC1 Cryptographic Service Provider ( провайдер КС1)
# GUI dialog components (библиотека графического БиоДСЧ)
# Smart Card and Token support modules  (пакет поддержки носителей и смарт-карт)
# cptools, GUI application for... - (Панель "Инструменты КриптоПро" с графическим интерфейсом - если устанавливается CSP  5.0)
tar -xf linux-amd64_deb.tgz && ./linux-amd64_deb/install_gui.sh 
# Устанавливаем без указания лицензии.
# Очистим
rm -f *.deb
apt install -f
apt-get clean
apt-get autoclean

Теперь подготовим необходимое для поддержки ГОСТ шифров в openssl через библиотеку  rtengine, в директории openssl-rt/install/ создадим скрипт install.sh со следующим содержимым:

#!/bin/sh
# https://download.rutoken.ru/
apt update
# Подготовим rtengine
wget q --show-progress https://download.rutoken.ru/Rutoken/Support_OpenSSL/Current/rtengine-3.3.1.zip 
unzip rtengine-3.3.1.zip 
dpkg -i ./rtengine/3.3.1/Linux/x64/packages/librtengine3_3.3.1-1_amd64.deb
# Очистим
rm -f *.deb
rm -f *.zip
apt install -f
apt-get clean
apt-get autoclean

Теперь когда все готово к сборке модулей, перезагружаемся с флешки в MiniOS Live, и открываем директорию APPS/, открываем терминал и вводим:
Для начала установим права на запуск скриптов управления разделами:
chmod +x 99-files/home/live/*.sh
Затем выполним сборку модулей:
sudo sh 00-autoinstall.sh
Ждем завершения, в директории APPS/ будут лежать наши модули *.sb, перезагружаемся в основную систему и копируем их в minios/, и снова перезагружаемся в live.

Подготовим модули с ГОСТ и библиотеками Рутокен.

Выполняем для подготовки chroot окружения с копированием директории
sudo chroot2sb -l 12 -n 14-gost-rt.sb -d gost-rt/
Важное уточнение, данный модуль собирается в зависимости от 12, т.е. от PCSC, удалив который сломается данный модуль.

Откроется chroot, проверим наличие директории install/ в корне, перейдем в нее через cd и выполним:
sh ./install.sh
Дождемся установки до псевдографического интерфейса КриптоПРО, в котором необходимо выбрать следующее:
- KC1 Cryptographic Service Provider ( провайдер КС1)
- GUI dialog components (библиотека графического БиоДСЧ)
- Smart Card and Token support modules  (пакет поддержки носителей и смарт-карт)
- cptools, GUI application for... - (Панель "Инструменты КриптоПро" с графическим интерфейсом - если устанавливается CSP 5.0).

Игнорируем предложение ввести лицензионный ключ, выходим из установщика, дожидаемся завершения работы скрипта.
Выйдем из директории обратно в корень: cd / или cd ..
Необходимо удалить директорию install/, вводим:
rm -rf install/
Завершаем работу и собираем модуль командой exit и дожидаемся упаковки модуля.

Выполним аналогичные действия для rtengine разместив его на 98 уровне:
sudo chroot2sb -l 12 -n 98-openssl-rt.sb -d openssl-rt/
Переходим в install/ и выполняем sh ./install.sh
Проведем настройку OpenSSL:
Открываем командой nano /usr/lib/ssl/openssl.cnf

# Закомментируем 
openssl_conf = openssl_init
# Под ним добавим 
openssl_conf = openssl_def

# В конец добавим:
[ openssl_def ]
 
engines = engine_section
 
[ engine_section ]
 
rtengine = gost_section
 
[ gost_section ]
 
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/librtengine.so
 
pkcs11_path = /usr/lib/librtpkcs11ecp.so
 
rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
 
default_algorithms = CIPHERS, DIGEST, PKEY
 
enable_rand = yes

На данном примере rtengine работает только с токеном Рутокен ЭЦП.
Закомментировав rand_token и поменяв "enable_rand = yes" на "no" rtengine будет работать без токена.
Базовые правки завершены, удалим директорию install/ и соберем модуль командой exit

Перезагружаемся в основную систему, копируем модули в /minios/ и перезагружаемся в live для проверки всех установленных модулей, поддержки ГОСТ TLS в браузере и установки обновления системы.

Собрать модуль с обновлениями пакетов до 14 уровня включительно можно так:
apt2sb upgrade -l 14 -n 15-upgrade.sb

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

Подготовим директории с драйверами и необходимым ПО, для размещения на токене в разделе с системой.
Для Windows потребуется:

Создадим директорию для размещения данного ПО например Windows_soft/, rtadmin разместим в директории rtadmin3.1/.

Подготовим bat/cmd файлы для работы с разделами, сохраним их в корне флешки.

Создадим файлы, первый h-lock.cmd со следующим содержимым:
rtadmin3.1/rtadmin.exe set-volume-access-mode -P console --volume-id 2 --new-mode h --temp
h-unlock-r.cmd:
rtadmin3.1/rtadmin.exe set-volume-access-mode -P console --volume-id 2 --new-mode r --temp
h-unlock-rw.cmd:
rtadmin3.1/rtadmin.exe set-volume-access-mode -P console --volume-id 2 --new-mode rw --temp
os-unlock.cmd:
rtadmin3.1/rtadmin.exe set-volume-access-mode -P console --volume-id 1 --new-mode rw --temp

Если подготавливали с отдельной флешки, переносите все модули и ядро на первый раздел Рутокена, копируем файлы cmd и директории с ПО.
Переводим 1 раздел токена в RO режим командой:
rtadmin.exe set-volume-access-mode -P console --volume-id 1 --new-mode r --temp

На этом настройка и подготовка системы и токена окончена.

Инструкция по настройке удаленного доступа к серверу через SSH доступна тут, от себя добавлю, что сертификаты я сгенерировал в XCA, далее экспортировал в der формате и действовал по инструкции, так же можно сразу загрузить через XCA на токен.

Загружаемся в live режиме
Раздел "Генерация ключей", "второй вариант" из инструкции Рутокен:

  1. Пропускаем пункты с 1.3 по 1.6, выполняем их в XCA, сразу экспортируем ключ и сертификат в der формате,

  2. Выполняем пункт 1.7 и 1.8.

  3. Добавляем публичный ключ на сервер.

  4. Проверяем под Linux ssh -I /usr/lib/librtpkcs11ecp.so user@server

  5. Для Windows можно использовать форк PuttySC и установить Драйвера Рутокен.

Открываете PuttySC, раскрываете SSH далее Certificate > Set PKCS cert выбираем путь к библиотеке она лежит в корне System32, пример "C:\Windows\System32\rtPKCS11ECP.dll", и выбираете сертификат который создали ранее в XCA > ok > Open в нижней части программы, далее откроется приглашение на ввод пин-кода, необходимо ввести пин пользователя который по стандарту "12345678", не пин локального пользователя от скрытого раздела или раздела RO с системой.

Заключение, в данной статье показал как создать защищенную от записи систему на примере MiniOS и Рутокен ЭЦП flash, для работы на гос порталах и загрузки в защищенную неизменяемую систему с любого устройства ПК или ноутбука.
На втором разделе токена у нас защищена область скрытая от глаз с доступом по пин коду, аналогичная ПО Рутокен Диск только бесплатно и без графического интерфейса. Я дополнительно храню всю критическую информацию в контейнере VeraCrypt на случай если в Рутокене есть уязвимость позволяющая прочитать информацию в защищенном разделе.

Можете добавлять свое ПО в модули или создавать новые, добавить поддержку других токенов.

Можно аналогично сделать через Ventoy без использования Рутокен в качестве носителя, смотрите документацию по инъекции файлов в образ при монтировании, потребуется отредактировать OpenSSL для работы без токена.

Планы на будущие

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

Теги:
Хабы:
+6
Комментарии3

Публикации