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

  • 09.07.2022
  • 3 907
  • 0
  • 16.03.2023
  • 3
  • 3
  • 0
Веб-киоск на основе 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 не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.