Easy rsa 3 windows генерация ключа

OpenVPN - популярная технология для создания защищенных частных сетей (VPN), использующих аутентификацию и шифрование на основе протокола SSL/TLS. Для упрощения процедуры создания необходимых ключей и сертификатов традиционно используется утилита Easy-RSA, которая позволяет легко управлять локальным центром сертификации (CA) инфраструктуры открытых...

openvpn-server-and-client-with-easy-rsa-3-000.pngOpenVPN — популярная технология для создания защищенных частных сетей (VPN), использующих аутентификацию и шифрование на основе протокола SSL/TLS. Для упрощения процедуры создания необходимых ключей и сертификатов традиционно используется утилита Easy-RSA, которая позволяет легко управлять локальным центром сертификации (CA) инфраструктуры открытых ключей (PKI). Сегодня мы поговорим о работе с новой версией утилиты Easy-RSA 3, которая серьезно отличается по синтаксису от используемой ранее Easy-RSA 2 и входит в состав новых дистрибутивов Debian и Ubuntu.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

На первый взгляд может показаться, что разработчики Easy-RSA серьезно все поменяли, но это не так, если вы понимаете, как устроена инфраструктура открытых ключей, то вам будет ясно, что работа утилиты изменилась только по форме, но не по сути. Она стала более целостной и простой в использовании, но в тоже время приобрела ряд новых функции, свойственных более «взрослым» продуктам. В настоящий момент Easy-RSA 3 входит в состав Debian 10, а также Ubuntu 18.10 и новее.

Установка Easy-RSA и создание центра сертификации

Для установки Easy-RSA 3 выполним:

apt install easy-rsa

После чего убедимся, что установлена именно третья версия утилиты:

dpkg -l easy-rsa

openvpn-server-and-client-with-easy-rsa-3-001.png

Обычно затем директорию с easy-rsa копируют в конфигурационную папку OpenVPN, но на наш взгляд CA лучше располагать отдельно, поэтому мы скопируем директорию просто в /etc, однако это ни не что не влияет, и вы можете поступить по своему разумению.

cp -r /usr/share/easy-rsa /etc

Затем изменим рабочую директорию на скопированную нами папку:

cd /etc/easy-rsa

Если вас устраивают параметры по умолчанию, то следующий шаг можно пропустить и сразу перейти к созданию инфраструктуры PKI. Однако мы советуем потратить немного времени на тонкую настройку вашего CA.

Прежде всего скопируем шаблон файла настроек:

cp vars.example vars 

и откроем файл vars на редактирование. Строки вида #set_var содержат значения по умолчанию, для их именения строку нужно раскомментировать и указать собственное значение. Начнем с опции EASYRSA_DN, она предусматривает два режима: упрощенный cn_only, при котором сертификат содержит только CN (имя того, кому выдан сертификат) и традиционный org, при котором заполняются все реквизиты организации. Для OpenVPN можно использовать любой режим. Мы установим традиционный:

set_var EASYRSA_DN  "org"

После чего раскомментируйте и заполните блок ниже своими данными (в примере указаны наши):

set.var EASYRSA_REQ_COUNTRY "RU"
set.var EASYRSA_REQ_PROVINCE "31"
set.var EASYRSA_REQ_CITY "BELGOROD"
set.var EASYRSA_REQ_ORG "Interface LLC"
set_var EASYRSA_REQ_EMAIL "admin@example.org"
set.var EASYRSA_REQ_OU "IT"

Заметьте, что если вы оставили cn_only, то редактировать вышеуказанные опции не имеет смысла.

Параметр EASYRSA_KEY_SIZE указывает размер ключа, на сегодняшний день безопасным считается размер начиная с 2048, если вы ставите на первое место безопасность, то можете увеличить его до 3072 или 4096. Если криптографическая стойкость не играет роли, например, туннель будет использован для доступа в интернет и предполагается использование слабых устройств, то можно уменьшить размер ключа до 1024.

Опции EASYRSA_CA_EXPIRE и EASYRSA_CERT_EXPIRE задают срок действия корневого сертификата CA и сертификатов пользователей (сервера и клиентов), их значения установлены в днях как 3650 (10 лет) и 1080 (5 лет), опция EASYRSA_CERT_RENEW задает количество дней до истечения сертификата, когда становится доступным его продление, по умолчанию это 30 дней. При необходимости вы можете изменить эти значения.

openvpn-server-and-client-with-easy-rsa-3-002.pngСохраним внесенные изменения. Теперь инициализируем наш CA и выпустим корневую пару ключей. Обратите внимание, что данные действия следует выполнять единожды, повторное выполнение указанных команд уничтожит существующий CA и потребует повторного создания всех ключей и сертификатов.

./easyrsa init-pki

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

touch pki/.rnd

и активируем наш CA:

./easyrsa build-ca

При создании закрытого ключа центра сертификации вам будет предложено ввести пароль, не следует пренебрегать этой возможностью, так как закрытый ключ — основа вашей инфраструктуры открытых ключей и его компрометация приведет к компрометации всех выпущенных ключей и сертификатов. Также не забудьте указать собственное наименование центра сертификации в опции Common Name.

openvpn-server-and-client-with-easy-rsa-3-003.pngПосле выполнения этих команд будет выполнено создание структуры директорий CA, публичный сертификат центра сертификации ca.crt вы сможете найти в директории pki, а закрытый ключ ca.key в pki/private. Закрытый ключ является секретным и не при каких обстоятельствах не должен покидать свое расположение и тем более не должен передаваться по открытым каналам связи, доступ третьих лиц к закрытому ключу также следует ограничить.

Также не забудем сформировать файл параметров Диффи-Хеллмана dh.pem, он также будет расположен в директории pki:

./easyrsa gen-dh

На этом создание центра сертификации (CA) можно считать законченным.

Создание ключа и сертификата для сервера

В Easy-RSA 3 все «по-взрослому», сначала нам нужно создать запрос на сертификат:

./easyrsa gen-req ovpn-server nopass

где ovpn-server — имя вашего сервера, nopass означает, что закрытый ключ следует создать без пароля. При выполнении данной команды будет создан запрос на сертификат и сгенерирован закрытый ключ сервера ovpn-server.key, который будет располагаться в pki/private. Закрытый ключ является секретным и не должен передаваться по открытым каналам связи и доступ к нему также должен быть ограничен.

Для выпуска сертификата выполните:

./easyrsa sign-req server ovpn-server

Опция server обозначает выпуск сертификата для сервера. Для подтверждения выпуска вам нужно будет явно выразить свое согласие указав yes в ответ на соответствующий запрос, любый иные действия приведут к отмене действия. Затем потребуется ввести пароль закрытого ключа центра сертификации.

openvpn-server-and-client-with-easy-rsa-3-004.pngВыпущенные сертификаты будут располагаться в pki/issued.

Теперь скопируем необходимые сертификаты и ключи в конфигурационную директорию OpenVPN, предварительно создав там папку keys:

mkdir /etc/openvpn/keys
cp pki/ca.crt pki/dh.pem /etc/openvpn/keys
cp pki/private/ovpn-server.key pki/issued/ovpn-server.crt /etc/openvpn/keys

Дальнейшая настройка OpenVPN-сервера ничем не отличается от описанной нами ранее, и вы можете воспользоваться любой нашей инструкцией, смотрите блок Дополнительные материалы внизу статьи.

Создание ключа и сертификата для клиента

Точно также начнем с формирования запроса на сертификат:

./easyrsa gen-req ivanov_ivan nopass

где ivanov_ivan — имя клиента, а nopass предписывает создать закрытый ключ без пароля. Мы рекомендуем давать клиентам осмысленные имена, чтобы потом не пришлось долго гадать, кто именно скрывается под псевдонимом типа client123.

На основании запроса выпустим сертификат:

./easyrsa sign-req client ivanov_ivan

В данном случае используется опция client для указания формирования клиентского сертификата, вам также потребуется явно подтвердить действие и указать пароль от закрытого ключа CA.

Для передачи на клиент вам потребуется скопировать в доступную пользователю директорию закрытый ключ, сертификат клиента и сертификат CA. В нашем случае файлы будут скопированы в домашнюю директорию пользователя andrey.

cp pki/ca.crt pki/private/ivanov_ivan.key pki/issued/ivanov_ivan.crt /home/andrey

Затем изменим их владельца, чтобы файлы можно было скопировать, подключившись к системе с правами пользователя:

chown andrey:andrey ca.crt ivanov_ivan.key ivanov_ivan.crt

Закрытый ключ пользователя также является секретным и следует исключить его передачу по открытым каналам.

Списки отзыва и отзыв сертификатов

Если вы используете OpenVPN для организации связи между офисами или доступа в интернет, то вряд ли у вас возникнет потребность в отзыве сертификата. Другое дело, если вы предоставляете удаленный доступ к корпоративной сети с домашних ПК сотрудников, подрядчикам или аутсорсерам. Здесь может возникнуть масса ситуаций, когда доступ отдельных лиц следует прекратить: сотрудник уволился, истек срок договора с подрядчиком, сменили аутсорсера и т.д. и т.п.

Прежде всего создадим список отозванных сертификатов (CRL):

./easyrsa gen-crl

Затем создадим символьную ссылку на список в директории с ключами OpenVPN:

ln -s /etc/easy-rsa/pki/crl.pem /etc/openvpn/keys/

И внесем в конфигурационный файл сервера OpenVPN следующую строку:

crl-verify keys/crl.pem

После чего сервер OpenVPN потребуется перезапустить.

Теперь отзовем какой-либо сертификат:

./easyrsa revoke horns_and_hooves

Где horns_and_hooves — имя сертификата клиента (СN), после отзыва следует повторно опубликовать список отозванных сертификатов:

./easyrsa gen-crl

Посмотреть список сертификатов можно командой:

cat pki/index.txt

openvpn-server-and-client-with-easy-rsa-3-005.pngДействующие сертификаты имеют статус V в начале строки, отозванные — R.

Как видим, работа с Easy-RSA 3 не представляет каких-либо сложностей и надеемся, что данная статья будет вам полезна.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Easy-RSA 3 Quickstart README

This is a quickstart guide to using Easy-RSA version 3. Detailed help on usage
and specific commands can be found by running ./easyrsa -h. Additional
documentation can be found in the doc/ directory.

If you’re upgrading from the Easy-RSA 2.x series, there are Upgrade-Notes
available, also under the doc/ path.

Setup and signing the first request

Here is a quick run-though of what needs to happen to start a new PKI and sign
your first entity certificate:

  1. Choose a system to act as your CA and create a new PKI and CA:

     ./easyrsa init-pki
     ./easyrsa build-ca
    
  2. On the system that is requesting a certificate, init its own PKI and generate
    a keypair/request. Note that init-pki is used only when this is done on a
    separate system (or at least a separate PKI dir.) This is the recommended
    procedure. If you are not using this recommended procedure, skip the next
    import-req step.

     ./easyrsa init-pki
     ./easyrsa gen-req EntityName
    
  3. Transport the request (.req file) to the CA system and import it. The name
    given here is arbitrary and only used to name the request file.

     ./easyrsa import-req /tmp/path/to/import.req EntityName
    
  4. Sign the request as the correct type. This example uses a client type:

     ./easyrsa sign-req client EntityName
    
  5. Transport the newly signed certificate to the requesting entity. This entity
    may also need the CA cert (ca.crt) unless it had a prior copy.

  6. The entity now has its own keypair, signed cert, and the CA.

