Веб-киоск на основе Debian 11 с поддержкой шифрования ГОСТ 2012

В русском сегменте Интернета все чаще начинают использовать криптографический алгоритм ГОСТ Р 34.10-2012 (или проще говоря — ГОСТ2012), который является утвержденным государством стандартом для шифрования данных. В данном материале будет приведен пример настройки веб-киоска на основе Debian 11, с минимальным набором установленных программ. В качестве целевого сайта будет использоваться сайт, работающий по использующий шифрование ГОСТ TLS.

Установка необходимых программ

Для удаленного управления веб-киоском рекомендуется установить SSH сервер.

apt install openssh-server

При желании, так же можно включить удаленный доступ через SSH для пользователя root.

Установим X.Org Server и Openbox:

apt install openbox xorg

Если у вас установлена английская версия Debian, без поддержки русского языка, то добавим возможность его ввода. Для этого, отредактируем файл /etc/default/keyboard:

nano /etc/default/keyboard

И приведем его к следующему виду (для удобства, внесенные в данный файл изменения выделены синим):

# KEYBOARD CONFIGURATION FILE    # Consult the keyboard(5) manual page.    XKBMODEL="pc105"  XKBLAYOUT="us,ru"  XKBVARIANT=""  XKBOPTIONS="grp:alt_shift_toggle"    BACKSPACE="guess"

Установка Chromium GOST

Поскольку нам нужно настроить не просто веб-киоск, а тот, который сможет ходить на сайты, использующие шифрование ГОСТ2012, то выбор браузеров сужается до единственного адекватного кандидата в виде Chromium GOST.

Сперва установим необходимые пакеты для Chromium GOST:

apt install fonts-liberation libcurl3-gnutls libnspr4 libnss3 xdg-utils wget

А затем скачиваем, и устанавливаем сам Chromium GOST с нужной разрядностью (актуальную ссылку брать здесь). Для скачивания его непосредственно на веб-киоск, нужно выполнить следующую команду:

wget https://github.com/deemru/Chromium-Gost/releases/download/102.0.5005.61/chromium-gost-102.0.5005.61-linux-amd64.deb

Устанавливаем скачанный deb пакет:

dpkg -i chromium-gost-102.0.5005.61-linux-amd64.deb

Установка КриптоПро

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

Для Debian, КриптоПро скачивается в tgz архиве, по этому, сперва требуется его распаковать:

tar -xvf linux-amd64_deb.tgz

Перейдем в получившуюся после распаковки директорию, и выполним установочный скрипт:

cd linux-amd64_deb  ./install.sh

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

/opt/cprocsp/sbin/amd64/cpconfig -license -set [СЕРИЙНЫЙ НОМЕР]

Установка корневых сертификатов

С большей долей вероятности, сайт, использующий шифрование по ГОСТ2012 имеет свои ГОСТ2012 сертификаты, которые не будут известны вашей системе. По этому, для устранения ошибки о сертификате, нужно установить нужные корневые сертификаты, используя КриптоПро:

/opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file CryptoPro.cer

Утилита попросит подтвердить установку сертификата, после чего, при успешной установке, будет выведен текст [ErrorCode: 0x00000000].

Настройка openbox

Настроим контекстное меню Openbox, чтобы через него можно было совершить только два действия — выключение и перезагрузку киоска. Для этого, откроем файл конфигурации меню /etc/xdg/openbox/menu.xml в любом текстовом редакторе, и приведем его к следующему виду:

<?xml version="1.0" encoding="UTF-8"?>    <openbox_menu xmlns="http://openbox.org/"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://openbox.org/                  file:///usr/share/openbox/menu.xsd">    <menu id="root-menu" label="Openbox 3">    <item label="Shutdown">      <action name="Execute">        <execute>sudo /usr/bin/systemctl poweroff</execute>      </action>    </item>    <item label="Restart">      <action name="Execute">        <execute>sudo /usr/bin/systemctl reboot</execute>      </action>    </item>  </menu>    </openbox_menu>  

Настройка автозапуска

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

useradd -m -g users kiosk

Настроим автологин этого пользователя.

mkdir -p /etc/systemd/system/getty@tty1.service.d/
nano /etc/systemd/system/getty@tty1.service.d/autologin.conf

Пишем следующее:

[Service]  ExecStart=  ExecStart=-/sbin/agetty -a kiosk --noclear %I $TERM

Поскольку мы не используем никакой экранный менеджер, то настроим автозапуск X сервера самостоятельно. Откроем файл /home/kiosk/.profile для редактирования:

nano /home/kiosk/.profile

И добавим в самый конец следующие строки:

if [ -z "$DISPLAY" ] && [ $(tty) = /dev/tty1 ]; then  . startx  logout  fi

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

apt install sudo

И добавить информацию о правах данного пользователя в файл конфигурации sudo:

nano /etc/sudoers

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

kiosk ALL=(ALL) NOPASSWD: /usr/bin/systemctl poweroff,/usr/bin/systemctl reboot

Теперь, настроим автозагрузку Chromium GOST. Сперва создадим скрипт, который будет запускать Chromium GOST, проверять его запущенность, и в случае чего — перезапускать его через 30 секунд.

nano /home/kiosk/chromium-gost.sh

Пишем туда следующее (https://google.ru следует заменить на необходимый ресурс):

#!/bin/bash  while true  do  	chromium-gost --disable-infobars --incognito --kiosk 'https://google.ru'  	sleep 30s  done
Если для выхода в Интернет используется прокси, то строка запуска будет иметь следующий вид:

chromium-gost --disable-infobars --incognito -kiosk --proxy-server="[АДРЕС ПРОКСИ СЕРВЕРА]" 'https://google.ru'

Адрес прокси сервера должен быть в виде АДРЕС:ПОРТ, например 127.0.0.1:8080.

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

chmod +x /home/kiosk/chromium-gost.sh

Открываем файл автозапуска для Openbox:

nano /etc/xdg/openbox/autostart

Пишем туда следующее:

xset s off  xset s noblank  ./chromium-gost.sh

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

Настройка GRUB

Напоследок, можно ускорить загрузку системы, убрав отображение меню загрузчика GRUB. Для этого, открываем файл /etc/default/grub:

nano /etc/default/grub

И находим строчку GRUB_TIMEOUT, после чего меняем её значение на 0. Должно получиться следующее:

GRUB_TIMEOUT=0

Для применения изменений, выполняем обновление загрузчика GRUB:

update-grub

Теперь можно перезагружать компьютер, и проверять работу веб-киоска.

Специфичные доработки

Если в вашем случае веб-киоск — это не только стоящий в холле терминал, а полноценный компьютер, то не лишним будет доработать некоторые моменты.

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

apt install numlockx

И добавить в файл автозапуска /etc/xdg/openbox/autostart, прямо перед строкой с запуском chromium gost следующую команду:

xset s off  xset s noblank  numlockx on  ./chromium-gost.sh

О том, как ограничить использование USB накопителей, чтобы случайные пользователи не тыкали флешки в систему, можно прочитать в отдельной заметке.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *