Андрей Смирнов
Время чтения: ~27 мин.
Просмотров: 25

Windows Server версий 2008/2012: инструкция по настройке OpenVPN

OpenVPN-internet-gateway-000.pngВ наших прошлых материалах мы рассматривали применение OpenVPN исключительно для организации каналов связи между подразделениями организации. Но современный мир приносит новые вызовы, на которые следует реагировать. Один из них — общественные сети с низкой безопасностью, для работы в которых желательно иметь защищенный канал, препятствующий доступу третьих лиц к вашему трафику. Традиционно эта задача решается использованием VPN-сервисов и в данной статье мы расскажем, как организовать собственный сервис на базе OpenVPN.

Кроме общественных сетей в последние годы стала приобретать повышенную актуальность проблема ограничения доступа к некоторым ресурсам исходя из географического расположения клиента. Это могут быть как ограничения регионального характера, например, популярный поставщик видеоконтента Netflix, так и блокировки со стороны органов власти, как яркий пример которых «ковровые блокировки» РКН в его борьбе с Телеграм, когда под ограничения попало большое количество совершенно легальных ресурсов.

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

Что нужно для создания собственного VPN-сервиса? Прежде всего потребуется VPS (виртуальный выделенный сервер) расположенный в регионе, из которого возможен неограниченный доступ к требуемым ресурсам. В большинстве случаев можно выбирать Европу или Штаты, но во втором случае задержки будут выше. На наш взгляд, выбирать Штаты имеет смысл, если вам требуется доступ к американским ресурсам, тому же Netflix или покупкам у американских продавцов на Amazon и Ebay.

Для поиска недорогих VPS можно воспользоваться специальными сайтами, такими как Low End Box или бесплатными предложениями от облачных провайдеров. Так у Amazon и Microsoft можно бесплатно получить виртуальную машину на год, а Oracle предлагает две VPS бесплатно и навсегда.

В нашем примере мы будем использовать бесплатный VPS от Oracle с Ubuntu 18.04, но данная инструкция подойдет для любых deb-based систем и с некоторыми поправками для любого другого Linux-дистрибутива.

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

Прежде всего установим OpenVPN и Easy-RSA для управления ключами:

apt install openvpn easy-rsa

Скопируем файлы easy-rsa в конфигурационную директорию OpenVPN и создадим символическую ссылку на файл настроек OpenSSL:

cp -r /usr/share/easy-rsa /etc/openvpnln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf  /etc/openvpn/easy-rsa/openssl.cnf

Затем откроем файл /etc/openvpn/easy-rsa/vars и изменим в нем следующие строки, указав собственные данные для сертификатов, например, так:

export KEY_COUNTRY="US"export KEY_PROVINCE="Wild West"export KEY_CITY="Uncle Tom's Cabins"export KEY_ORG="Uncle Tom"export KEY_EMAIL="tom@example.com"export KEY_OU="Cabin"

Сохраним файл и перейдем к созданию собственного центра сертификации (CA). Для этого перейдем в директорию нашего CA и загрузим переменные:

cd /etc/openvpn/easy-rsasource ./vars

Очистим любые имеющиеся данные и инициализируем центр сертификации:

./clean-all./build-ca

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

OpenVPN-internet-gateway-001-thumb-600xauto-10599.pngПосле чего в директории /etc/openvpn/easy-rsa/keys появится сертификат CA, содержащий публичный ключ, ca.crt, который должен присутствовать на каждом VPN-клиенте, и закрытый ключ центра сертификации ca.key, этот файл является секретным и не должен покидать пределы сервера.

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

./build-dh

Данная операция, в зависимости от производительности вашего VPS, может занять достаточно много времени.

И, наконец, создадим ключевую пару для сервера:

./build-key-server server

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

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

mkdir /etc/openvpn/keys

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

cd /etc/openvpn/easy-rsa/keyscp ca.crt dh2048.pem server.crt server.key /etc/openvpn/keys

Распакуем и скопируем в директорию /etc/openvpn шаблон серверной конфигурации:

gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gzcp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn

Откроем файл /etc/openvpn/server.conf и внесем в него необходимые изменения, в большинстве случаев вам придется раскомментировать нужны строки или убедиться в их наличии. Опции указаны в порядке их следования в файле:

port 1194proto udpdev tun

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

Затем зададим топологию сети:

topology subnet

Укажем пути к ключам и сертификатам, допускаются относительные пути, в этом случае корнем будет считаться директория /etc/openvpn:

ca keys/ca.crtcert keys/server.crtkey keys/server.keydh keys/dh2048.pem

Зададим диапазон OpenVPN-сети:

server 10.88.0.0 255.255.255.0

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

ifconfig-pool-persist /var/log/openvpn/ipp.txt

Автоматически сконфигурируем клиентов на доступ в интернет через OpenVPN-подключение:

push "redirect-gateway def1 bypass-dhcp"

И передадим им собственные DNS-сервера:

push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 208.67.220.220"

Укажем параметры проверки активности:

keepalive 10 120

Сервер будет проверять клиента каждые 10 секунд и при отсутствии ответа через 120 секунд клиент будет считаться неактивным.

Обязательно закомментируйте строку:

#tls-auth ta.key 0

Для сценария доступа в интернет дополнительная TLS-аутентификация будет излишней.

В последних версиях OpenVPN включен механизм автоматического согласования протоколов шифрования между клиентом и сервером, по умолчанию будет выбран шифр AES-256-GCM, но так как вычислительные возможности VPS обычно ограничены и большого смысла шифровать канал доступа в интернет сложными шифрами нет, то отключим соглассование и укажем достаточно простой AES-шифр:

ncp-disablecipher AES-128-CBC

Также в новых версиях доступен новый механизм компрессии, для его включения укажем:

compress lz4-v2push "compress lz4-v2"

Данная опция будет автоматически отправлена на клиент, что облегчает его конфигурирование.

Если у вас есть старые версии клиентов (ниже 2.4), то можно использовать простое lzo-сжатие, для этого закомментируйте вышеприведенные строки и добавьте:

comp-lzo

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

В целях безопасности понизим права запущенного сервера:

user nobodygroup nogroup

После чего проконтролируем наличие опций, отвечающих за правильные права к некоторым ресурсам после их понижения:

persist-keypersist-tun

Укажем путь к файлам логов:

status /var/log/openvpn/openvpn-status.loglog  /var/log/openvpn/openvpn.log

И укажем его подробность:

verb 3

Во время отладки можно поднять уровень логов до 5-6.

Настройка брандмауэра и маршрутизации

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

Создадим файл правил:

touch /etc/nat 

и внесем в него следующие строки, обратите внимание на имя сетевого интерфейса вашего VPS, в нашем случае это ens3:

#!/bin/sh# Включаем форвардинг пакетовecho 1 > /proc/sys/net/ipv4/ip_forward# Сбрасываем настройки брандмауэраiptables -Fiptables -Xiptables -t nat -Fiptables -t nat -X# Разрешаем инициированные нами подключения извнеiptables -A INPUT -i ens3 -m state --state ESTABLISHED,RELATED -j ACCEPT# Разрешаем подключения по SSHiptables -A INPUT -i ens3 -p tcp --dport 22 -j ACCEPT# Разрешаем подключения к OpenVPNiptables -A INPUT -i ens3 -p udp --dport 1194 -j ACCEPT#Запрещаем входящие извнеiptables -A INPUT -i ens3 -j DROP# Разрешаем инициированные нами транзитные подключения извнеiptables -A FORWARD -i ens3 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT# Запрещаем транзитный трафик извнеiptables -A FORWARD -i ens3 -o tun0 -j DROP# Включаем маскарадинг для локальной сетиiptables -t nat -A POSTROUTING -o ens3 -s 10.88.0.0/24 -j MASQUERADE

Не забудем сделать файл исполняемым:

chmod +x /etc/nat

Данный файл требуется запускать после создания туннельного интерфейса tun0, поэтому откроем конфигурационный файл сервера OpenVPN /etc/openvpn/server.conf и в его конце добавим опцию:

up /etc/nat

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

ip a

OpenVPN-internet-gateway-002-thumb-600xauto-10602.pngТакже проверим применение правил брандмауэра:

iptables -L -vn

OpenVPN-internet-gateway-003-thumb-600xauto-10605.pngСледующий шаг касается только виртуальных машин в облаке Oracle Cloud, вам потребуется дополнительно разрешить входящий трафик на порт OpenVPN. Для этого перейдите в Сети » Виртуальные облачные сети » VirtualCloudNetwork-20191008-0144 » Сведения о списках безопасности, где вместо VirtualCloudNetwork-20191008-0144 будет имя вашей виртуальной сети. Затем добавьте новое правило для входящего трафика:

OpenVPN-internet-gateway-004-thumb-600xauto-10608.pngУкажите: Тип источника — CIDR, Исходный CIDR — 0.0.0.0/0, IP-протокол — UDP, Диапазон исходных портов — Все, Диапазон конечных портов — 1194.

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

cd /etc/openvpn/easy-rsasource ./vars

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

./build-key client

где client -имя клиента, мы также рекомендуем давать им осмысленные имена.

Теперь скопируем файлы, которые необходимо передать на компьютер клиента в домашнюю директорию и изменим их владельца (по умолчанию владелец — root), чтобы вы смогли их скопировать с помощью любого FTP или SFTP клиента. В нашем случае имя пользователя ubuntu:

cd /etc/openvpn/easy-rsa/keyscp ca.crt client.crt client.key ~cd ~chown ubuntu:ubuntu ca.crt client.crt client.key

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

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

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client.ovpn

После чего скопируйте все эти файлы на клиент и установите на нем OpenVPN, в Windows системах советуем изменить путь установки OpenVPN на более короткий и без пробелов, скажем, C:OpenVPN.

Затем откроем файл client.ovpn, который в Windows системах должен быть расположен в C:OpenVPNconfig, а в Linux в /etc/openvpn, и внесем в него следующие изменения:

clientdev tunproto udp

Данные опции задают клиентский режим работы, тип туннеля и используемый протокол UDP.

Затем укажем адрес сервера:

remote 111.222.333.444 1194

Следующая опция предписывает клиенту постоянно разрешать имя OpenVPN-сервера, имеет смысл если мы указываем сервер по FQDN-имени, а не IP-адресу.

resolv-retry infinite

Для Linux систем обязательно укажите:

user nobodygroup nogroup

В Windows данные опции следует обязательно закомментировать.

Проконтролируем наличие следующих опций:

persist-keypersist-tun

Укажем пути к ключам и сертификатам, для Linux систем подразумеваем их нахождение в /etc/openvpn/keys:

ca keys/ca.crtcert  keys/client.crtkey  keys/client.key

Для Windows систем предположим их нахождение в C:OpenVPNkeys:

ca C:\OpenVPN\keys\ca.crtcert C:\OpenVPN\keys\client.crtkey C:\OpenVPN\keys\client.key

Также обязательно закомментируем опцию:

#tls-auth ta.key 1

Включим защиту от атак типа «человек посередине»:

remote-cert-tls server

И укажем используемый шифр, он должен совпадать с указанным на сервере:

cipher AES-128-CBC

Остальные опции можно оставить без изменений. Сохраним файл и запустим OpenVPN-клиент.

Убедиться, что вы выходите в интернет через VPN-канал можно при помощи любого сервиса, показывающего ваш IP-адрес, например, 2ip.ru:

OpenVPN-internet-gateway-005-thumb-600xauto-10611.pngОбращаем внимание на национальную принадлежность адреса, в данном случае мы выходим в интернет из Штатов.

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

OpenVPN-internet-gateway-006-thumb-600xauto-10614.pngВторой через OpenVPN-канал:

OpenVPN-internet-gateway-007-thumb-600xauto-10617.pngСразу обращаем внимание на выросший пинг — это последствия размещения сервера в Штатах, а также скорость скачивания не выше 10 Мбит/с — ограничение бесплатного тарифа Oracle, хотя в большинстве случаев этого вполне достаточно для комфортного серфинга.

Напоследок затронем еще один момент. Мы настроили сервер таким образом, что он автоматически конфигурирует клиента на доступ в интернет через OpenVPN-подключение, но бывают случаи, когда это не нужно. Допустим вы хотите пустить через VPN только некоторые ресурсы, а остальной доступ должен осуществляться через локального провайдера. В таком случае добавьте в конфигурационный файл клиента опцию:

route-nopull

После чего клиент будет игнорировать передаваемые с сервера опции маршрутизации и DHCP-опции, такие как DNS-сервера и т.п.

Ниже мы детально разберем все, что касается серверных настроек на Win Server2008 и Server2012, а также покажем, как сделать подключения юзеров к созданной сети.

OpenVPN – это представление открытой (от англ. «open» — «открыть») частной виртуальной сети (от англ. «Virtual Private Network»). Данная технология помогает создавать виртуальные подключения групп клиентов к расположенных на расстоянии машинам посредством передачи данных по открытому каналу, то есть интернету.

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

Принципы работы

1.jpg

Произведенная настройка позволит серверу взаимодействовать с внешним защищенным шифрованием SSL и создавать безопасное подключение к виртуальной сетевой машине (tun/tap). При этом не нужно будет волноваться об обработке трафика, поступающего от внешнего адаптера и аналогичных интерфейсов. Для серверных машин можно будет создать общий доступ к одному из указанных серверных адаптеров.

Дополнительно будет рассказываться о туннелировании входящих/исходящих от юзеров данных. Подобная переадресация позволит хосту, который обрабатывает подключения к виртуальной сети, осуществить передачу данных от своего лица и одновременно выступить в качестве прокси, чтобы привести к единому виду всю интернет-активность пользователя.

2.jpg

Способы установки виртуальной сети

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

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

3.png

Когда всплывает вопрос о сетевом адаптере TAP, следует разрешить его установку.

Стандартно OpenVPN загружается в папку с программными файлами, расположенную на диске C. Поэтому в ходе инструкции мы будем ссылаться к папке «C:Program FilesOpenVPN». Вы хотите изменить месторасположение файлов? Тогда учитывайте этот нюанс в дальнейшем.

Как сгенерировать ключи и выполнить их шифрование, алгоритм Diffie-Hellman

Для каждой пары ключей существуют свои собственные сертификаты, обеспечивающие безопасность передачи информации. Управлять ими можно специальным приложением Easy-rsa, которое запускается и работает в командной строке, аналогично консоли Линукс. Консоль открывается через нажатие клавиш Win + R и ввода в появившемся окне слова cmd.

Как работать с конфигурационным файлом

Загрузив соответствующий конфигурационный файл, нужно внести его вместо одноименного файла/скрипта, найти который можно в папке OpenVPNeasy-rsa. Директория располагается на диске C в Program Files. Или укажите тот путь, куда вы запланировали установку виртуальной частной сети.

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

countryName_default  stateOrProvinceName_default  localityName_default  0.organizationName_default  emailAddress_default  

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

Как генерировать ключи в Центре Сертификации

1. Для начала следует переименовать два файла при помощи командной строки:

cd cd "C:Program FilesOpenVPNeasy-rsa" ren index.txt.start index.txt ren serial.start serial

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

.build-ca.bat

В окне будут возникать различные предложения, большинство из них можно подтверждать кнопкой Enter. А для поля KEY_CN (Common Name) следует ввести оригинальное название и его же продублировать для поля name.

3. Так же генерируются сертификаты серверу. В этой строке вместе server нужно ввести оригинальное имя:

.build-key-server.bat server

4. Система начнет спрашивать, следует ли подписывать сертификаты для создаваемых ключей от имени Центра сертификации? Введите «да» — y (yes).

4.png

Как генерировать клиентский ключ и сертификат