Signing subsequent requests

Follow steps 2-6 above to generate subsequent keypairs and have the CA return
signed certificates.

Revoking certs and creating CRLs

This is a CA-specific task.

To permanently revoke an issued certificate, provide the short name used during
import:

    ./easyrsa revoke EntityName

To create an updated CRL that contains all revoked certs up to that point:

After generation, the CRL will need to be sent to systems that reference it.

Generating Diffie-Hellman (DH) params

After initializing a PKI, any entity can create DH params that needs them. This
is normally only used by a TLS server. While the CA PKI can generate this, it
makes more sense to do it on the server itself to avoid the need to send the
files to another system after generation.

DH params can be generated with:

Showing details of requests or certs

To show the details of a request or certificate by referencing the short
EntityName, use one of the following commands. It is an error to call these
without a matching file.

    ./easyrsa show-req EntityName
    ./easyrsa show-cert EntityName

Changing private key passphrases

RSA and EC private keys can be re-encrypted so a new passphrase can be supplied
with one of the following commands depending on the key type:

    ./easyrsa set-rsa-pass EntityName
    ./easyrsa set-ec-pass EntityName

Optionally, the passphrase can be removed completely with the ‘nopass’ flag.
Consult the command help for details.

Обновлено Обновлено: 04.01.2023
Опубликовано Опубликовано: 25.01.2017

OpenVPN позволяет настроить VPN-сервер как на платформе Windows Server, так и версии для рабочего компьютера (Windows 10, 8, 7).

Установка сервера
Создание сертификатов
Настройка OpenVPN
Настройка клиента
Доступ к локальной сети
Решение проблем

Установка OpenVPN Server

Переходим на официальный сайт OpenVPN и скачиваем последнюю версию программы для соответствующей версии Windows:

Скачиваем OpenVPN для Windows

Запускаем скачанный файл — нажимаем NextI Agree — и выставляем галочку EasyRSA 2/3 Certificate Management Scripts (нужен для возможности сгенерировать сертификаты):

Во время установки, ставим галочку EasyRSA 2 Certificate Management Scripts

* интерфейсы для старой версии OpenVPN и новой немного различаются. Нам нужно выбрать для установки все пункты.

… снова Next и Install — начнется установка. В процессе мастер может выдать запрос на подтверждение установки виртуального сетевого адаптера — соглашаемся (Install/Установить).

После завершения нажимаем Next — снимаем галочку Show ReadmeFinish.

Создание сертификатов

Новая версия OpenVPN позволяет создавать сертификаты на основе Easy RSA 3, старая работает на базе 2-й версии. Наши действия будут различаться в зависимости от данной версии. Рассмотрим процесс формирования сертификата с использованием как RSA3, так и RSA2.

а) Создание сертификатов с RSA 3

1. Переходим в папку установки OpenVPN (по умолчанию, C:Program FilesOpenVPN) и создаем каталог ssl.

2. После переходим в папку C:Program FilesOpenVPNeasy-rsa, переименовываем файл vars.example в vars, открываем его на редактирование и правим одну строку:

set_var EASYRSA_TEMP_DIR «$EASYRSA_PKI/temp»

* мы снимаем комментарий и добавляем temp в конце $EASYRSA_PKI. Если это не сделать, то при попытке сформировать корневого сертификата мы получим ошибку Failed create CA private key.

3. Запускаем командную строку от имени администратора:

Запуск командной строки от имени администратора

4. Переходим в каталог easy-rsa:

cd %ProgramFiles%OpenVPNeasy-rsa

5. Запускаем команду:

EasyRSA-Start.bat

Мы окажемся в среде EasyRSA Shell.

6. Инициализируем PKI:

./easyrsa init-pki

Если система вернет ошибку, выходим из оболочки EasyRSA Shell:

exit

И заходим снова:

EasyRSA-Start.bat

Мы должны увидеть:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki

7. Генерируем корневой сертификат (CA):

./easyrsa build-ca

… после ввода Enter обязательно задаем пароль дважды. На запрос ввести Common Name можно просто нажать ввод или написать свое имя:

Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

8. Создаем ключ Диффи-Хеллмана:

./easyrsa gen-dh

9. Для создания сертификата сервера необходимо сначала создать файл запроса:

./easyrsa gen-req cert nopass

* на запрос ввода Common Name просто вводим Enter.

… и на его основе — сам сертификат:

./easyrsa sign-req server cert

После ввода команды подтверждаем правильность данных, введя yes:

  Confirm request details: yes

… и вводим пароль, который указывали при создании корневого сертификата.

10. Сертификаты сервера готовы и находятся в каталоге pki. Переносим в C:Program FilesOpenVPNssl следующие файлы:

  • ca.crt
  • issued/cert.crt
  • private/cert.key
  • dh.pem

б) Создание сертификатов с RSA 2 (для старых версий OpenVPN)

1. Переходим в папку установки OpenVPN (по умолчанию, C:Program FilesOpenVPN) и создаем каталог ssl.

2. После переходим в папку C:Program FilesOpenVPNeasy-rsa, создаем файл vars.bat, открываем его на редактирование и приводим к следующему виду:

set «PATH=%PATH%;%ProgramFiles%OpenVPNbin»
set HOME=%ProgramFiles%OpenVPNeasy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=keys
set KEY_SIZE=2048
set KEY_COUNTRY=RU
set KEY_PROVINCE=Sankt-Petersburg
set KEY_CITY=Sankt-Petersburg
set KEY_ORG=Organization
set KEY_EMAIL=master@dmosk.ru
set KEY_CN=DMOSK
set KEY_OU=DMOSK
set KEY_NAME=server.domain.ru
set PKCS11_MODULE_PATH=DMOSK
set PKCS11_PIN=12345678

* в каталоге easy-rsa уже есть файл vars.bat.sample — можно переименовать и использовать его.
** значение HOME не меняем, если оставили путь установки программы по умолчанию; KEY_DIR — каталог, куда будут генерироваться сертификаты; KEY_CONFIG может быть разным — его лучше посмотреть в файле vars.bat.sample или по названию соответствующего файла в папке easy-rsa; KEY_NAME желательно, чтобы соответствовал полному имени VPN-сервера; остальные опции можно заполнить произвольно.

3. Запускаем командную строку от имени администратора:

Запуск командной строки от имени администратора

4. Переходим в каталог easy-rsa:

cd %ProgramFiles%OpenVPNeasy-rsa

4. Запускаем vars.bat:

vars.bat

5. Чистим каталоги от устаревшей информации:

clean-all.bat

* данная команда выполняется один раз, когда на сервере нет информации по ранее созданным сертификатам.

6. Снова запускаем vars.bat (после clean переопределяются некоторые переменные):

vars.bat

Переходим к созданию ключей.

7. Генерируем последовательность центра сертификации:

build-ca.bat

На все запросы нажимаем Enter.

8. Запускаем build-dh.bat (сертификат с использованием алгоритма Диффи-Хеллмана):

openssl dhparam -out keysdh.pem 2048

* команда может выполняться долго — это нормально.

9. Генерируем сертификат для сервера:

build-key-server.bat cert

* где cert — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.

10. После переносим из папки C:Program FilesOpenVPNeasy-rsakeys в C:Program FilesOpenVPNssl следующие файлы:

  • ca.crt
  • cert.crt
  • cert.key
  • dh.pem

Настройка сервера

Переходим в папку C:Program FilesOpenVPNconfig-auto (или для старой версии C:Program FilesOpenVPNconfig) и создаем файл server.ovpn. Открываем его на редактирование и приводим к следующему виду:

port 443
proto udp
dev tun
dev-node «VPN Server»
dh «C:\Program Files\OpenVPN\ssl\dh.pem»
ca «C:\Program Files\OpenVPN\ssl\ca.crt»
cert «C:\Program Files\OpenVPN\ssl\cert.crt»
key «C:\Program Files\OpenVPN\ssl\cert.key»
server 172.16.10.0 255.255.255.0
max-clients 32
keepalive 10 120
client-to-client
compress
fast-io
cipher AES-256-GCM
persist-key
persist-tun
status «C:\Program Files\OpenVPN\log\status.log»
log «C:\Program Files\OpenVPN\log\openvpn.log»
verb 4
mute 20

* где port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1194, занятые порты в Windows можно посмотреть командой netstat -a); dev-node — название сетевого интерфейса; server — подсеть, в которой будут работать как сам сервер, так и подключенные к нему клиенты.
** так как в некоторых путях есть пробелы, параметр заносится в кавычках.
*** при использовании другого порта необходимо проверить, что он открыт в брандмауэре или на время тестирования отключить его.

В сетевых подключениях Windows открываем управление адаптерами — TAP-адаптер переименовываем в «VPN Server» (как у нас указано в конфигурационном файле, разделе dev-node):

Переименовываем сетевой интерфейс в Windows

Теперь открываем службы Windows и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:

Настраиваем автозапуск OpenVpnService и включаем ее

Если служба в запущенном состоянии, то перезапускаем ее.

Ранее переименованный сетевой интерфейс должен включиться:

Включенный TAP адаптер

VPN-сервер работает. Проверьте, что сетевой адаптер VPN Server получил IP 172.16.10.1. Если он получает что-то, на подобие, 169.254…, выключаем сетевой адаптер — перезапускаем службу OpenVpnService и снова включаем сетевой адаптер.

Если в нашей системе включен брандмауэр, необходимо открыть порт для OpenVPN. Это быстрее всего сделать из командной строки — открываем ее от администратора и вводим:

netsh advfirewall firewall add rule name=»ALLOW OpenVPN» dir=in action=allow protocol=UDP localport=443

* где 443 — наш порт, который мы решили задействовать под OpenVPN; UDP — протокол, который мы настроили в конфигурационном файле сервера.

Настройка клиента

На сервере

На сервере генерируем сертификат для клиента. Для этого сначала чистим файл index.txt в папке C:Program FilesOpenVPNeasy-rsakeys.

Затем запускаем командную строку от имени администратора:

Запуск командной строки от имени администратора

Переходим в каталог easy-rsa:

cd %ProgramFiles%OpenVPNeasy-rsa

Далее наши действия зависят от версии RSA.

а) Создание сертификатов с RSA 3

Запускаем команду:

EasyRSA-Start.bat

Мы окажемся в среде EasyRSA Shell.

Создаем клиентский сертификат:

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

Мы должны увидеть запрос на подтверждение намерения выпустить сертификат — вводим yes:

  Confirm request details: yes

* в данном примере будет создан сертификат для client1.

После вводим пароль, который указывали при создании корневого сертификата.

Теперь из папки pki копируем файлы:

  • issued/client1.crt
  • private/client1.key
  • ca.crt
  • dh.pem

… и переносим их на клиентский компьютер.

б) Создание сертификатов с RSA 2 (для очень старых версий OpenVPN)

Запускаем vars.bat:

vars.bat

И генерируем сертификат первого пользователя:

build-key.bat client1

* на все запросы наживаем Enter, кроме Common Name — в данном поле вводим имя клиента (в нашем случае, просто client1). В конце подтверждаем введенную информацию — y.
** На каждого клиента нужно сгенерировать свой сертификат, в противном случае, им будет присваиваться один и тот же IP-адрес, что будет приводить к конфликту.

Получиться, что-то на подобие:

Country Name (2 letter code) [RU]:
State or Province Name (full name) [Sankt-Petersburg]:
Locality Name (eg, city) [Sankt-Petersburg]:
Organization Name (eg, company) [Organization]:
Organizational Unit Name (eg, section) [DMOSK]:
Common Name (eg, your name or your server’s hostname) [DMOSK]:client1
Name [server.domain.ru]:
Email Address [master@dmosk.ru]:

По умолчанию, для Common Name будет подставляться значение из vars.bat — но с ним сертификат не будет создаваться. Необходимо при создании каждого ключа подставлять значение, равное имени сертификата. Например, как выше — подставлено client1.

Теперь из папки keys копируем файлы:

  • client1.crt
  • client1.key
  • ca.crt
  • dh.pem

… и переносим их на клиентский компьютер.

На клиенте

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Скачиваем OpenVPN для Windows

* по сути, это тот же файл, который скачивался для сервера.

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:Program FilesOpenVPNconfig. И копируем в нее сертификаты, которые перенесли с сервера.

Теперь открываем блокнот от имени администратора и вставляем следующие строки:

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
compress
fast-io
cipher AES-256-GCM
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
float
keepalive 10 120
persist-key
persist-tun
verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы. Для боевой среды это будет внешний адрес.

Сохраняем файл с именем config.ovpn в папке C:Program FilesOpenVPNconfig.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Запуск подключения openvpn-клиента к серверу

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Доступ к локальной сети

По инструкции выше мы сможем получить доступ только к серверу, на котором установлен OpenVPN. Для получения доступа ко всей внутренней сети, выполним следующие шаги.

1. Настройка реестра

Для включения IP маршрутизации в Windows необходимо в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters найти параметр IPEnableRouter и задать ему значение 1. Это можно сделать в утилите редактирования реестра (regedit) или командой:

reg add «HKLMSYSTEMCurrentControlSetServicesTcpipParameters» /v IPEnableRouter /t REG_DWORD /d 1 /f

* командную строку необходимо запускать от администратора.

2. Настройка OpenVPN Server

В конфигурационный файл OpenVPN добавим:

push «route 172.16.10.0 255.255.255.0»
push «route 192.168.2.0 255.255.255.0»

* где 172.16.10.0 — VPN сеть; 192.168.2.0 — локальная сеть, в которую необходимо «попасть» пользователям openvpn.

При необходимости использовать DNS внутренней сети также добавим:

push «dhcp-option DNS 192.168.0.15»
push «dhcp-option DNS 192.168.0.16»
push «dhcp-option DOMAIN dmosk.local»

* где 192.168.0.15 и 192.168.0.16 — внутренние DNS-серверы; dmosk.local — домен, который будет добавляться к узлам, обращение к которым идет по неполному имени.

Если нам нужно, чтобы все запросы клиента (в том числе, Интернет) ходили через сервер OpenVPN, добавляем:

push «redirect-gateway def1»

* в таком случае, нам не обязательно добавлять push route, который мы использовали выше.

Перезагружаем службу OpenVpnService.

3. Разрешаем доступ к локальной сети

Заходим в управление сетевыми подключениями (Панель управленияСеть и ИнтернетСетевые подключения). Кликаем правой кнопкой мыши по адаптеру локальной сети — Свойства:

Открываем свойства сетевого адаптера для локальной сети

На вкладке Доступ ставим галочку Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера:

Скачиваем OpenVPN для Windows

… и сохраняем настройки.

Возможные проблемы

Большая часть проблем решается при помощи логов, которые находятся в папке C:Program FilesOpenVPNlog. Уровень детализации лога контролируется параметром verb в конфигурационном файле сервера или клиента.

Также возможны следующие часто возникающие проблемы:

  1. Проблема: клиент постоянно пытается подключиться к серверу, но соединения не происходит или подключение зависает.
    Причина: сервер блокирует подключения по настроенному порту VPN (в нашем примере, 443).
    Решение: на сервере необходимо добавить 443 порт в исключения брандмауэра или отключить последний.
     
  2. Проблема: при попытке подключиться к серверу выскакивает ошибка «Не удалось подключиться к config».
    Причина: ошибка в настройках.
    Решение: перепроверьте каждую строчку файла конфигурации. Проверьте наличие всех файлов, на которые ссылаетесь в настройках.
     
  3. Проблема: клиенты получают одинаковые IP-адреса.
    Причина: подключение выполняется под одним и тем же пользователем.
    Решение: сервер выдает одинаковые адреса одинаковым клиентам. Необходимо настроить авторизацию на сервере и выдать каждому клиенту индивидуальные настройки.
     
  4. Проблема: соединение происходит, но через несколько минут связь прерывается.
    Причина: дублирование IP-адресов.
    Решение: данная проблема описана выше (пункт 3).

Возможно, Вы это тоже захотите попробовать

  1. Настройка OpenVPN-сервера с аутентификацией через LDAP (Active Directory) на Ubuntu Server
  2. Установка и настройка OpenVPN на Linux CentOS 7

В роутерах серии RTU есть возможность использования защищенного соединения через частную виртуальную сеть, под названием OpenVPN

Процесс настройки и конфигурирования данного пакета для рядового пользователя может сопровождаться достаточно большими трудностями из-за отсутствия необходимых знаний.

Практически всю часть конфигурирования  можно произвести через WEB интерфейс, но некоторые элементы все же придется произвести через консоль!

Что такое OpenVPN и для чего он необходим можно ознакомиться в статье: OpenVPN

В данной статье мы ознакомимся с подготовительной частью, это генерация сертификатов и ключей шифрования для защиты нашего канала передачи.


1. Генерация сертификатов и ключей на Windows 

Для генерации сертификатов и ключей шифрования на ОС Windows необходимо установить само приложение OpenVPN.

Скачать последнюю версию OpenVPN для ОС Windows можно по ссылке: https://openvpn.net/community-downloads/.

После скачивания и установки в указанную Вами папку в ней будет список файлов, по умолчанию OpenVPN устанавливается в директорию C:Program FilesOpenVPN.

Для генерации ключей будем использовать easy-rsa. Необходимо запустить командную строку от имени администратора и перейти в директорию с папкой easy-rsa. В примере используем команду для перехода в папку по умолчанию, у Вас данный путь может отличаться.

cd C:Program FilesOpenVPNeasy-rsa 

1.1 Запускаем файл init-config.bat

C:Program FilesOpenVPNeasy-rsa>init-config.bat                
C:Program FilesOpenVPNeasy-rsa>copy vars.bat.sample vars.bat  
Скопировано файлов:         1.                                   

В папке появится файл vars.bat, открываем его текстовым редактором, нас интересуют строчки в самом конце, их нужно заполнить.

Мы подставили свои параметры, у Вас данные параметры будут другие.

set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=TELEOFIS
set KEY_EMAIL=support@teleofis.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=server
set PKCS11_MODULE_PATH=server
set PKCS11_PIN=12345

Там где написано server, не трогаем. Сохраняем файл.

1.2 Редактируем файл openssl-1.0.0.cnf 

От имени администратора открываем блокнот, нам необходимо отредактировать файл openssl-1.0.0.cnf. По умолчанию данный файл находится в директории C:Program FilesOpenVPNeasy-rsa, у Вас данный путь также может отличаться.

Нам необходимо найти строчку: 

default_days = 365

Далее необходимо заменить значение 365 на 3650, в более новых версиях OpenVPN значение 3650 может быть уже установлено по умолчанию.

1.3 Генерируем ключи и сертификаты

Подаем последовательно в консоль команды:

vars

clean-all

В ответ должно прийти

Скопировано файлов: 1.
Скопировано файлов:         1.

Если, мы это видим, значит все хорошо, продолжаем…

1.4 Создаем центр сертификации CA

Подаем команду:

build-ca

На данном моменте в некоторых случаях может возникнуть ошибка:

C:Program FilesOpenVP

easy-rsa>build-ca

"openssl" не является внутренней или внешней

командой, исполняемой программой или пакетным файлом.

Для устранения ошибки открываем файл vars.bat от имени администратора и ищем строку 

rem set "PATH=%PATH%;C:Program FilesOpenVPNbin"

Удаляем rem, после чего данная строка должна принять вид:

set "PATH=%PATH%;C:Program FilesOpenVPNbin"

Сохраняем, далее снова подаем последовательно команды

vars

clean-all

В ответ должно прийти

Скопировано файлов: 1.
Скопировано файлов: 1.

Подаем команду:

build-ca

При генерации основного сертификата в консоли будут отображаться вопросы. Просто нажимаем Enter, т.к. все эти параметры мы ввели в файле vars.bat

Нажимаем Enter до тех пор, пока не отобразиться строка приглашения

C:Program FilesOpenVPNeasy-rsa

1.5 Создаем ключ Диффи-Хелмана

Данный шаг не является обязательным, ключ Диффи-Хелмана необходим для реализации одноименного протокола 

позволяющего использовать небезопасный канал для получения общего секретного ключа. Этот ключ будет в дальнейшем использоваться для защищенного обмена данными с помощью алгоритмов симметричного шифрования.

В применении к OpenVPN файл Диффи-Хелмана нужен для обеспечения защиты трафика от расшифровки, если ключи были похищены. Здесь имеется в виду тот трафик, который был записан и сохранен еще до похищения ключей.

Файл Диффи-Хелмана создается на сервере OpenVPN.

Для создания ключа необходимо подать команду:

build-dh

1.6 Создаем сертификат и ключ сервера

Подаем команду:

     build-key-server server

На вопросы нажимаем Enter, но не торопимся, в самом конце будет задано два вопроса

Sign the certificate?

1 out of 1 certificate requests certified, commit?

На оба эти вопроса отвечаем Y

1.7 Создаем сертификат и ключ клиента

Подаем команду:

build-key client 

Также не торопимся с ответами, как только увидим строку «Common Name (eg, your name or your server’s hostname)» нужно ответить client.

В самом конце также будут два вопроса, отвечаем также Y

Причем: для каждого клиента, нужно будет создать отдельные ключи и называть их client1, client2 или как-то иначе, все зависит от Вашего воображения. 

Например:

build-key client1

build-key office1

На этом создание файлов сертификатов и ключей завершено.

Все файлы будут лежать в папке C:Program FilesOpenVPNeasy-rsakeys


2. Генерация сертификатов и ключей на Linux 

Генерация сертификатов и ключей будет осуществляться на ОС Ubuntu Linux 20.04. 

Для других систем на базе Linux, некоторые команды могут отличаться!

Первоначально необходимо обновить все пакеты ОС Linux, подаем в консоль команду:

sudo apt-get update

sudo apt-get upgrade

Установим пакет zip, если он не был установлен ранее:

sudo apt install zip

2.1  Установка утилиты Easy-RSA

Создадим нового пользователя ca и переведем его в домашний каталог:

sudo adduser ca

В ответ система выведет информацию и попросит ввести пароль:

Adding user 'ca' ...
Adding new group 'ca' (1002) ...
Adding new user 'ca' (1002) wuth group 'ca' ...
Creating home directory '/home/ca' ...
Coping files from '/etc/skel/' ...
New password:

Вводим пароль, затем еще раз его повторяем, если все хорошо, система выведет следующую информацию:

passwd: password updated successfully
Changing the user information for ca
Enter the new value or press ENTER for the default
Full name []:
Room number []:
Work phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

Нажимаем Y, пользователь успешно создан.

Делаем loging под пользователя ca:

     su ca

cd

Далее необходимо загрузить дистрибутив программы утилитой wget:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip 

Распаковываем архив:

$ unzip master.zip 

2.2 Создаем инфраструктуру публичных PKI, создание центра сертификации СА:

Создадим инфраструктуру публичных ключей (Public Key Infrastructure, PKI): 

cd /home/ca/easy-rsa-master/easyrsa3 

$ ./easyrsa init-pki 

В ответ система оповестит, что PKI создан успешно:

init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/ca/easy-rsa-master/easyrsa3/pki 

Далее создаем удостоверяющий центр сертификации:

$ ./easyrsa build-ca 

В ответ система выдаст сообщение следующего вида:

Generating RSA private key, 2048 bit long modulus (2 primes)
..................................................................................+++++
......................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:ca

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/ca/easy-rsa-master/easyrsa3/pki/ca.crt

Пароль будет защищать приватный ключ центра сертификации. Этот пароль потребуется каждый раз, когда Вы будете подписывать сертификаты для серверов и клиентов OpenVPN.

В конечном итоге у нас создадутся в системе два файла, которые нам в дальнейшем пригодятся: ca.crt и ca.key. Данные файлы находятся в директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key 
/home/ca/easy-rsa-master/easyrsa3/pki/ca.crt 

Файл ca.key является секретным, его нельзя передавать на другие узлы Вашей сети.

Файл ca.crt открытый, его необходимо передавать на узлы серверов и клиентов сети OpenVPN. 

2.3 Создаем список отзывов сертификатов

Если сотрудник уволился из компании и у него есть доступ в сети VPN компании, нам необходимо закрыть этот доступ путем отзыва сертификата CRL. Для создания сертификата проделаем следующее:

cd /home/ca/easy-rsa-master/easyrsa3 
$ ./easyrsa gen-crl 

Система запросит пароль для доступа к закрытому ключу ca.key. Список отзыва сертификатов будет доступен в файле crl.pem:

/home/ca/easy-rsa-master/easyrsa3/pki/crl.pem 

Данный сертификат передается OpenVPN серверу. Также в конфиге сервера должен быть прописан путь до crl.pem, как правило данное правило прописывается в server.conf.

crl-verify /usr/local/etc/openvpn/crl.pem

Для блокировки доступа пользователю, заблокируем ранее выданный сертификат, используя команду:

$ ./easyrsa revoke test 

В таблице ниже описана структура каталога PKI:

Файл или каталог

Описание

ca.crt Сертификат удостоверяющего центра, передается как на сервер OpenVPN, так и на клиент OpenVPN
crl.pem Список отзыва сертификатов CRL
issued Каталог с сертификатами, созданными центром сертификации СА
private Каталог с секретными ключами
Reqs Каталог запросов на сертификаты

2.4 Установка OpenVPN, создание каталога для конфигурации клиентов

Процесс создания сервера OpenVPN включает в себя установку пакета OpenVPN, создание сертификатов и ключей, а также подготовку рабочей конфигурации.

Установим пакет OpenVPN:

$ sudo apt-get install openvpn

Первоначально необходимо подготовить файлы конфигурации openssl.cnf и server.conf. Первый файл определяет конфигурацию OpenSSL, второй файл определяет конфигурацию сервера OpenVPN.

В комплекте с утилитой Easy-RSA поставляется пример файла конфигурации OpenSSL. Если Вы делали все действия по данному гайду, данный файл будет находиться по пути:

/home/ca/easy-rsa-master/easyrsa3/openssl-1.0.cnf 

По умолчанию файл openssl-1.0.cnf содержит в себе следующую информацию:

# For use with Easy-RSA 3.0+ and OpenSSL or LibreSSL

####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section

####################################################################
[ CA_default ]

dir             = $ENV::EASYRSA_PKI     # Where everything is kept
certs           = $dir                  # Where the issued certs are kept
crl_dir         = $dir                  # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
new_certs_dir   = $dir/certs_by_serial  # default place for new certs.

certificate     = $dir/ca.crt           # The CA certificate
serial          = $dir/serial           # The current serial number
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/ca.key   # The private key
RANDFILE        = $dir/.rand            # private random number file

Чтобы запуск сервера OpenVPN прошел успешно, необходимо создать каталоги, в которых будут храниться сертификаты и ключи для сервера и клиентов OpenVPN:

Создадим каталог для конфигурации клиентов:

$ sudo mkdir /etc/openvpn/ccd

2.5 Подготовка сертификатов и ключей для сервера OpenVPN

Для организации OpenVPN нам потребуются файлы, перечисленные в таблице ниже:

Файл Описание
dh.pem Ключ Диффи-Хелмана, используется для защиты трафика от расшифровки, необходимо загружать как на клиент, так и на сервер (опционально)
ca.crt Сертификат удостоверяющего центра CA, необходимо загружать на сервер и клиент OpenVPN
server.crt Сертификат сервера OpenVPN, необходимо загружать на сервер OpenVPN
server.key Приватный ключ сервера, секретный, необходимо загружать на сервер OpenVPN
crl.pem Cписок отзыва сертификатов CRL, необходимо загружать на сервер (опционально)
ta.key Ключ HMAC для дополнительной защиты от DoS-атак и флуда (опционально)
client.crt Сертификат клиента OpenVPN, необходимо загружать на клиент OpenVPN
client.key Приватный ключ клиента, секретный, необходимо загружать на клиента OpenVPN

Так как центр сертификации мы уже сгенерировали, на следующем этапе сгенерируем сертификат и приватный ключ для сервера OpenVPN.

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-req server

В процессе создания, система запросит пароль, а также имя Common Name для сервера OpenVPN:

Generating a RSA private key
.+++++
.......+++++
writing new private key to '/home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2258.QFUIV0/tmp.WadIoG'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:server

Keypair and certificate request completed. Your files are:
req: /home/ca/easy-rsa-master/easyrsa3/pki/reqs/server.req
key: /home/ca/easy-rsa-master/easyrsa3/pki/private/server.key

Если же Вы хотите создать данные файлы без защиты паролем, используем команды:

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-req server nopass 

Таким образом, в системе создадутся два файла: server.req и server.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо хранить на сервере OpenVPN.

Следующим шагом необходимо подписать данный сертификат (server.req) на стороне удостоверяющего центра СА:

$ ./easyrsa sign-req server server

При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем).  Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата server.req. После успешного создания сертификата, система также уведомит об этом.

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2714.b10rbG/tmp.y76kMH
Enter pass phrase for /home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct 19 13:09:57 2022 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/ca/easy-rsa-master/easyrsa3/pki/issued/server.crt

Отлично! Теперь необходимо загрузить на сервер OpenVPN сертификат server.crt, который был только что создан, а также ключ server.key.

По умолчанию и ключ находятся в следующих директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/issued/server.crt  
/home/ca/easy-rsa-master/easyrsa3/pki/private/server.key

2.6 Подготовка сертификатов и ключей для клиента OpenVPN

Генерировать сертификат будем под пользователем ca:

su ca

cd /etc/home/ca/easy-rsa-master/easy-rsa3

./easyrsa gen-req client nopass

Если к защите данных предъявляются повышенные требования, сертификат можно создать с паролем:

./easyrsa gen-req client

Далее система попросит ввести Common Name, я назову данный сертификат client1, после генерации ключа система дополнительно оповестит нас об этом:

Generating a RSA private key
....................................................................+++++
........................+++++
writing new private key to '/home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2221.ChEcsT/tmp.gWTNPO'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client]:client1

Keypair and certificate request completed. Your files are:
req: /home/ca/easy-rsa-master/easyrsa3/pki/reqs/client.req
key: /home/ca/easy-rsa-master/easyrsa3/pki/private/client.key

Таким образом, в системе создадутся два файла: client.req и client.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо будет в дальнейшем загрузить на клиент OpenVPN.

Далее необходимо только что созданный сертификат client.req подписать в удостоверяющем центре СА:

./easyrsa sign-req client client

При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем).  Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата client.req. После успешного создания сертификата, система также уведомит об этом.

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 825 days:

subject=
    commonName                = client1


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2951.3DJoCJ/tmp.AqABm4
Enter pass phrase for /home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client1'
Certificate is to be certified until Oct 20 07:26:18 2022 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/ca/easy-rsa-master/easyrsa3/pki/issued/client.crt

Отлично! Теперь необходимо загрузить на клиент OpenVPN сертификат client.crt, который был только что создан, а также ключ client.key.

По умолчанию и ключ находятся в следующих директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/private/client.key
/home/ca/easy-rsa-master/easyrsa3/pki/issued/client.crt

2.7  Создаем ключ Диффи-Хелмана

 Для генерации ключа Диффи-Хелмана будем использовать команду:

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-dh

Создание ключа Диффи-Хелмана может занять достаточно продолжительное время, по окончании данного процесса система оповестит об этом:

DH parameters of size 2048 created at /home/ca/easy-rsa-master/easyrsa3/pki/dh.pem

Данный ключ находится в директории:

/home/ca/easy-rsa-master/easyrsa3/pki/dh.pem

2.8 Создание статического ключа HMAC

Для создания ключа HMAC используется команда openvpn с опциями —genkey и —secret. Данный ключ необходимо создавать не от обычного пользователя, а от пользователя с правами администратора.

cd /etc/openvpn

su teleofis

Система попросит ввести пароль от админской учетки, после ввода пароля необходимо выдать себе права на владение:

sudo chown -R teleofis:teleofis .

openvpn —genkey —secret ta.key

Ключ сгенерирован, он будет находиться в директории:

/etc/openvpn/ta.key

На этом моменте создание сертификатов закончено, далее переходим к следующей статье:
OpenVPN режим мультиклиента: Часть 2 — Настройка RTU сервера (tun)


Сопутствующие статьи:
Как подключиться к роутеру RTU?

Описание WEB-интерфейса роутера RTU


Дополнительная информация: 

Wiki на GitHub

Содержание

  1. Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
  2. Статьи по настройке и администрированию Windows/Linux систем
  3. OpenVPN. Генерация PKI сертификатов
  4. 3. PKI схема
  5. 3.1 Подготовка корневого центра сертификации
  6. 3.2 Создание рутового CA сертификата
  7. 3.3 Создание серверного OpenVPN сертификата
  8. 3.4 Создание клиентских OpenVPN сертификатов
  9. 3.5 Список отозванных сертификатов
  10. Как создать pki с помощью easy-rsa?
  11. OpenVPN 2.5.1 сервер на Windows
  12. Установка OpenVPN Server
  13. Создание ключей и сертификатов
  14. Настройка OpenVPN сервера
  15. Запуск OpenVPN сервера
  16. Настройка firewall
  17. Настройка OpenVPN клиента на ПК Windows
  18. Настройка OpenVPN клиента на смартфоне Android
  19. Подробная инструкция по OpenVPN v2.3.8 на Windows server 2008R2
  20. Настройка сервера
  21. Настройка клиента

Системное администрирование и мониторинг Linux/Windows серверов и видео CDN

Статьи по настройке и администрированию Windows/Linux систем

OpenVPN. Генерация PKI сертификатов

easy rsaКак настраивать OpenVPN сервер в режиме point-to-point и client/server мы научились в предыдущих статьях. Для point-to-point режима мы использовали shared key. В режиме client/server нам были нужны сертификаты и ключи для OpenVPN сервера и клиентов. В данной статье пойдет речь о генерации инфраструктуры публичных ключей (PKI) и сертификатов используя Easy-RSA утилиту.

3. PKI схема

Немного расскажу о PKI структуре (рисунок 3.1).

pki1
Рисунок 3.1 – Структура PKI

Во главе всего дерева сертификатов и ключей должен быть корневой центр сертификации (CA). К примеру, можно посмотреть в браузере информацию о цепочке SSL сертификатов googl-a.

pki2

Рисунок 3.2 – Цепочка сертификатов google

Здесь во главе дерева стоит GeoTrust Global центр сертификации (корневой). Далее идет промежуточный Google Internet Authority G2 сертификат и завершает цепочку клиентский (доменный) сертификат. OpenVPN PKI структура будет похожей. Во главе должен быть корневой центр сертификации (Root CA) с файлом отзывов цифровых сертификатов (CRL). На CA сервере будут генерироваться клиентские и серверные ключи. Приступаем к практике.

3.1 Подготовка корневого центра сертификации

Для начала нужно скачать Easy-RSA утилиту, которую мы будем использовать для генерации всей инфраструктуры ключей.

Теперь переходим в распакованную директорию и редактируем главный файл конфигурации, в котором будет информация о организации.

Все структура ключей будет находиться по пути «$PWD/corp«, куда нужно скопировать папку со всеми x509 типами сертификатов и openssl конфигурационный файл.

Далее нужно инициализировать PKI исходя из введенных данных для последующей генерации сертификатов.

3.2 Создание рутового CA сертификата

Проверяем информацию по сертификату

Теперь можно подписывать клиентские сертификаты, но перед этим нужно создать CRL для отзывов сертификатов.

Проверяем список отозванных сертификатов.

Как видим, мы еще не отозвали никаких сертификатов.

3.3 Создание серверного OpenVPN сертификата

Создаем серверный ключ подписанный CA ключем.

Смотрим информацию о ключе.

Теперь у нас есть ключ и сертификат для OpenVPN сервера: vpn-server.crt и vpn-server.key.

3.4 Создание клиентских OpenVPN сертификатов

У каждого клиентского сертификата есть Common Name(CN), которое используются OpenVPN для применения дополнительных клиентских настроек (CCD). Создаем первый клиентский ключ.

Теперь создадим еще два клиентских ключа.

Мы создали ключи и сертификаты для CA, OpenVPN сервера и клиентов.

3.5 Список отозванных сертификатов

Если кто-то потерял свой секретный ключ или сертификат, или же он был скомпрометирован – эго нужно отозвать. Это можно легко сделать используя easy-RSA.

После этих действий у нас обновиться CRL файл, который нужно прописать в OpenVPN конфигурации сервера (директива crl-verify).

Теперь смотрим какие у нас есть отозванные сертификаты.

Как видим, мы отозвали сертификат с Serial Number: 02, т.е. alex-it. Serial Number было видно, когда мы смотрели информацию по ключам используя openSSL. Вот и все.

Источник

Как создать pki с помощью easy-rsa?

Установил на федору openvpn:
sudo yum install openvpn
Установилась версия openvpn 2.3.14

В официальном HOWTO следующим шагом было создание PKI
для этого необходимо зайти в каталог easy-rsa, оторый
находится в /usr/share/doc/packages/openvpn или /usr/share/doc/openvpn, отредактирновать файл vars, и выполнить файл build-ca.

Но первый каталог не существует, а во втором нет того, чего надо:

Поиск по файловой системе чего-то с именами этих файлов, а также каталога easy-rsa ничего не дал.

Очемидным для меня решением проблемы было:
yum install easy-rsa
Успещно!
Появились 3 папки с таким содержимым:

В файле README.quickstart.md оказалась короткая, малоинформативная инструкция. Для большей информации предлагалось выполнить easyrsa help.

бинарник easyrsa я нашел в папке /usr/share/easy-rsa/3
НО запуск его с командой help предлагает запустить с командой help (WTF?)

easy-rsa можно не ставить, это просто набор скриптов. Возьмите их в репе OpenVPN https://github.com/OpenVPN/easy-rsa/archive/master.zip:

Затем
Перейти в каталог easyrsa3 и объявить для него переменные:

Инициализировать PKI (Public Key Infrastructure — Инфраструктура открытых ключей):
./easyrsa init-pki
Создать корневой сертификат. Обязательно ввести сложный пароль и Common Name сервера, например my vpn server:
./easyrsa build-ca
Создать ключи Диффи-Хелмана:
./easyrsa gen-dh
Создать запрос на сертификат для сервера OVPN. Обращаю внимание, что сертификат будет незапаролен (параметр nopass), иначе при каждом старте OpenVPN будет запрашивать этот пароль:
./easyrsa gen-req vpn-server nopass
Создать сам сертификат сервера OVPN:
./easyrsa sign-req server vpn-server
Скопировать полученные ключи в рабочий каталог openvpn:

Создать «HMAC firewall» для защиты от DoS аттак и флуда UDP порта:

Источник

OpenVPN 2.5.1 сервер на Windows

me2

openvpn

Вчера обнаружил, что на мой домашний сервер пытаются подобрать пароль к RDP. Спросил наших безопасников с работы, да, порт сканировали, но пароль подбирают не они. Надо что-то делать с этим, и я даже знаю что.

Ударим шифрованием по злобным брутфорсерам! Ставим OpenVPN 2.5.1 сервер на Windows Server 2016.

Установка OpenVPN Server

Скачиваем дистрибутив для установки OpenVPN:

OpenVPN 2.5.1 1 0

Доступна версия OpenVPN 2.5.1. Скачиваю Windows 64-bit MSI installer, файл OpenVPN-2.5.1-I601-amd64.msi.

OpenVPN 2.5.1 2

Запускаем инсталлятор OpenVPN.

OpenVPN 2.5.1 3

Открывается мастер установки, предлагают выбрать тип установки, естественно, нажимаем Customize. Установка по умолчанию нас не устроит.

OpenVPN 2.5.1 4

OpenVPN GUI отключаю. Мне нужно, чтобы OpenVPN на сервере работал автоматически.

OpenVPN 2.5.1 39

А OpenVPN Service, наоборот, включаю. OpenVPN у меня будет работать как служба Windows.

Документацию и примеры конфигурации оставляю. Конфигурационные примеры будут использоваться в качестве шаблонов.

OpenVPN 2.5.1 5

Начиная с версии OpenVPN 2.5 появилась поддержка драйвера WinTUN от разработчиков WireGuard. Говорят, что работает быстрее чем TAP-Windows6. Поэтому драйвер TAP-Windows6 отключаю и включаю Wintun.

ПРИМЕЧАНИЕ: для включения драйвера Wintun необходимо в файле конфигурации сервера включить параметр:

OpenVPN 2.5.1 6

Утилиты OpenSSL EasyRSA 3 Certificate Management Scripts включаю. Install Now.

OpenVPN 2.5.1 7

Начинается процесс установки OpenVPN.

OpenVPN 2.5.1 8

Установка успешно завершена. Close.

OpenVPN 2.5.1 9

Установка выполнена в директорию C:Program FilesOpenVPN.

OpenVPN 2.5.1 32

После установки у нас появляется новый сетевой адаптер Wintun Userspace Tunnel.

OpenVPN 2.5.1 30

Создание ключей и сертификатов

Запускаем командную строку под администратором и переходим в рабочую директорию C:Program FilesOpenVPNeasy-rsa.

В этой папке есть всё необходимое для генерации сертификатов.

OpenVPN 2.5.1 10

Для работы в Windows нас интересует файл EasyRSA-Start.bat.

OpenVPN 2.5.1 11

OpenVPN 2.5.1 12

Запускается оболочка EasyRSA Shell.

Инициализируем новую конфигурацию:

OpenVPN 2.5.1 13

Появляется новая директория C:Program FilesOpenVPNeasy-rsapki.

OpenVPN 2.5.1 14

Генерируем ключ и сертификат центра сертификации. Внимание, сейчас мы наступим на грабли, исправим ошибку и снова вернёмся к генерации файлов для центра сертификации.

Нас попросят для раза ввести пароль. Придумываем и вводим.

OpenVPN 2.5.1 15

Failed create CA private key

Исправим этот баг. Мне не совсем понятно, почему нельзя было всё сделать сразу по-человечески, чтобы люди не встречали эту ошибку. Копируем файл C:Program FilesOpenVPNeasy-rsavars.example, называем копию C:Program FilesOpenVPNeasy-rsavars.

OpenVPN 2.5.1 16

Редактируем C:Program FilesOpenVPNeasy-rsavars. В данном файле можно много чего прописать, но я не буду на этом сейчас останавливаться подробно. Находим строку:

OpenVPN 2.5.1 17

Собственно, ошибка и заключалась в том, что оболочка по какой-то причине не могла создать временный файл.

Генерируем ключ и сертификат центра сертификации:

Нас попросят для раза ввести пароль. Придумываем и вводим. После нас просят указать Common Name для центра сертификации, указываю «internet-lab.ru».

OpenVPN 2.5.1 18

Операция проходит успешно.

OpenVPN 2.5.1 19

Создаётся сертификат центра сертификации:

Сертификат создаётся на 10 лет, это значение можно переопределить в файле vars.

OpenVPN 2.5.1 20

И ключ центра сертификации:

Ключ секретный, никому не показываем. он будет храниться на сервере.

Генерируем ключ и запрос на сертификат сервера, назовём сервер именем «server«:

Нас просят указать Common Name для сервера, указываю «internet-lab.ru».

OpenVPN 2.5.1 21

Операция проходит успешно.

OpenVPN 2.5.1 23

Создаётся запрос на сертификат сервера:

OpenVPN 2.5.1 22

Ключ секретный, никому не показываем. он будет храниться на сервере.

Для создания сертификата сервера нужно подписать запрос на сертификат:

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

OpenVPN 2.5.1 24

Создаётся сертификат сервера:

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

OpenVPN 2.5.1 25

Теперь создадим клиентский сертификат. По хорошему клиентский ключ следует запаролить, чтобы исключить утечку при передаче. Для этого есть несколько способов.

Первый

На клиентской машине генерируем запрос на сертификат клиента и ключ без пароля:

Второй

а машине с CA генерируем сертификат клиента и ключ с паролем:

Третий

Но поскольку я генерирую ключ сам для себя, то воспользуюсь небезопасным третьим способом.

Генерируем ключ и запрос на сертификат клиента, назовём клиента именем «client«:

Нас просят указать Common Name для клиента, указываю «v.pupkin».

OpenVPN 2.5.1 26

Операция проходит успешно.

OpenVPN 2.5.1 28

Создаётся запрос на сертификат клиента:

OpenVPN 2.5.1 27

Для создания сертификата клиента нужно подписать запрос на сертификат:

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

OpenVPN 2.5.1 29

Создаётся сертификат клиента:

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

OpenVPN 2.5.1 67

Генерируем ключ Диффи-Хеллмана:

OpenVPN 2.5.1 33

Операция займёт некоторое время.

OpenVPN 2.5.1 34

OpenVPN 2.5.1 68

Я на сервере собираюсь использовать tls-auth для дополнительной проверки целостности, это обеспечит дополнительный уровень безопасности протокола SSL/TLS при создании соединения:

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ tls-auth. Для этого запускаем командную строку под администратором и выполняем:

OpenVPN 2.5.1 35

В папке C:Program FilesOpenVPNbin создаётся файл ta.key.

OpenVPN 2.5.1 36

Переносим его в папку C:Program FilesOpenVPNeasy-rsapki.

OpenVPN 2.5.1 37

Минимальный набор сертификатов сгенерирован.

Настройка OpenVPN сервера

Создадим конфигурационный файл сервера C:Program FilesOpenVPNconfig-autoserver.ovpn:

OpenVPN 2.5.1 38

Открываем блокнотом и редактируем:

Лучше изучить конфигурационный файл, я предлагаю свой вариант конфига:

У меня здесь указаны пути к ключам и сертификатам, используется порт TCP 1194. Параметр duplicate-cn позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях. Я использую для того, чтобы с помощью одного и того же сертификата подключиться к OpenVPN серверу и с клиентской машины и со смартфона. Параметр windows-driver wintun подключает использование драйвера WinTun. И что им стоило этот параметр указать в примере конфигурации? Остальное по умолчанию.

ВНИМАНИЕ: в конфигурационных файлах допускается в путях использование прямого слеша:

ca «C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt»

или двойного обратного слеша:

ca «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»

Запуск OpenVPN сервера

Переходим к службам:

openvpn srv win 36

Находим службу OpenVPNService.

OpenVPN 2.5.1 40

Настраиваем на автоматический запуск при загрузке сервера.

openvpn srv win 38

Запускаем (перезапускаем) службу.

Согласно настройкам сервера в папке C:Program FilesOpenVPNlog должны появиться логи. Это один из инструментов администратора OpenVPN сервера.

OpenVPN 2.5.1 41

Активировался сетевой адаптер OpenVPN Wintun.

OpenVPN 2.5.1 65

Согласно настройкам сервера IP адрес 10.8.0.1.

OpenVPN 2.5.1 69

Проверяем поднялся ли порт tcp 1194:

Порт должен прослушиваться.

OpenVPN 2.5.1 59

Настройка firewall

Теперь нужно настроить firewall. Открываем Windows Defender Firewall with Advanced Security.

openvpn srv win 47

Переходим в Inbound Rules.

openvpn srv win 48

Создаём правило — New Rule.

openvpn srv win 49

Тип правила — Port. Next.

ftcp

Протоколы и порты — TCP 1194. Как в настройках сервера. Next.

openvpn srv win 51

Действия — Allow the connection. Next.

openvpn srv win 52

Для всех сетей. Next.

openvpn srv win 53

Указываем название правила — OpenVPN. Next.

Правило создано, теперь firewall не блокирует входящие TCP соединения на 1194 порту.

Настройка OpenVPN клиента на ПК Windows

На компьютере клиента устанавливаем OpenVPN Connect.

OpenVPN 2.5.1 47

Я скачиваю версию для Windows.

OpenVPN 2.5.1 48

OpenVPN 2.5.1 49

OpenVPN 2.5.1 50

Принимаем лицензионное соглашение. Next.

OpenVPN 2.5.1 51

OpenVPN 2.5.1 52

OpenVPN Connect устанавливается.

OpenVPN 2.5.1 53

Установка завершена. Finish.

OpenVPN 2.5.1 54

На рабочем столе появляется иконка OpenVPN Connect.

На сервере файл примера конфигурации client.ovpn копируем как internet-lab.ru.ovpn.

OpenVPN 2.5.1 58

Здесь нужно указать протокол, порт адрес сервера и прочие параметры. Пути к ключам и сертификатам относительные.

Создаём директорию, например, C:openvpn. Копируем в неё с сервера файлы:

OpenVPN 2.5.1 60

Запускаем OpenVPN Connect.

OpenVPN 2.5.1 55

Agree. Переключаемся на File.

OpenVPN 2.5.1 56

Перетаскиваем мышкой в окно файл C:openvpninternet-lab.ru.ovpn, или указываем через кнопку Browse.

OpenVPN 2.5.1 61

Ставим галку «Connect after import».

OpenVPN 2.5.1 62

OpenVPN 2.5.1 63

Соединение с OpenVPN сервером установлено.

OpenVPN 2.5.1 66

В логах сервера видим, что соединился юзер v.pupkin.

Настройка OpenVPN клиента на смартфоне Android

Копируем на телефон все те же файлы, что и для клиента.

Источник

Подробная инструкция по OpenVPN v2.3.8 на Windows server 2008R2

Представляю подробную инструкцию по OpenVPN v2.3.8 на Windows server 2008R2 c уровнем шифрования TLS. Так же будут подробно описаны все параметры.

Настройка сервера

Для начала качаем дистрибутив с официально сайта. Запускаем установщик openvpn-install-2.3.8-I001-x86_64. В компонентах включаем следующее:

Указываем путь установки (Все дальнейшие действия будут ориентироваться на данный путь указанный в примере):

В процессе установке потребуется установить виртуальный сетевой адаптер, соглашаемся с установкой.

После успешной установки переходим в каталог “C:Programm FilesOpenVPN” где создаем директорию “SSL” (каталог может называться как угодно, в последующих настройках будет использоваться именно этот каталог), в данном каталоге будут располагаться сертификаты сервера, алгоритмы шифрования и проверка подлинности клиента.

Переходим в каталог “C:Programm FilesOpenVPNeasy-rsa”, открываем с помощью notepad или notepad++ (более правильный вариант) «vars.bat» (скрипт, содержащий в себе параметры ответов для создания и генерации клиентских/серверных сертификатов и последующих настроек сервера).

В самом низу файла есть следующие параметры, которые нужно настроить под себя:

set KEY_COUNTRY=RU
set KEY_PROVINCE=MO
set KEY_CITY=MOSCOW
set KEY_ORG=OpenVPN
set KEY_EMAIL=local@mos.local
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=OU
set PKCS11_MODULE_PATH=changeme rem Параметр по умолчанию
set PKCS11_PIN=1234 rem Параметр по умолчанию

В этом же каталоге “C:Programm FilesOpenVPNeasy-rsa”, есть конфигурационный файл “openssl-1.0.0.cnf”, открываем его с помощью notepad или notepad++ (более правильный вариант) и изменяем настройку, отвечающую за срок жизни сертификатов, по умолчанию 365 дней, продлим срок жизни до 3650 дней.

default_days = 3650 # how long to certify for

Далее будем генерировать следующее:

ca.crt — Собственный доверенный сертификат (Certificate Authority — далее CA) для подписи клиентских сертификатов и для их проверки при авторизации клиента.
dh1024.pem — ключ Диффи Хельмана позволяющий двум и более сторонам получить общий секретный ключ
server.crt — сертификат сервера
server.key — ключ сервера
ta.key — дополнительный ключ для tls-аутентификации (повышение безопасности соединения), сервер и каждый клиент должны иметь копию этого ключа

Открываем командную строку и переходим в каталог “C:Program FilesOpenVPNeasy-rsa”

cd C:Program FilesOpenVPNeasy-rsa

Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами, в случае закрытия командной строки, команду “vars” придется вводить заного)

Вводим команду “clean-all” (Очищаем каталог “C:Program FilesOpenVPNeasy-rsakeys” c последующим созданием файла“index.txt” (база клиентов, она же database) и “serial” (ключ))

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должны создаться файлы “index.txt и serial”.

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должен создаться файл “ta.key”.

Вводим команду “build-dh” — генерация ключа Диффи Хельмана.

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должен создаться файл “dh1024.pem”.

Вводим команду “build-ca” — генерация ключа центра сертификации (CA)
На все вопросы отвечаем по умолчанию нажатием клавиши Enter, эти параметры мы прописали в “vars.bat

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должны создаться файлы “ca.crt и ca.key”.

Вводим команду “build-key-server server” — генерация сертификата сервера.
На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до самого конца, эти параметры мы прописали в “vars.bat”, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должены создаться файлы “server.crt, server.key, server.csr”.

Вводим команду “build-key revokecrt” — команда для создания пользовательского сертификата, но в данном случае мы создаем произвольный сертификат “revokecrt” для последующей генерации файла “crl.pem”, который отвечает за проверку и последующий отзыв сертификатов. Теоретически данную процедуру можно проделать в самом конце и даже жить без нее, но тогда не сможем отзывать сертификаты и конфигурационный файл “server.ovpn” будет выглядеть иначе.

На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до вопросов Common Name и Name, на эти вопросы нужно отвечать согласно названию создаваемого сертификата пользователя, в нашем случае это произвольный сертификат “revokecrt” на оставшиеся вопросы нажимаем Enter, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должны создаться файлы “revokecrt.crt, revokecrt.key, revokecrt.csr

Вводим команду “revoke-full revokecrt” – команда отвечает за отзыв сертификата и последующего создания файла “crl.pem

Не закрывая командную строку, проверяем содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должен создаться файл “crl.pem

Теперь создадим сертификат пользователя, аналогично сертификату “revokecrt” см. выше.
Вводим команду “build-key user1” – создаем сертификат пользователя с именем user1

На данном этапе работа с консолью закончена, можно закрыть окно и проверить содержимое каталога “ C:Program FilesOpenVPNeasy-rsakeys”, должны создаться файлы “user1.crt, user1.key, user1.csr

Рекомендую создать папку “Clients” в любом удобном для Вас месте и скопировать туда необходимые файлы для передачи пользователям:

