Перейти к содержанию

Настройка OpenVPN-сервера с ГОСТ

В НАЙС.ОС серверный профиль можно разместить в /etc/openvpn/server-gost.conf и запустить через openvpn-server@server-gost.service.

1. Посмотреть и сохранить действующую конфигурацию

sudo systemctl cat openvpn-server@server-gost.service
sudo systemctl status openvpn-server@server-gost.service
sudo install -m 0600 -o root -g root \
  /etc/openvpn/server-gost.conf \
  /etc/openvpn/server-gost.conf.backup

На рабочем сервере сперва убедитесь, что есть аварийный доступ к консоли. Не редактируйте одновременно и TLS-профиль, и маршрутизацию, и правила межсетевого экрана.

2. Указать параметры ГОСТ

Откройте файл /etc/openvpn/server-gost.conf и проверьте наличие:

cipher kuznyechik-cbc
auth id-tc26-gost3411-12-256
data-ciphers kuznyechik-cbc

# В действующем профиле предусмотрена совместимость со старым клиентом:
data-ciphers-fallback kuznyechik-cbc

verb 4

В этом фрагменте приведены только криптографические директивы. Не удаляйте существующие dev, proto, port, server, ca, cert, key, tls-auth или tls-crypt и другие обязательные параметры своего VPN. Инструкции по созданию сертификатов находятся в OpenSSL / PKI.

3. Проверить сертификаты и права

sudo grep -E '^[[:space:]]*(ca|cert|key|tls-auth|tls-crypt)[[:space:]]+' \
  /etc/openvpn/server-gost.conf

sudo systemctl cat openvpn-server@server-gost.service

Сверьте фактические пути, разрешения, владельцев и контекст SELinux для файлов, если эта подсистема включена. Не публикуйте закрытые ключи и содержимое tls-crypt.

4. Открыть порт средствами iptables

Узнайте реальный порт и протокол:

sudo grep -E '^[[:space:]]*(port|proto|local|dev)[[:space:]]+' \
  /etc/openvpn/server-gost.conf
sudo iptables -S INPUT
sudo iptables -S FORWARD

В системе с политикой DROP необходимые разрешающие правила добавляются адресно. См. руководство по открытию порта и маршрутизации. Не отключайте iptables целиком. У НАЙС.ОС сетевые интерфейсы настраиваются systemd-networkd, DNS — systemd-resolved.

5. Применить изменения в обслуживаемое окно

Перед изменением сохраните текущее состояние. Перезапуск разрывает активные сессии, поэтому выполняйте его в согласованное время:

sudo systemctl restart openvpn-server@server-gost.service
sudo systemctl --no-pager --full status openvpn-server@server-gost.service
sudo journalctl -u openvpn-server@server-gost.service \
  --since '-10 minutes' --no-pager

6. Проверить фактическую защиту

Одной активной службы недостаточно. Подключите тестовый клиент, убедитесь, что на нём появились строки Outgoing Data Channel и Incoming Data Channel с kuznyechik-cbc и ГОСТ-HMAC, затем выполните передачу IP-трафика. Порядок приёмки.

Восстановление

При ошибке настройки верните сохранённый конфигурационный файл, перезапустите службу только в обслуживаемое окно и снова проверьте доступ клиентов. Если проблема вызвана iptables, восстановите конкретное изменённое правило, а не сбрасывайте всю таблицу.