Установка OpenVPN-GOST 3.0 на Debian 9 Stretch

Главная Форумы SOFTWARE System settings Установка OpenVPN-GOST 3.0 на Debian 9 Stretch

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #163
    E-tec
    Хранитель

      Устанавливаем Debain 9 стандартным способом, я взял образ mini-cd, устанавливаем только системные утилиты, чтоб не занимать много места + вся основная работа будет через консоль…

      После установки ОС настраиваем статически ip адрес серверу openvpn (ниже указаны адреса для моей сети, настраивайте под свою сеть сами):

      # This file describes the network interfaces available on your system
      # and how to activate them. For more information, see interfaces(5).
      
      source /etc/network/interfaces.d/*
      
      # The loopback network interface
      auto lo
      iface lo inet loopback
      
      # The primary network interface
      allow-hotplug eth0
      iface eth0 inet static
      address 10.59.0.116
      netmask 255.255.255.0
      gateway 10.59.0.1
      dns-nameservers 10.59.0.1 178.161.161.161 8.8.8.8

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

      apt-get update
      apt-get upgrade
      apt-get install ssh mc vsftpd nano net-tools

      ssh — SSH сервер для удаленного управления
      mc — Midnight Commander файловый менеджер с графической оболочкой
      vsftpd — FTP сервер
      nano — текстовый редактор (можете не устанавливать если используете другой)
      net-tools — набор системных сетевых утилит, не включены в образ Debian 9 mini-cd, устанавливаем отдельно.

      После установки настраиваем vsftpd сервер, как это сделать смотрим ТУТ.

      После настройки vsftpd подключаемся к серверу и копируем дистрибутивы openvpn-gost и openssl и устанавливаем их.

      dpkg -i /home/administrator/FTP/openssl-r_1.0.2m-6cc.around.debian_amd64.deb
      Пакет попросит ввести лицензионный ключ, после успешного ввода создастся файл cryptocom.lic

      Далее т.к. в debain по умолчанию используется openssl, нужно будет изменить его приоритет, чтоб подгружалась ГОСТовская база библиотек, для этого вводим команды:

      mv /usr/bin/openssl /usr/bin/openssl-1
      update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
      update-alternatives --install /usr/bin/openssl openssl /opt/cryptopack3/bin/openssl 50
      update-alternatives --config openssl

      1 — переименовывает стандартный набор openssl в openssl-1
      2 — выставление приоритета использования снижаем до 10 (сток 50)
      3 — предоставляем альтернативу и выставляем на 50 приоритет запроса
      4 — смотрим какой из openssl задействован, и подтверждаем выбором нужного

      В итоге по команде openssl version видим «CryptoPack 3.0 OpenSSL 1.0.2m»

      Далее ставим пакет openvpn-gost

      dpkg -i /home/administrator/FTP/openvpn-gost_2.3.17-6cc.around.debian_amd64.deb

      После того как пакет установится копируем файлы easy-gost в папку openvpn-gost, на сколько я понял ее положение не зависит от чего-либо, т.е. ее можно скопировать куда угодно в на сервере, ключи будут генерироваться в любом месте, но при генерации все ключи будут храниться в папке ./keys вместе с файлами build-ca и т.д., по этому я подумал, что будет удобно скопировать все файлы в директорию openvpn-gost:

      После этого можно генерировать ключи, если Вы скопировали все файлы как у меня в директорию openvpn-gost, то переходим в нее

      cd /etc/openvpn-gost

      Выставляем полные права доступа на исполняемые файлы:

      chmod +x build-ca
      chmod +x build-key-server
      chmod +x build-key

      Генерируем необходимые ключи:

      ./build-ca

      Создаем ключ сервера
      ./build-key-server server

      Добавляем права доступа к ключу сервера:

      chmod 700 /etc/openvpn-gost/keys/server.key

      Cоздаем ключ для tls-аутификации. Для этого переходим в директорию криптоком

      cd /opt/openvpn-gost/sbin

      Создаем ta.key:

      openvpn --genkey --secret keys/ta.key

      Так же создаем ключ Диффи-Хеллмана

      openssl dhparam -out dh2048.pem 2048

      Ключи появится в тоже директории, т.е. в /opt/openvpn-gost/sbin, поэтому их нужно перенести в папку с openvpn-gost

      далее копируем или переименовываем конфиг server.conf.sample в server.conf

      mv /etc/openvpn-gost/server.conf.sample /etc/openvpn-gost/server.conf

      И редактируем его, в данном случае, нужно поменять только порт и немного добавить параметров и отредактировать путь до ключей:

      # Which TCP/UDP port should OpenVPN listen on?
      port 1194
      
      # tcp or udp. If GOST - TCP only
      proto tcp
      
      # tap or tun
      dev tap
      
      # Engine cryptocom if commercial
      engine cryptocom
      tls-cipher GOST2012-GOST8912-GOST8912
      ca /etc/openvpn-gost/keys/ca.crt
      cert /etc/openvpn-gost/keys/server.crt
      key /etc/openvpn-gost/keys/server.key
      dh /etc/openvpn-gost/keys/dh2048.pem
      
      # Server mode, ip pool and netmask
      server 10.9.1.0 255.255.255.0
      
      # Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
      client-config-dir /etc/openvpn-gost/ccd
      
      # Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
      ifconfig-pool-persist ipp.txt
      
      # Указываем сети, в которые нужно идти через туннель (сеть-клиента) это возможные адреса удаленных клиентов.
      route 192.168.0.0 255.255.255.0
      route 192.168.1.0 255.255.255.0
      
      # Включаем TLS
      tls-server
      tls-auth /etc/openvpn-gost/keys/ta.key 0
      tls-timeout 120
      auth gost-mac
      cipher gost89
      
      # Если нужно, чтобы клиенты видели друг друга разкомментируйте
      client-to-client
      
      # Ping every 10 seconds, assume that remote peer
      # is down if no ping received during a 120 second
      # time period.
      keepalive 10 120
      
      #push comp-lzo yes
      
      # Сжатие трафика
      #comp-lzo yes
      
      # Максимум клиентов
      max-clients 250
      
      user nobody
      group nogroup
      
      # Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
      persist-key
      persist-tun
      
      status openvpn-status.log
      
      # Log-file
      log /var/log/openvpn-gost.log
      
      # Verbosity 0-11
      verb 3
      
      # Защита от повторов (максимум 20 одинаковых сообщений подряд)
      mute 20
      
      # отозванные сертификаты, полный путь к файлу!
      crl-verify /etc/openvpn-gost/keys/crl.pem

      Т.е. оставляем весь конфиг стоковый от криптоком, меняем только порт на нужный Вам + я добавил client-config-dir\max-clients\client-to-client

      Далее создадим директорию для клиентских конфигов

      mkdir /etc/openvpn-gost/ccd

      Можно запускать наш сервер OpenVPN

      service openvpn-gost start

      Смотрим список интерфейсов

      ifconfig

      Если среди прочих видим

      tap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 10.9.1.1  netmask 255.255.255.0  broadcast 10.9.1.255
      inet6 fe80::ec9c:56ff:fe28:d185  prefixlen 64  scopeid 0x20         ether ee:9c:56:28:d1:85  txqueuelen 100  (Ethernet)
      RX packets 177  bytes 33649 (32.8 KiB)
      RX errors 0  dropped 4  overruns 0  frame 0
      TX packets 19  bytes 1378 (1.3 KiB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

      значит VPN-сервер завелся. Если нет, то смотрим лог

      tail -f /var/log/openvpn-gost.log

      Создание ключей и сертификатов
      Переходим в созданную директорию, где и займемся генерацией ключей и сертификатов

      cd /etc/openvpn-gost

      После этого генерируем ключи для клиентов

      ./build-key Client1

      Client1 — имя сертификата, меняем на любое по своему выбору.

      Присвоение статических адресов клиентам
      Если Вы хотите присвоить каждому клиенту свой IP адрес, либо у вас много пользователей и нужно использовать 240+ IP адресов в одной защищенной сети, нужно создать файл в папке ccd в директории с openvpn сервера, имя файла должно быть такое же как имя сертификата, т.е. если Вы сгенерировали сертификат Client1, то и файл в папке ccd должен называть Client1

      touch /etc/openvpn-gost/ccd/Client1

      После чего открываем файл

      nano /etc/openvpn-gost/ccd/Client1

      и редактируем его

      ifconfig-push 10.9.1.10 255.255.255.0 - Желаемый статический IP адрес и маска сети клиента
      iroute 10.59.0.0 255.255.255.0 - Локальная сеть сервера

      Для автозапуска сервера вводим команду

      systemctl enable openvpn-gost

      После этого пользователь с сертификатом Client1 будет постоянно получать ip адрес 10.9.1.10. На этом настройка сервера завершена, идем за ПК пользователя и устанавливаем пакеты cryptopack30_64_MinGW_171207-175933.exe и openvpn64-2.3.17-gostr.exe, в той же последовательности как на сервере, т.е. сначала cryptopack30_64_MinGW_171207-175933.exe — вводим лицензионный ключ, а потом сам пакет openvpn (важно openvpn поставить в корень диска C:\). Создаем папку ssl и копируем туда ca.crt\Client1.crt\Client1.key\ta.key копируем из папки sample-config файл gost-client.ovpn в папку C:\OpenVPN\config и редактируем его…

      Создание файла конфигурации клиента
      Конфигурация клиента мало чем отличается от сервера, оно и понятно, но есть не большие изменения:

      client
      remote 10.59.0.116 1194
      proto tcp
      dev tap
      
      engine cryptocom
      tls-cipher GOST2012-GOST8912-GOST8912
      auth gost-mac
      cipher gost89
      
      #comp-lzo yes
      
      ca C:\\OpenVPN\\ssl\\ca.crt
      cert C:\\OpenVPN\\ssl\\Client1.crt
      key C:\\OpenVPN\\ssl\\Client1.key
      tls-auth C:\\OpenVPN\\ssl\\ta.key 1
      
      remote-cert-tls server
      
      keepalive 10 120
      socket-flags TCP_NODELAY
      
      persist-key
      persist-tun

      Отзыв сертификата
      Для отзыва сертификата выполните следующие действия, перейдите в каталог openvpn-gost

      cd /etc/openvpn-gost

      выполните шаги отзыва сертификата:

      source ./vars
      sh ./revoke-full Client1

      Где client1 — сертификат, который нужно отозвать. Увидите ответ сервера:

      Revoking Certificate ... Data Base Updated

      После этого ОБЯЗЯТЕЛЬНО ВЫСТАВЛЯЕМ ПРАВА ДЛЯ ФАЙЛА crl.pem 644, иначе работать не будет.

      chmod 644 /etc/openvpn-gost/keys/crl.pem

      После этой операции рестартуем openvpn-gost

      service openvpn-gost restart

      Все, после этих шагов, пользователь с сертификатом client1 не сможет подключиться к серверу!

      На этом настройка полностью завершена, можно пользоваться vpn!)

      #414
      E-tec
      Хранитель
        UPD 16.11.18

        настройка клиента производилась на Windows ПК, если нужно настроить на Linux просто копируем сэмпл клиентского конфига с сервера и дописываем, то что добавили со стороны сервера

        #495
        E-tec
        Хранитель
          UPD 10.01.19

          Оптимизировал конфигурационные файлы openvpn-gost

          log file:
          [spoiler=log]
          Fri Jan 18 15:55:45 2019 OpenVPN 2.3.17 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [IPv6] built on Dec 6 2017
          Fri Jan 18 15:55:45 2019 Windows version 6.2 (Windows 8 or greater) 64bit
          Fri Jan 18 15:55:45 2019 library versions: CryptoPack 3.0 OpenSSL 1.0.2m, LZO 2.10
          Enter Management Password:
          Fri Jan 18 15:55:46 2019 Initializing OpenSSL support for engine ‘cryptocom’
          Fri Jan 18 15:55:46 2019 Control Channel Authentication: using ‘C:\OpenVPN\ssl\ta.key’ as a OpenVPN static key file
          Fri Jan 18 15:55:46 2019 Attempting to establish TCP connection with [AF_INET]10.59.0.116:1194 [nonblock]
          Fri Jan 18 15:55:47 2019 TCP connection established with [AF_INET]10.59.0.116:1194
          Fri Jan 18 15:55:47 2019 TCPv4_CLIENT link local: [undef]
          Fri Jan 18 15:55:47 2019 TCPv4_CLIENT link remote: [AF_INET]10.59.0.116:1194
          Fri Jan 18 15:55:47 2019 [server] Peer Connection Initiated with [AF_INET]10.59.0.116:1194
          Fri Jan 18 15:55:49 2019 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
          Fri Jan 18 15:55:49 2019 open_tun, tt->ipv6=0
          Fri Jan 18 15:55:49 2019 TAP-WIN32 device [Ethernet 2] opened: \\.\Global\{82AE0F29-CCB5-4874-AC22-59E672BD9F2F}.tap
          Fri Jan 18 15:55:49 2019 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.9.1.17/255.255.255.0 on interface {82AE0F29-CCB5-4874-AC22-59E672BD9F2F} [DHCP-serv: 10.9.1.0, lease-time: 31536000]
          Fri Jan 18 15:55:49 2019 Successful ARP Flush on interface [10] {82AE0F29-CCB5-4874-AC22-59E672BD9F2F}
          Fri Jan 18 15:55:54 2019 WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
          Fri Jan 18 15:55:54 2019 Initialization Sequence Completed
          [/spoiler]

        Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
        • Для ответа в этой теме необходимо авторизоваться.
        Авторизация
        *
        *
        Регистрация
        *
        *
        *
        Пароль не введен
        *
        Генерация пароля