Также хочу обратить Ваше внимание на то, что содержимое папки “keys” удалять нельзя, при создании пользовательских сертификатов или любых изменениях в консоли, делайте копию данного каталога во избежание потерь или случайных генераций сертификатов сервера и обновления базы данных.

Копируем файлы сервера в раннее созданную папку “ssl” в каталоге “ C:Program FilesOpenVPNssl”:

Переходим в каталог “C:Program FilesOpenVPNconfig” и создадим файл конфигурации сервера “server.ovpn” со следующим содержимым:

# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем порт на котором будем слушать.
port 1194
# Указываем что это TLS сервер.
tls-server
# Указываем путь к доверенному сертификату.
ca «C:\Program Files\OpenVPN\ssl\ca.crt»
# Указываем путь к сертификату сервера.
cert «C:\Program Files\OpenVPN\ssl\Server.crt»
# Указываем путь к ключу сервера.
key «C:\Program Files\OpenVPN\ssl\Server.key»
# Указываем путь к ключю Диффи Хельмана
dh «C:\Program Files\OpenVPN\ssl\dh1024.pem»
# Указываем адресацию сети.
server 10.8.0.0 255.255.255.0
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Указываем не перечитавать файлы ключей при перезапуске туннеля.
persist-key
# Указываем путь к ключу безопасности и устанавливаем параметр сервера 0
tls-auth «C:\Program Files\OpenVPN\ssl\ta.key» 0
# Разрешаем общаться клиентам внутри тоннеля.
client-to-client
# Указываем каталог с описаниями конфигураций каждого из клиентов.
client-config-dir «C:\Program Files\OpenVPN\ccd»
# Указываем файл с описанием сетей между клиентом и сервером.
ifconfig-pool-persist «C:\Program Files\OpenVPN\ccd\ipp.txt»
# Указывает сверку по отозванным сертификатам.
crl-verify «C:\Program Files\OpenVPN\easy-rsa\keys\crl.pem»
# Указываем путь к логу со статусом.
status «C:\Program Files\OpenVPN\log\logopenvpn-status.log»
# Указываем путь к логу.
log «C:\Program Files\OpenVPN\log\openvpn.log»
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
# Указывает, если в течении 120 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
keepalive 10 120
# Указываем уровень логирования.
verb 3

На сервере где будет крутиться OpenVPN необходимо проделать следующее:

1 – Если вы используете встроенный Брандмауэр Windows, создайте разрешающее правило для входящих и исходящих подключений по протоколу UDP на порт 1194.

2 – В службах сервера найдите OpenVPN Service и установите запуск на автоматический, это позволит автоматически запускаться сервису при перезагрузке сервера.

C рабочего стола сервера запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN GUI” откроется окно лога, если после запуска сервиса в пункте 2 нечего не произошло, нажимаем слева внизу подключиться и если все хорошо, мы должны увидеть следующее содержимое:

Сервис VPN на сервере запущен и готов принимать клиентов.

Настройка клиента

Запускаем ранее скаченный установщик openvpn-install-2.3.8-I001-x86_64, выбор компонентов оставляем по умолчанию, путь сохраняется прежний.

После успешной установки переходим в каталог “C:Program FilesOpenVPNconfig” и создаем файл конфигурации клиента “test.ovpn” со следующим содержимым:

# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем IP аддрес сервера с портом.
remote X.X.X.X 1194
# Указываем задержку в секундах для построения маршрута.
route-delay 3
# Указываем чтобы клиент забирал информацию о маршрутизации с сервера.
client
# Указываем что мы являемся TLS клиентом.
tls-client
# Параметр защиты от MitM атак.
ns-cert-type server
# Указываем путь к доверенному сертификату.
ca «C:\Program Files\OpenVPN\ssl\ca.crt»
# Указываем путь к клиентскому сертификату.
cert «C:\Program Files\OpenVPN\ssl\user1.crt»
# Указываем путь к клиентскому ключу.
key «C:\Program Files\OpenVPN\ssl\user1.key»
# Указываем путь к ключу безопасности и устанавливаем параметр клиента 1
tls-auth «C:\Program Files\OpenVPN\ssl\ta.key» 1
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Указываем, сли в течении 60 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
ping-restart 60
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
ping 10
# Указываем уровень логирования.
verb 3

C рабочего стола запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN”, откроется окно лога, нажимаем подключиться и если все хорошо, то мы увидим следующее:

Запускаем пинг на 10.8.0.1 и видим что сеть доступна (10.8.0.1 адрес, который получил виртуальный сетевой адаптер на сервере).
На сервере мы увидим лог подключения:

Собственно на этом этапе можно закончить и все в дальнейшем будет работать. Но я хотел бы еще кое-что добавить. Для уменьшения количества файлов у клиента и добавление еще одного пункта в безопасности (пароль на подключение), можно сделать следующее, на этапе создания сертификата пользователя на сервере, выполняем команду “build-key-pkcs12 user2” вместо “build-key user1”, выполняем все аналогично первой команде, до пункта Export Password, в этом пункте необходимо указать пароль, например 12345, данный пароль по факту назначается на сертификат “user2.p12”, при попытке подключения через “OpenVPN”, программа обращается к сертификату и требует пароль (зная пароль, его можно изменить, удалить и т.д).

В таком случае, комплект для пользователя будет состоять из:

Конфигурационный файл “test.ovpn” должны быть следующего содержания:

# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем IP аддрес сервера с портом.
remote X.X.X.X 1194
# Указываем задержку в секундах для построения маршрута.
route-delay 3
# Указываем чтобы клиент забирал информацию о маршрутизации с сервера.
client
# Указываем что мы являемся TLS клиентом.
tls-client
# Параметр защиты от MitM атак.
ns-cert-type server
# Указываем путь к сертификату.
pkcs12 «C:\Program Files\OpenVPN\ssl\user2.p12»
# Указываем путь к ключу безопасности и устанавливаем параметр клиента 1
tls-auth «C:\Program Files\OpenVPN\ssl\ta.key» 1
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Указываем, сли в течении 60 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
ping-restart 60
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
ping 10
# Указываем уровень логирования.
verb 3

Пробуем подключиться, вводим пароль 12345

Если все хорошо видим следующее:

Ну и на последок, как отозвать сертификат пользователя и вообще посмотреть список выданных сертификатов. Сам список храниться по следующему пути “C:Program FilesOpenVPNeasy-rsakeysindex.txt”

Для того чтобы отозвать сертификат, заходим в командную строку. Переходим в каталог “C:Programm FilesOpenVPNeasy-rsa”:

cd C:Program FilesOpenVPNeasy-rsa

Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами). Вводим команду для отзыва сертификата пользователя “revoke-full user2” (указываем название заведенного раннее пользователя).

После заходим в “index.txt” “C:Program FilesOpenVPNeasy-rsakeysindex.txt” и видим, что сертификат отозван “R”.

Не готов сказать на 100%, но судя по описанию, файл “index.txt” проверяется каждый час, соответственно через час, сертификат будет заблокирован, ну или просто достаточно перезапустить сервис на сервере.

Еще рекомендую использовать отдельную учетную запись для службы “OpenVPN Service” и в случае если пользователи будут работать с этим сервером, где развернут VPN, обязательно уберите права у простых пользователей на каталог “C:Program FilesOpenVPN”.

Всем спасибо, надеюсь, данная статься поможет многим, кто сталкивается с вопросами и не находил подходящих ответов, разжевал как мог.

Источник

После обновления утилиты Easy-RSA изменился процесс создания ключей.

Переходим в директорию Easy-RSA, по умолчанию /usr/share/easy-rsa/3.0.3.

cd /usr/share/easy-rsa/3.0.3/

Создаем CA:

./easyrsa init-pki
./easyrsa build-ca

После создания попросят придумать пароль. Этот пароль необходимо запомнить т.к. он понадобится для создания клиентских сертификатов.

Создаем сертификат сервера:

./easyrsa build-server-full server

По запросу дважды вводим пароль НА СЕРТИФИКАТ и после пароль который установили при создании CA.

Создаем сертификат клиента:

./easyrsa build-client-full client01

По запросу дважды вводим пароль НА СЕРТИФИКАТ и после пароль который установили при создании CA.

Создаем Диффи-Хеллмана:

./easyrsa gen-dh

Все созданные сертификаты запаролены, для снятия пароля:

openssl rsa -in [file1.key] -out [file2.key]

Все созданные сертификаты находятся в директории easy-rsa:
CA.crt — /usr/share/easy-rsa/3.0.3/pki/CA.crt
dh.pem — /usr/share/easy-rsa/3.0.3/pki/dh.pem
server.key — /usr/share/easy-rsa/3.0.3/pki/private/server.key
server.crt — /usr/share/easy-rsa/3.0.3/pki/issued/server.crt
client01.key — /usr/share/easy-rsa/3.0.3/pki/private/client01.key
client01.crt — /usr/share/easy-rsa/3.0.3/pki/issued/client01.crt

Вчера обнаружил, что на мой домашний сервер пытаются подобрать пароль к RDP. Спросил наших безопасников с работы, да, порт сканировали, но пароль подбирают не они… Надо что-то делать с этим, и я даже знаю что.

Ударим шифрованием по злобным брутфорсерам! Ставим OpenVPN 2.5.1 сервер на Windows Server 2016.

  • Встретимся с Easy-RSA 3.
  • Решим неочевидный баг с директорией временных файлов.
  • Освоим OpenVPN Connect, в том числе на Android.
  • Запилим адаптер OpenVPN WinTun.

Установка OpenVPN Server

Скачиваем дистрибутив для установки OpenVPN:

Community Downloads

vpn

Доступна версия OpenVPN 2.5.1. Скачиваю Windows 64-bit MSI installer, файл OpenVPN-2.5.1-I601-amd64.msi.

vpn

Запускаем инсталлятор OpenVPN.

vpn

Открывается мастер установки, предлагают выбрать тип установки, естественно, нажимаем Customize. Установка по умолчанию нас не устроит.

vpn

OpenVPN GUI отключаю. Мне нужно, чтобы OpenVPN на сервере работал автоматически.

vpn

А OpenVPN Service, наоборот, включаю. OpenVPN у меня будет работать как служба Windows.

Документацию и примеры конфигурации оставляю. Конфигурационные примеры будут использоваться в качестве шаблонов.

vpn

Начиная с версии OpenVPN 2.5 появилась поддержка драйвера WinTUN от разработчиков WireGuard. Говорят, что работает быстрее чем TAP-Windows6. Поэтому драйвер TAP-Windows6 отключаю и включаю Wintun.

ПРИМЕЧАНИЕ: для включения драйвера Wintun необходимо в файле конфигурации сервера включить параметр:

windows-driver wintun

vpn

Утилиты OpenSSL EasyRSA 3 Certificate Management Scripts включаю. Install Now.

vpn

Начинается процесс установки OpenVPN.

openvpn

Установка успешно завершена. Close.

vpn

Установка выполнена в директорию C:Program FilesOpenVPN.

vpn

После установки у нас появляется новый сетевой адаптер Wintun Userspace Tunnel.

