ГОСТ-шифрование
Термит поддерживает подключение внешних клиентов с использованием туннелей, шифрованных ГОСТ-алгоритмами. Для этого в DMZ зоне можно разместить сервер с ГОСТ-stunnel, который будет принимать входящие подключения, и пересылать их на внешние балансировщики нагрузки и шлюзы. Либо, можно настроить ГОСТ-stunnel на шлюзе и\или внешнем балансировщике. Данная инструкция описывает конфигурацию ГОСТ-stunnel на шлюзе.
1. Настройка серверов
Для поддержки подключений пользователей, необходимо установить и настроить stunnel (версия от КриптоПро) на шлюзе внешнего доступа.
Настройка TLS-шлюза
-
Установите КриптоПро CSP. Версия
stunnelот КриптоПро поставляется в комплекте с этим продуктом.Начиная с CSP 5.0 R3 в демонстрационную лицензию больше не входит «TLS-сервер», поэтому в целях тестирования можно установить версию CSP 5.0 R2.
-
Скачайте архив для нужной ОС по ссылке.
-
Распакуйте полученный архив с помощью команды:
tar -xvzf linux-amd64*.tgz -
При необходимости установите пакет
lsbдля корректной инсталляции КриптоПро CSP. -
Запустите установку КриптоПро CSP с помощью команды:
sudo ./install_gui.shПри установке необходимо выбрать компонент
stunnel.
-
-
Сгенерируйте ключи на шлюзе.
-
Создайте контейнер на носителе
HDIMAGE, задав пустой пароль:sudo /opt/cprocsp/bin/amd64/csptest -keyset -newkeyset -cont '\\.\HDIMAGE\termit' -
Создайте запрос на получение сертификата, заменяя
%e@mail%(необязательный параметр),%gw_FQDN%на используемые:sudo /opt/cprocsp/bin/amd64/cryptcp -creatrqst -dn "E=%e@mail%, C=RU, CN=%gw_FQDN%, SN=%gw_FQDN%" -hashalg 1.2.643.7.1.1.2.2 -nokeygen -both -ku -cont '\\.\HDIMAGE\termit' gw.req -
Выведите содержимое файла
gw.reqс помощью команды:cat gw.req
-
-
Получите сертификат от центра сертификации (ЦС).
Для работы потребуются следующие сертификаты:
-
сертификат шлюза;
-
корневой сертификат ЦС;
-
промежуточные сертификаты ЦС (при наличии).
Если в вашей организации используется корпоративный центр сертификации, порядок получения сертификатов определяется внутренними регламентами.
Ниже в качестве примера приведён процесс получения сертификата от центра сертификации КриптоПро:
-
Откройте портал по ссылке.
-
Вставьте содержимое файла
gw.reqв полеBase-64-шифрованный запрос сертификата. -
Нажмите Выдать.
-
Нажмите "Загрузить сертификат", полученный файл
certnew.cerпереименуйте вgw.cer. -
Нажмите Загрузить цепочку сертификатов. Полученный файл
certnew.p7bпереименуйте вgw.p7b. -
Откройте портал по ссылке.
-
Нажмите Загрузка сертификата ЦС. Переименуйте полученный файл на
ca.cer.
-
-
-
Установите сертификаты на шлюзе.
-
Загрузите полученные сертификаты на шлюз:
-
gw.cer- сертификат шлюза, -
ca.cer- сертификат корневого Центра Сертификации, -
gw.p7b- сертификат шлюза и промежуточных центров сертификации.
-
-
Установите сертификат ЦС с помощью команды:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file ca.cerПосле выполнения команды необходимо нажать o и затем Enter для подтверждения добавления корневого сертификата.
-
Установите промежуточный сертификат из цепочки сертификатов:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file gw.p7b-
После выполнения команды введите номер промежуточного сертификата (например, 1) и нажмите Enter.
-
Для подтверждения добавления корневого сертификата нажмите o и затем Enter.
-
Если файл
gw.p7bсодержит несколько промежуточных сертификатов (или они находятся в другом файле), добавьте их аналогичным способом.
-
-
Установите сертификат шлюза:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -file gw.cer -cont '\\.\HDIMAGE\termit' -
Проверьте статус сертификата шлюза с помощью команды:
sudo /opt/cprocsp/bin/amd64/certmgr -list -store uMyЗначение поля
PrivateKey Linkдолжно бытьYes.
-
-
Настройте и запустите ГОСТ-stunnel на шлюзе:
-
Остановите и отключите сервис
termit-stunnelна шлюзе:sudo systemctl disable --now termit-stunnelДанную процедуру необходимо повторять каждый раз после установки\переустановки\обновления агента шлюза.
-
Создайте папку
/etc/stunnel-gost/и скопируйте в неё файл из сертификатаgw.cer. -
В папке
/etc/stunnel-gost/создайте файл конфигурацииstunnel-gost.confсо следующим содержимым:pid=/var/opt/cprocsp/tmp/stunnel_cli.pid output=/var/log/stunnel_gost.log socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 debug = 5 [https-gw] accept = 0.0.0.0:4444 connect = 127.0.0.1:8080 cert=/etc/stunnel-gost/gw.cer verify=1 [https-broker] accept = 0.0.0.0:4445 connect = %fqdn_или_ip_внеш_балансировщика%:443 cert=/etc/stunnel-gost/gw.cer verify=1 -
В созданном файле
stunnel-gost.confзамените следующие параметры:%fqdn_или_ip_внеш_балансировщика%— замените на FQDN или IP-адрес внешнего балансировщика. -
Запустите ГОСТ-stunnel:
sudo /opt/cprocsp/sbin/amd64/stunnel_thread /etc/stunnel-gost/stunnel-gost.conf -
Проверьте логи
stunnelна наличие ошибок:sudo cat /var/log/stunnel_gost.logГОСТ-stunnel на сервере необходимо запускать каждый раз после перезагрузки сервера. Можно добавить команду его запуска в автозагрузку или настроить запуск через сервис.
-
2. Настройка клиентских компьютеров
Для подключения к ГОСТ-stunnel, на клиентском компьютере необходимо настроить ГОСТ-stunnel, а также стартовать его перед запуском Термит десктоп-клиента, а сам Термит десктоп-клиент необходимо запускать с соответствующим параметром.
Настройка клиентских компьютеров с ОС Windows
-
Скачайте и установите КриптоПро CSP по ссылке.
-
На том же ресурсе скачайте приложение для создания TLS-туннеля
stunnel msspi cli x86и скопируйте полученный файлstunnel_msspi_cli.exeв папкуC:\Program Files (x86)\. -
Создайте папку
stunnel-gostв профиле пользователя:C:\Users\%username%\stunnel-gost\ -
Создайте конфигурационный файл
C:\Users\%username%\stunnel-gost\stunnel-gost.confс содержимым ниже:output=C:\Users\%YourUserName%\stunnel-gost\stunnel.log socket=l:TCP_NODELAY=1 socket=r:TCP_NODELAY=1 debug=5 [GW] client = yes accept = 127.0.0.1:4444 connect = %fqdn_или_ip_шлюза%:4444 verify = 2 [BROKER] client = yes accept = 127.0.0.1:4445 connect = %fqdn_или_ip_шлюза%:4445 verify = 2 -
В созданном файле замените следующие параметры:
-
%YourUserName%— замените на реальное имя пользователя Windows (переменные среды не поддерживаются); -
%fqdn_или_ip_шлюза%— замените на FQDN или IP-адрес шлюза.
-
-
Создайте файл
"C:\Users\%username%\stunnel-gost\proxyconf.json"со следующим содержимым:{ "gateway": { "host": "127.0.0.1", "port": 4444 }, "broker": { "host": "127.0.0.1", "port": 4445 } } -
Добавьте сертификаты в доверенные корневые центры сертификации:
-
корневой сертификат из файла
ca.cer; -
промежуточные сертификаты из
gw.p7b.
-
-
Запустите ГОСТ-stunnel. Для этого выполните в командной строке (CMD) или PowerShell:
"C:\Program Files (x86)\stunnel_msspi_cli.exe" "C:\Users\%username%\stunnel-gost\stunnel-gost.conf" -
Запустите десктоп-клиент Termit с параметром
--proxy-conf. Для этого выполните в командной строке (CMD) или PowerShell:"C:\Program Files\termit-desktop\termit-desktop.exe" --proxy-conf "C:\Users\%username%\stunnel-gost\proxyconf.json"
Настройка клиентских компьютеров с ОС Linux
|
Начиная с CSP 5.0 R3 в демонстрационную лицензию больше не входит «TLS-сервер», поэтому в целях тестирования можно установить версию CSP 5.0 R2. |
-
Скачайте и установите КриптоПро CSP по ссылке.
-
Распакуйте полученный архив с помощью команды:
tar -xvzf linux-amd64.tgz -
Установите пакет
lsb, необходимый для корректной инсталляции КриптоПро CSP. -
Запустите установку КриптоПро CSP с помощью команды:
sudo ./install_gui.shПри установке необходимо выбрать компонент
stunnel. -
Создайте конфигурационный файл
~/stunnel-gost/stunnel-gost.confс содержимым ниже:pid=/tmp/stunnel_cli.pid output=/home/%YourUserName%/stunnel-gost/stunnel.log socket=l:TCP_NODELAY=1 socket=r:TCP_NODELAY=1 debug=5 [GW] client = yes accept = 127.0.0.1:4444 connect = %fqdn_или_ip_шлюза%:4444 verify = 2 [BROKER] client = yes accept = 127.0.0.1:4445 connect = %fqdn_или_ip_шлюза%:4445 verify = 2 -
В созданном файле замените следующие параметры:
-
%YourUserName%— замените на реальное имя пользователя, так как переменные среды и символ~в данном файле не поддерживаются; -
%fqdn_или_ip_шлюза%— замените на FQDN или IP-адрес шлюза.
-
-
Создайте файл
~/stunnel-gost/proxyconf.jsonсо следующим содержимым:{ "gateway": { "host": "127.0.0.1", "port": 4444 }, "broker": { "host": "127.0.0.1", "port": 4445 } } -
Добавьте сертификаты в доверенные корневые центры сертификации с помощью
certmgr:-
корневой сертификат из файла
ca.cer:/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file ca.cer -
промежуточные сертификаты из файла
gw.p7b:/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file gw.p7b
-
-
Запустите ГОСТ-stunnel с помощью команды:
/opt/cprocsp/sbin/amd64/stunnel_thread ~/stunnel-gost/stunnel-gost.conf -
Запустите десктоп-клиент Termit с параметром
--proxy-conf:/opt/termit-desktop/termit-desktop --proxy-conf ~/stunnel-gost/proxyconf.json