Всем юзерам виртуальной сети понадобится генерировать свои индивидуальные SSL-сертификаты.

Можно воспользоваться специальной опцией, которая позволяет присваивать 1 сертификат сразу нескольким пользователям. Она называется «dublicate-cn» и размещается в файле server.ovpn. Однако такой ход небезопасен.

Рассмотрим, как сгенерировать сертификат клиенту client2:

cd cd "C:Program FilesOpenVPNeasy-rsa" .build-key.bat client2

Внимание: под переменной client2 подразумевается вносимое название файла. Далее следует ввести client2 в запрос строчки Common Name.

Работа с алгоритмом Диффи-Хеллмана

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

.build-dh.bat

5.png

Перенос сгенерированных ключей/сертификатов

Все созданные данные располагаются в подпапке easy-rsakeys. Следующие наименования файлов следует перенести в другую подпапку — config, которая располагается в том же месте:

• dh2048.pem/dh1048.pem

• server.key

• ca.crt

• server.crt

Настройка конфигурации на сервере

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

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters.

Справа вы увидите IPEnableRouter. Кликните по переменной два раза – откроется новое окошко для изменения параметров. В поле «Значение» поставьте единицу:

1. Настраивать сервер мы будем через конфигурационный файл server.ovpn. Перед работой его следует переместить в папку config.

Открыв его, необходимо проверить правильность построение маршрутов к перенесенным сертификатам:

port 1194  proto udp  dev tun  server 10.8.0.0 255.255.255.0  ca "C:Program FilesOpenVPNconfigca.crt"  cert "C:Program FilesOpenVPNconfigserver.crt"  key "C:Program FilesOpenVPNconfigserver.key"  dh "C:Program FilesOpenVPNconfigdh2048.pem"  push "redirect-gateway def1"  push "dhcp-option DNS 8.8.8.8"  keepalive 10 120  comp-lzo  persist-key  persist-tun  verb 3  

Если нужно, то меняем пути на правильные и пересохраняем.

2. Чтобы успешно пересылать трафик от одного адаптера к другому, нужно зайти в раздел сети и интернета, который находится в панели управления ПК. В нем найти центр сетевого управления и кликнуть по предложению изменить параметры интернет адаптера.

Из нескольких предложенных вариантов надо взять тот, что отвечает за внешние подключения, то есть не TAP-тип, так как он работает с VPN-соединениями.

8.png

В свойствах зайдите на вкладку доступа и поставьте галочки на обоих пунктах:

9.png

3. Следующим шагом включается айпи-переадресация.

Зайдите в стандартный поиск ОС си введите следующее имя приложения:

Настройка автозапуска

Чтобы служба стартовала при включении компьютера, нужно зайти в базовую папку «Службы», в открывшемся окне среди прочих программ найти OpenVPN, кликнуть по нему правой кнопкой, а в свойствах в значениях запуска выставить режим «Автоматически».

Стандартные настройки окончены. Чтобы запустить сервер и его новые настройки, надо еще раз войти в файл server.ovpn и написать в него следующую строчку:

Start OpenVPN on this config

Настройки клиентской конфигурации

Виртуальная частная сеть имеет свое клиентское приложение, которое одинаково хорошо загружается для любой существующей операционной системы за исключением Mac – к нему разработан Tunnelblick. Версии приложений функционируют одинаково, затрагивают определенные конфигурационные файлы. В зависимости от версий, могут различаться отдельные опции. Более подробная информация расписана в документации OpenVPN.

Далее мы расскажем, как подключить клиентов на ОС Виндовс, применяя те же дистрибутивы, которые до этого инсталлировались на сервере. В случае с другими операционными системами методы и шаги будут примерно такими же.

1. Для начала на ПК клиента ставится актуальная версия (желательно последняя) OpenVPN.

2. Конфигурационные файлы клиента client.ovpn вместе с сертификатами *.crt и ключами *.key, которые перед этим мы сгеренировали, необходимо поместить в подпапку config, хранящуюся в разделе OpenVPN. При этом желательно файл клиента удалить с директории сервера, чтобы не запутаться при будущих настройках.

3. При открытии client.ovpn необходимо отыскать строчку remote my-server-1 1194. Задайте ей айпи и домен работающего сервера:

remote 1194

Например:

remote 111.222.88.99 1194

4. Ниже в файле обозначен путь к каждому сертификату, меняем их на путь к скопированным версиям:

# See the server config file for more  # description. It's best to use  # a separate .crt/.key file pair  # for each client. A single ca  # file can be used for all clients.  ca "C:Program FilesOpenVPNconfigca.crt"  cert "C:Program FilesOpenVPNconfigclient2.crt"  key "C:Program FilesOpenVPNconfigclient2.key"  # This file should be kept secret  

5. После сохранения базовые настройки будут окончены.

Как проверить правила брендмауэра

Чтобы функционирование виртуальной частной сети проходило корректно, на стороне сервера необходимо открыть соответствующий порт. Стандартно его имя UDP 1194.

Зайдите в установленный системный Firewall и посмотрите, разрешен ли доступ к порту антивирусным программным обеспечением и брендмауэром.

Как проверить OpenVPN-подключение

После запуска сервера потребуется зайти в папку config. В ней нужно отыскать конфигурационный server.ovpn файл. Кликнуть по нему правой кнопкой, вызвать контекстное меню и внести новую строчку:

Start OpenVPN on this config file

Те же действия необходимо проделать для клиента. Только в этот раз открывается client.ovpn. Остальные действия аналогичны.

Следом должно показаться окно, где отобразится статус соединения. Окно самостоятельно свернется в трею, там же загорится ярлык компьютера с зеленым индикатором (это будет свидетельствовать об успешно проведенной настройке).

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

1. Запустим командную строку комбинацией клавиш Win + R и введением команды cmd.

2. Осуществим пинг к выбранному серверу (10.8.0.1). Для этого введем:

ping 10.8.0.1

3. Если настройка прошла отлично, в окне строки покажется передача пакетов ПК клиента к серверу:

4. Специальная утилита Tracert покажет маршрут, по которому происходит передача клиентских пакетов. Для этого в консоль вводится команда:

tracert ya.ru

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

После таких действий вы получаете VPN, которая полностью настроена и готова работать. С ее помощью владельцу сервера доступно быстро создание безопасного сетевого подключения типа клиент-сервер, использование открытых и территориально удаленных точек подключения к сети интернет.

Облачные VPS/VDS

Создайте сервер всего за 1 минуту!

от8 руб/месяцПредставляю подробную инструкцию по 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”. Вводим команду “openvpn —genkey —secret %KEY_DIR%ta.key” Не закрывая командную строку, проверяем содержимое каталога “ 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” в любом удобном для Вас месте и скопировать туда необходимые файлы для передачи пользователям: 1 — 2 — user1.crt 3 — user1.key 4 — ta.key Также хочу обратить Ваше внимание на то, что содержимое папки “keys” удалять нельзя, при создании пользовательских сертификатов или любых изменениях в консоли, делайте копию данного каталога во избежание потерь или случайных генераций сертификатов сервера и обновления базы данных. Копируем файлы сервера в раннее созданную папку “ssl” в каталоге “ C:Program FilesOpenVPNssl”: 1 — ca.crt 2 — server.crt 3 — server.key 4 — dh1024.pem 5 — ta.key Переходим в каталог “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”, программа обращается к сертификату и требует пароль (зная пароль, его можно изменить, удалить и т.д). В таком случае, комплект для пользователя будет состоять из: 1 – user2.p12 2 – ta.key Конфигурационный файл “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”. Всем спасибо, надеюсь, данная статься поможет многим, кто сталкивается с вопросами и не находил подходящих ответов, разжевал как мог.Используемые источники:

  • https://interface31.ru/tech_it/2019/10/nastroyka-openvpn-servera-dlya-dostupa-v-internet.html
  • https://serverspace.by/support/help/nastroika-openvpn-na-windows-server-2012/
  • https://habr.com/post/273371/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации