Openvpn windows key directory

Как настроить сервер OpenVPN на Windows

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

Установка OpenVPN Server

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

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

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

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

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

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

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

set «PATH=%PATH%;%ProgramFiles%\OpenVPN\bin»
set HOME=%ProgramFiles%\OpenVPN\easy-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-сервера; остальные опции можно заполнить произвольно.

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

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

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

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

Теперь генерируем последовательность центра сертификации:

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

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

openssl dhparam -out keys\dh.pem 2048

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

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

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

После переносим из папки C:\Program Files\OpenVPN\easy-rsa\keys в C:\Program Files\OpenVPN\ssl следующие файлы:

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

Переходим в папку C:\Program Files\OpenVPN\config и создаем файл 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
comp-lzo
persist-key
persist-tun
cipher DES-CBC
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 и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:

Читайте также:  Linux mount directory to another directory

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

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

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

На сервере:

На сервере генерируем сертификат для клиента. Для этого сначала чистим файл index.txt в папке C:\Program Files\OpenVPN\easy-rsa\keys.

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

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

В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.

Установка

Windows

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

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

Linux CentOS

Устанавливаем репозиторий EPEL:

yum install epel-release

yum install openvpn

Linux Ubuntu

apt-get install openvpn

Android

Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.

Настройка

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

В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.

* имя файла может быть любым, расширение должно быть .ovpn.

Для создания конфигурационного файла в Linux выполняем команду:

* чтобы служба openvpn автоматически выполняла соединение, необходимо, чтобы конфигурационный файл назывался client.conf.

Пример конфигурационного файла

client
dev tun
proto udp
remote 192.168.0.15 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
comp-lzo
verb 0

Параметры конфигурационного файла

Параметр Значения Описание
client Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер).
dev tap или tun Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP.
dev-node любая строка Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN.
proto udp или tcp Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть.
remote VPN-сервер и порт Задает сервер, к которому должен подключаться клиент, а также сетевой порт (по умолчанию 1194), на котором OpenVPN принимает запросы. Можно указать несколько строк.
remote-random Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке.
resolv-retry количество секунд или infinite Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно.
nobind Клиент использует динамический порт для подключения.
user учетная запись Задает определенного пользователя для работы клиента (только для UNIX-систем).
group группа Задает определенную группу для работы клиента (только для UNIX-систем).
persist-key Не перечитывает ключи при перезагрузке сервиса OpenVPN.
persist-tun Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN.
http-proxy сервер прокси и порт Использовать прокси-сервер для подключения.
http-proxy-retry Переподключаться к прокси-серверу, если связь была разорвана.
http-proxy-timeout количество секунд Время, через которое выполнять попытки переподключения к прокси-серверу.
mute-replay-warnings Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов.
ca пут к сертификату Корневой сертификат удостоверяющего центра. Генерируем на сервере.
cert пут к сертификату Открытый ключ клиента. Генерируем на сервере.
key пут к сертификату Закрытый ключ клиента. Генерируем на сервере.
dh пут к сертификату Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана).
remote-cert-tls сервер Исключает возможность mitm атаки, включая верификацию сертификата сервера.
tls-client Указание на то, что это клиент TLS.
tls-auth ta.key 1 Дополнительный уровень аутентификации посредством ключа TLS.
float Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано.
keepalive секунд1 секунд2 Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение.
cipher алгоритм Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC.
comp-lzo Использовать сжатие.
verb число от 0 до 9 Уровень детализации лога. 0 отключает отладочную информацию.
mute число Указывает сколько лог-сообщений может отображаться для каждой категории события.
auth-user-pass ничего или путь к файлу Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла.
ipchange команда или путь к скрипту Выполняет команду при смене IP.
connect-retry секунд Переподключиться к серверу через указанное количество секунд, если соединение было разорвано.
connect-retry-max число Сколько раз повторять соединение, если оно было разорвано.
shaper байт Задает максимальную скорость передачи данных для исходящего трафика.
tun-mtu число Задает MTU.
status путь к файлу Путь к фалу хранения статуса.
log путь к файлу Путь к лог-файлу.
askpass путь к файлу Путь к файлу с паролем для приватного ключа (private key password).

Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).

Сертификаты

Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.

Openvpn windows key directory

В данном примере настройка сервера выполняется с использованием дистрибутива Linux — Ubuntu Server. Клиент настраивается под Microsoft Windows. В качестве LDAP-сервера мною используется Microsoft Active Directory.

Статью можно использовать как основу для настройки OpenVPN на любой операционной системе семейства UNIX.

Готовим сервер

Заходим в систему под суперпользователем:

Устанавливаем часовой пояс (у меня московское время) и синхронизируем его с сервером времени:

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate ru.pool.ntp.org

Настраиваем задание в cron для автоматической синхронизации времени каждый день в 00:00:

# mkdir -p /var/cron/tabs && echo ‘0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org’ >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab && crontab -l
# apt-get update && apt-get upgrade

Устанавливаем OpenVPN и создаем сертификаты

Устанавливаем пакеты openvpn и easy-rsa:

# apt-get install openvpn easy-rsa -y

Создаем каталог easy-rsa, переходим в него и копируем рабочие файлы:

# mkdir /etc/openvpn/easy-rsa
# cd /etc/openvpn/easy-rsa
# cp -r /usr/share/easy-rsa/* .

Открываем на редактирование скрипт vars и выставляем подходящие значения для своего сертификата:

# nano ./vars

export KEY_ORG=»DMOSK COMPANY»

#export PKCS11_PIN=1234

Запускаем на исполнение отредактированный скрипт:

На всякий случай, чистим каталоги от старых сертификатов:

# ./clean-all

Генерируем первый сертификат:

На все запросы просто нажимаем Enter, так как мы все настроили в переменных с помощью файла vars.

Создаем ключ для сервера:

# ./build-key-server server

В конце подтверждаем подписание сертификата ([Y]).

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

Теперь создаем ключ для клиента:

# ./build-key client

В конце подтверждаем подписание сертификата ([Y]).

Ну и на последок, TLS-ключ:

# openvpn —genkey —secret keys/ta.key

Копируем каталог с созданными сертификатами и ключами в /etc/openvpn:

# cp -r keys /etc/openvpn/

Настраиваем сервер и клиента

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

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

# nano /etc/openvpn/server.conf

local 192.168.166.155

tls-auth keys/ta.key 0

server 172.16.10.0 255.255.255.0

keepalive 10 120

max-clients 32

# 0 is silent, except for fatal errors

# 4 is reasonable for general usage

# 5 and 6 can help to debug connection problems

# 9 is extremely verbose

* 192.168.166.155 — IP-адрес, на котором сервер будет устанавливать VPN-соединение. 172.16.10.0 255.255.255.0 — адресация для виртуальной сети. 32 — количество клиентов для одновременного подключения.

Создаем каталог для логов и запускаем службу сервера openvpn:

# mkdir /var/log/openvpn
# service openvpn start

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

# service openvpn status

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

Заходим на официальный сайт openvpn и скачиваем клиента для Windows:

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

Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /etc/openvpn/keys на сервере.

** Самый простой способ скопировать файлы с сервера UNIX — воспользоваться программой WinSCP.

У вас, скорее всего, возникнет проблема при открытии папки keys — ошибка permission denied (не хватает прав). Для обхода этой проблемы на сервере Ubuntu скопируйте необходимые ключи во временную папку и предоставьте к ним полный доступ:

# mkdir /tmp/keys
# cd /etc/openvpn/keys
# cp ca.crt client.crt client.key dh2048.pem ta.key /tmp/keys
# chmod -R 777 /tmp/keys

По завершении копирования не забываем удалить папку /tmp/keys:

# rm -R /tmp/keys

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

remote 192.168.166.155 443

tls-auth ta.key 1

keepalive 10 120

*** 192.168.166.155 — IP-адрес сервера VPN.

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

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

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

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

Настраиваем аутентификацию через LDAP

На сервере OpenVPN

Устанавливаем пакет openvpn-auth-ldap:

# apt-get install openvpn-auth-ldap -y

Редактируем конфигурационный файл openvpn (добавляем две строки):

# nano /etc/openvpn/server.conf

plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf

В директории /etc/openvpn создаем каталог auth и в нем конфигурационный файл ldap.conf. В последний добавляем следующие строки:

# mkdir /etc/openvpn/auth && nano /etc/openvpn/auth/ldap.conf

URL ldap://dc1.dmosk.local

BindDN CN=openvpn,CN=Users,DC=dmosk,DC=local

Password openvpn

BaseDN «DC=dmosk,DC=local»

SearchFilter «(&(sAMAccountName=%u)(memberOf=CN=VPN users,CN=Users,DC=dmosk,DC=local))»

**** ldap://dc1.dmosk.local — контроллер домена. CN=openvpn,CN=Users,DC=dmosk,DC=local — учетная запись для связывания с контроллером домена. openvpn — пароль для учетной записи openvpn. DC=dmosk,DC=local — корень в домене, с которого начнется поиск учетной записи для аутентификации. CN=VPN users,CN=Users,DC=dmosk,DC=local — группа безопасности, в которую должна входить учетная запись для успешной аутентификации.

Перезагружаем демон openvpn:

# service openvpn restart

На сервере Active Directory

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

В контейнере «Users» создаем учетную запись openvpn с паролем openvpn. Никаких дополнительных прав ей не даем.

***** Данные контейнер, имя и пароль используются для примера. Само собой, вы можете использовать любые значения. Только не забывайте также редактировать конфигурационный файл ldap.conf на сервере.

В том же контейнере создаем группу безопасности «VPN users». В нее добавляем учетные записи всех пользователей, которым хотим предоставить возможность подключаться к VPN.

****** Если в компании сложная структура Active Directory с множеством сайтов, возможно, стоит сделать паузу на 15 минут и подождать окончания репликации.

На клиенте Windows

Запускаем блокнот от имени администратора и открываем конфигурационный файл клиента openvpn (C:\Program Files\OpenVPN\config\config.ovpn).

Добавляем в него одну строку:

Сохраняем файл и проверяем работоспособность. При включении клиента появится окно для ввода логина и пароля.

Вводим логин и пароль для учетной записи, которую мы добавили в группу «VPN users» — произойдет подключение и значок поменяет цвет с серого на зеленый.

Читайте также:  Windows theme files folder
Оцените статью