vpn

Адаптер отключён.

Создание ключей и сертификатов

Запускаем командную строку под администратором и переходим в рабочую директорию C:Program FilesOpenVPNeasy-rsa.

cd C:Program FilesOpenVPNeasy-rsa

В этой папке есть всё необходимое для генерации сертификатов.

vpn

Для работы в Windows нас интересует файл EasyRSA-Start.bat.

vpn

Выполняем EasyRSA-Start.bat.

vpn

Запускается оболочка EasyRSA Shell.

Инициализируем новую конфигурацию:

./easyrsa init-pki

vpn

Появляется новая директория C:Program FilesOpenVPNeasy-rsapki.

vpn

Генерируем ключ и сертификат центра сертификации. Внимание, сейчас мы наступим на грабли, исправим ошибку и снова вернёмся к генерации файлов для центра сертификации.

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим.

vpn

Получаем ошибку.

Extra arguments given.
genrsa: Use -help for summary.

Easy-RSA error:

Failed create CA private key

Исправим этот баг. Мне не совсем понятно, почему нельзя было всё сделать сразу по-человечески, чтобы люди не встречали эту ошибку. Копируем файл C:Program FilesOpenVPNeasy-rsavars.example, называем копию C:Program FilesOpenVPNeasy-rsavars.

vpn

Редактируем C:Program FilesOpenVPNeasy-rsavars. В данном файле можно много чего прописать, но я не буду на этом сейчас останавливаться подробно. Находим строку:

#set_var EASYRSA_TEMP_DIR	"$EASYRSA_PKI"

И заменяем её на:

set_var EASYRSA_TEMP_DIR	"$EASYRSA_PKI/temp"

vpn

Собственно, ошибка и заключалась в том, что оболочка по какой-то причине не могла создать временный файл.

Генерируем ключ и сертификат центра сертификации:

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим. После нас просят указать Common Name для центра сертификации, указываю «internet-lab.ru».

vpn

Операция проходит успешно.

vpn

Создаётся сертификат центра сертификации:

  • C:Program FilesOpenVPNeasy-rsapkica.crt

Сертификат создаётся на 10 лет, это значение можно переопределить в файле vars.

vpn

И ключ центра сертификации:

  • C:Program FilesOpenVPNeasy-rsapkiprivateca.key

Ключ секретный, никому не показываем. он будет храниться на сервере.

Генерируем ключ и запрос на сертификат сервера, назовём сервер именем «server«:

./easyrsa gen-req server nopass

Нас просят указать Common Name для сервера, указываю «internet-lab.ru».

vpn

Операция проходит успешно.

vpn

Создаётся запрос на сертификат сервера:

  • C:Program FilesOpenVPNeasy-rsapkireqsserver.req

vpn

И ключ сервера:

  • C:Program FilesOpenVPNeasy-rsapkiprivateserver.key

Ключ секретный, никому не показываем. он будет храниться на сервере.

Для создания сертификата сервера нужно подписать запрос на сертификат:

./easyrsa sign-req server server

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

vpn

Создаётся сертификат сервера:

  • C:Program FilesOpenVPNeasy-rsapkiissuedserver.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

vpn

Теперь создадим клиентский сертификат. По хорошему клиентский ключ следует запаролить, чтобы исключить утечку при передаче. Для этого есть несколько способов.

Первый

  1. На клиентской машине генерируем запрос на сертификат клиента и ключ без пароля:

    ./easyrsa init-pki
    ./easyrsa gen-req client nopass
  2. Переносим REQ файл запроса на сертификат клиента на машину с нашим CA, импортируем, подписываем, отсылаем сгенерированный сертификат CRT обратно клиенту:
    ./easyrsa import-req /path/to/client.req client
    ./easyrsa sign-req client client

Второй

  1. а машине с CA генерируем сертификат клиента и ключ с паролем:

    ./easyrsa gen-req client
    ./easyrsa sign-req client client
  2. Переносим файлы клиенту, сообщаем пароль. Клиент снимает пароль с полученного ключа:
    openssl rsa -in client.key -out clientnew.key

Третий

Но поскольку я генерирую ключ сам для себя, то воспользуюсь небезопасным третьим способом.

Генерируем ключ и запрос на сертификат клиента, назовём клиента именем «client«:

./easyrsa gen-req client nopass

Нас просят указать Common Name для клиента, указываю «v.pupkin».

vpn

Операция проходит успешно.

vpn

Создаётся запрос на сертификат клиента:

  • C:Program FilesOpenVPNeasy-rsapkireqsclient.req

vpn

И ключ клиента:

  • C:Program FilesOpenVPNeasy-rsapkiprivateclient.key

Для создания сертификата клиента нужно подписать запрос на сертификат:

./easyrsa sign-req client client

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

vpn

Создаётся сертификат клиента:

  • C:Program FilesOpenVPNeasy-rsapkiissuedclient.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

vpn

Генерируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

vpn

Операция займёт некоторое время.

vpn

Создаётся файл:

  • C:Program FilesOpenVPNeasy-rsapkidh.pem

vpn

Я на сервере собираюсь использовать tls-auth для дополнительной проверки целостности, это обеспечит дополнительный уровень безопасности протокола SSL/TLS при создании соединения:

  • Сканирование прослушиваемых VPN-сервером портов
  • Инициация SSL/TLS-соединения несанкционированной машиной на раннем этапе
  • DoS-атаки и флуд на порты OpenVPN
  • Переполнение буфера SSL/TLS

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ tls-auth. Для этого запускаем командную строку под администратором и выполняем:

cd C:Program FilesOpenVPNbin
openvpn --genkey secret ta.key

vpn

В папке C:Program FilesOpenVPNbin создаётся файл ta.key.

vpn

Переносим его в папку C:Program FilesOpenVPNeasy-rsapki.

vpn

Минимальный набор сертификатов сгенерирован.

Настройка OpenVPN сервера

Создадим конфигурационный файл сервера C:Program FilesOpenVPNconfig-autoserver.ovpn:

copy "C:Program FilesOpenVPNsample-configserver.ovpn" "C:Program FilesOpenVPNconfig-autoserver.ovpn"

vpn

Открываем блокнотом и редактируем:

notepad "C:Program FilesOpenVPNconfig-autoserver.ovpn"

Лучше изучить конфигурационный файл, я предлагаю свой вариант конфига:

port 1194
proto tcp
dev tun
ca "C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt"
cert "C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt"
key "C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key"  # This file should be kept secret
dh "C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem"
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
duplicate-cn
keepalive 10 120
tls-auth "C:\Program Files\OpenVPN\easy-rsa\pki\ta.key" 0 # This file is secret
cipher AES-256-GCM
persist-key
persist-tun
status "C:\Program Files\OpenVPN\log\status.log"
log         "C:\Program Files\OpenVPN\log\openvpn.log"
verb 4
mute 20
windows-driver wintun

У меня здесь указаны пути к ключам и сертификатам, используется порт TCP 1194. Параметр duplicate-cn позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях. Я использую для того, чтобы с помощью одного и того же сертификата подключиться к OpenVPN серверу и с клиентской машины и со смартфона. Параметр windows-driver wintun подключает использование драйвера WinTun. И что им стоило этот параметр указать в примере конфигурации? Остальное по умолчанию.

ВНИМАНИЕ: в конфигурационных файлах допускается в путях использование прямого слеша:

ca «C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt»

или двойного обратного слеша:

ca «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»

Запуск OpenVPN сервера

Переходим к службам:

services.msc

vpn

Находим службу OpenVPNService.

vpn

Настраиваем на автоматический запуск при загрузке сервера.

vpn

Запускаем (перезапускаем) службу.

Согласно настройкам сервера в папке C:Program FilesOpenVPNlog должны появиться логи. Это один из инструментов администратора OpenVPN сервера.

vpn

Активировался сетевой адаптер OpenVPN Wintun.

vpn

Согласно настройкам сервера IP адрес 10.8.0.1.

vpn

Проверяем поднялся ли порт tcp 1194:

netstat -tan | find "1194"

Порт должен прослушиваться.

vpn

Настройка firewall

Теперь нужно настроить firewall. Открываем Windows Defender Firewall with Advanced Security.

vpn

Переходим в Inbound Rules.

vpn

Создаём правило — New Rule…

vpn

Тип правила — Port. Next.

vpn

Протоколы и порты — TCP 1194. Как в настройках сервера. Next.

vpn

Действия — Allow the connection. Next.

vpn

Для всех сетей. Next.

vpn

Указываем название правила — OpenVPN. Next.

Правило создано, теперь firewall не блокирует входящие TCP соединения на 1194 порту.

Настройка OpenVPN клиента на ПК Windows

На компьютере клиента устанавливаем OpenVPN Connect.

Get OpenVPN

vpn

Я скачиваю версию для Windows.

vpn

Запускаем установку.

vpn

Next.

vpn

Принимаем лицензионное соглашение. Next.

vpn

Install.

vpn

OpenVPN Connect устанавливается.

vpn

Установка завершена. Finish.

vpn

На рабочем столе появляется иконка OpenVPN Connect.

На сервере файл примера конфигурации client.ovpn копируем как internet-lab.ru.ovpn.

vpn

И редактируем:

client
dev tun
proto tcp
remote internet-lab.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 0
connect-retry-max 25

Здесь нужно указать протокол, порт адрес сервера и прочие параметры. Пути к ключам и сертификатам относительные.

Создаём директорию, например, C:openvpn. Копируем в неё с сервера файлы:

  • ca.crt
  • client.crt
  • client.key
  • dh.pem
  • ta.key
  • internet-lab.ru.ovpn

vpn

Запускаем OpenVPN Connect.

vpn

Agree. Переключаемся на File.

vpn

Перетаскиваем мышкой в окно файл C:openvpninternet-lab.ru.ovpn, или указываем через кнопку Browse.

vpn

Ставим галку «Connect after import».

vpn

Коннектимся.

vpn

Соединение с OpenVPN сервером установлено.

vpn

В логах сервера видим, что соединился юзер v.pupkin.

Настройка OpenVPN клиента на смартфоне Android

Копируем на телефон все те же файлы, что и для клиента.

vpn

Устанавливаем приложение OpenVPN Connect.

vpn

Запускаем.

vpn

Agree.

vpn

Выбираем File. Указываем путь к файлу internet-lab.ru.ovpn.

vpn

Import.

vpn

Ставим галку «Connect after import».

vpn

Соединение с OpenVPN сервером установлено.

vpn

В логах сервера видим, что соединился второй юзер v.pupkin.

Отзыв сертификата

cd C:Program FilesOpenVPNeasy-rsa
EasyRSA-Start.bat
./easyrsa revoke client

Ссылки

Установка OpenVPN сервера на Windows

Понравилась статья? Поделить с друзьями:
  • Easy recovery essentials windows 7 скачать для флешки торрент
  • Easy recovery essentials windows 7 iso
  • Easy recovery essentials for windows 10 торрент
  • Easy recovery essentials for windows 10 скачать
  • Easy recovery essentials for windows 10 torrent