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

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

В этой теме 2 ответа, 1 участник, последнее обновление  Esmertec 9 мес. назад.

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

    Esmertec
    Хранитель

    Устанавливаем 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

    Esmertec
    Хранитель
    UPD 16.11.18

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

    Ты знаешь, что такое безумие? Безумие - это точное повторение одного и того же действия, раз за разом, в надежде на изменение.

    #495

    Esmertec
    Хранитель
    UPD 10.01.19

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

    log file:

    Спойлер

    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

    [свернуть]

    Ты знаешь, что такое безумие? Безумие - это точное повторение одного и того же действия, раз за разом, в надежде на изменение.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля