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

  • 09.07.2022
  • 514
  • 0
  • 13.07.2022
  • 1
  • 1
  • 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 рабочих дня.