Представляю подробную инструкцию по OpenVPN на Windows server 2012 c уровнем шифрования OpenSSL. А также как подключить клиентов к созданной виртуальной частной сети. Здесь подробно описаны все параметры.
OpenVPN — открытая реализация технологии VPN — Virtual Private Network, которая предназначена для создания виртуальных частных сетей между группой территориально удаленных узлов поверх открытого канала интернет. OpenVPN подходит для таких задач, как безопасное удаленное сетевое подключение к серверу без открытия интернет-доступа к нему, как будто вы подключаетесь к хосту в своей локальной сети. Безопасность соединения достигается шифрованием OpenSSL.
Установка OpenVPN на сервер
Зайдите в систему от имени Администратора. Кто не знает как активировать учетную запись Администратора читайте тут.
Скачайте и установите актуальную версию OpenVPN. Запустите установщик, убедитесь что на третьем шаге мастера установки выбраны все компоненты для установки.
OpenVPN установливаем в директорию по-умолчанию «C:\Program Files\OpenVPN».
Разрешаем добавление виртуального сетевого адаптера TAP в ответ на соответствующий запрос и дожидаемся завершения установки.
Генерация ключей (PKI) центра сертификации, сервера, клиента
Для управления парами «ключ/сертификат» всех узлов создаваемой частной сети используется утилита easy-rsa, работающая через командную строку.
Переходим в папку установки OpenVPN и создаем папки ssl и ccd.
Заходим в папку easy-rsa. Там есть файл vars.bat.sample, копируем его и переименовываем в vars.bat.
cd \
cd C:\Program Files\OpenVPN\easy-rsa
copy vars.bat.sample vars.bat
Открываем файл vars.bat. для редактирования, например, в программе Notepad++.
Перед FOR вводим rem, а перед set «PATH=%PATH%;C:\Program Files\OpenVPN\bin» удаляем rem.
А также правим следующие строки:
set KEY_DIR=keys //каталог, куда будут генерироваться сертификты;
set DH_KEY_SIZE=2048 //длина ключа Диффи Хельмана
set KEY_SIZE=2048 //длина личного ключа
set KEY_COUNTRY=RU //Код страны, RU для России
set KEY_PROVINCE=Moscow //Регион страны
set KEY_CITY=Moscow //Город
set KEY_ORG=Organization //Название организации или ФИО
set KEY_EMAIL=master@dmosk.ru //Адрес вашей почты
set KEY_CN=server //Общее имя
set KEY_OU=server //имя
set KEY_NAME=server.domain.ru //Имя сервера. Желательно, чтобы соответствовал полному имени VPN-сервера
set PKCS11_MODULE_PATH=DMOSK //путь к модулю pkcs#11, можно не менять
set PKCS11_PIN=12345678 //ПИН-код к смарт-карте, можно не менять
Проверяем, что в файле openssl-1.0.0.cnf параметр default_days (срок жизни сертификата) имеет значение 3650 или то, которое вам нужно.
Очищаем старые данные
vars.bat
clean-all.bat
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появились файлы index.txt и serial.
Создаем ключ HMAC для дополнительной защиты от DoS-атак и флуда.
openvpn --genkey --secret %KEY_DIR%\ta.key
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появился файл ta.key.
Генерируем ключ Диффи Хельмана (процесс достаточно длительный).
build-dh.bat
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появился файл dh2048.pem
Генерируем сертификат
build-ca.bat
На все запросы нажимаем Enter.
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появились файлы ca.crt и ca.key.
Генерируем сертификат для сервера:
build-key-server.bat server
Где server — имя сертификата. Можно ввести другое. На все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появились файлы server.crt, server.key и server.csr.
Создаем пользовательский сертификат removecrt для последующего создания файла crl.pem, который отвечает за проверку и последующий отзыв сертификатов. Можно обойтись и без него, но тогда нельзя будет отозвать сертификат пользователя. Так что лучше это сделать.
build-key removecrt
Нажимаем Enter, пока не появятся вопросы Common Name и Name. При их появлении вводим название нашего сертификата — removecrt. Завершаем вводом y два раза.
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появились файлы removecrt.crt, removecrt.key и removecrt.csr.
Далее вводим команду которая отвечает за отзыв сертификата и создает файл crl.pem
revoke-full removecrt
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появился файл crl.pem
Создаем сертификат пользователя
build-key user
где user — имя пользователя. Для каждого пользователя надо создавать свой сертификат, поэтому желательно давать осмысленные имена. Также напоминаю, что при появлении запроса Common Name и Name надо вводить название нашего сертификата user.
Не закрывая командную строку, проверяем, что в папке C:\Program Files\OpenVPN\easy-rsa\keys появились файлы user.crt, user.key и user.csr.
Есть второй способ создания сертификата пользователя. в этом случае меньше файлов надо передавать пользователю, но при подключении надо будет вводить пароль.
Вводим команду
build-key-pkcs12 user
Нажимаем Enter пока не появится запрос Export Password. Здесь вводим пароль пользователя, например 777777. Данный пароль будет назначен сертификату user.p12, который должен появиться в папке C:\Program Files\OpenVPN\easy-rsa\keys. Учтите, что и файлы конфигурации клиента будут разные. Но об этом позднее.
На этом генерация ключей закончена.
Из папки C:\Program Files\OpenVPN\easy-rsa\keys копируем в папку C:\Program Files\OpenVPN\ssl которую мы создали ранее следующие файлы:
- ca.crt
- server.crt
- server.key
- dh2048.pem
- ta.key
Также рекомендую для каждого пользователя создать свою папку и поместить туда следующие файлы:
Для первого варианта
- ca.crt
- user.crt
- user.key
- ta.key
Для второго варианта
- user.p12
- ta.key
Настройка сервера
Переходим к настройке сервера VPN. Создаем файл конфигурации. В папке C:\Program Files\OpenVPN\sample-config есть образцы файлов конфигурации. Возьмем их за основу. Копируем файл server.ovpn в папку C:\Program Files\OpenVPN\config.
Открываем его в Notepad++. И исправляем:
port 1194 //Номер порта на котором будем слушать. Замечание см. ниже
proto udp //Указываем протокол для подключения.
dev tun //Создаем маршрутизируемый IP туннель.
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\\dh2048.pem" //Указываем путь к ключю Диффи Хельмана
server 172.16.32.0 255.255.255.0 //Указываем адресацию сети.
ifconfig-pool-persist "C:\\Program Files\\OpenVPN\\ccd\\ipp.txt" //Указываем файл с описанием сетей между клиентом и сервером.
client-config-dir "C:\\Program Files\\OpenVPN\\ccd" //Указываем каталог с описаниями конфигураций каждого из клиентов.
client-to-client //Разрешаем общаться клиентам внутри тоннеля.
keepalive 10 120
tls-auth "C:\\Program Files\\OpenVPN\\ssl\\ta.key" 0 //Указываем путь к ключу безопасности и устанавливаем параметр сервера 0
cipher AES-256-CBC //Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
comp-lzo //Включаем сжатие.
persist-key //Указываем не пересчитавать файлы ключей при перезапуске туннеля.
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\logopenvpn-status.log" //Указываем путь к логу со статусом.
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" //Указываем путь к логу.
verb 3
crl-verify "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\crl.pem" //Указывает сверку по отозванным сертификатам.
Остальное не меняем. Сохраняем, закрываем.
Теперь замечание по поводу номера порта. Если вы собираетесь использовать нестандартный порт, то необходимо открыть этот порт в Брандмауэре Windows по протоколу UDP для входящих и исходящих подключений. А также убедиться, что у провайдера этот порт тоже открыт.
Теперь переходим Панель управления → Администрирование → Службы и находим OpenVPNService. Нажимаем правой кнопкой мыши и выбираем Свойства. Устанавливаем Тип запуска — Автоматически. Нажимаем Запустить, затем ОК. Закрываем все окна.
На рабочем столе запускаем OpenVPN GUI.
Сервер VPN запущен. В случае появления ошибок смотрите логи в папке C:\Program Files\OpenVPN\log.
Настройка клиента
Настройку клиента начинаем с того, что копируем с компьютера-сервера на компьютер-клиент следующие файлы:
- Файлы ключей и сертификатов в соответствии с вариантами их создания, как указано выше.
- Файл установщика, так как программа одинаковая как для сервера, так и для клиента. Отличия только в файлах конфигурации.
Запускаем установку OpenVPN. Все компоненты оставляем как есть, путь установки тоже по умолчанию. Установка TAP-адаптера — да.
Переходим в папку установки OpenVPN и создаем папку ssl. в нее копируем файлы ключей и сертификатов для данного клиента.
Возвращаемся в каталог установки и из папки C:\Program Files\OpenVPN\sample-config копируем файл client.ovpn в папку C:\Program Files\OpenVPN\config.
Открываем его в Notepad++. И исправляем:
client //Указываем чтобы клиент забирал информацию о маршрутизации с сервера.
dev tun //Создаем маршрутизируемый IP туннель.
proto udp //Указываем протокол для подключения.
remote X.X.X.X 1194 //Указываем IP аддрес сервера с портом.
persist-key //Указываем не пересчитавать файлы ключей при перезапуске туннеля.
persist-tun
ca "C:\\Program Files\\OpenVPN\\ssl\\ca.crt" //Указываем путь к доверенному сертификату.
cert "C:\\Program Files\\OpenVPN\\ssl\\user.crt" //Указываем путь к сертификату сервера.
key "C:\\Program Files\\OpenVPN\\ssl\\user.key" //Указываем путь к ключу сервера.
tls-auth "C:\\Program Files\\OpenVPN\\ssl\\ta.key" 1 //Указываем путь к ключу безопасности и устанавливаем параметр клиента 1
cipher AES-256-CBC //Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
comp-lzo //Включаем сжатие.
verb 3
Не забываем изменить user на имя которое вы присвоили данному клиенту.
Сохраняем. Запускаем OpenVPN GUI на рабочем столе обязательно от имени администратора. Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Появится следующее окно.
Теперь можно проверить соединение ping.
На этом пока все. Дополнительную настройку OpenVPN см здесь.