Веб-киоск на основе Debian 11 с поддержкой шифрования ГОСТ 2012
- Recluse
- 09.07.2022
- 3 907
- 0
- 16.03.2023
- 3
- 3
- 0
В русском сегменте Интернета все чаще начинают использовать криптографический алгоритм ГОСТ Р 34.10-2012 (или проще говоря - ГОСТ2012), который является утвержденным государством стандартом для шифрования данных. В данном материале будет приведен пример настройки веб-киоска на основе Debian 11, с минимальным набором установленных программ. В качестве целевого сайта будет использоваться сайт, работающий по использующий шифрование ГОСТ TLS.
Установка необходимых программ
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 накопителей, чтобы случайные пользователи не тыкали флешки в систему, можно прочитать в отдельной заметке.
Добавить комментарий