Установка сертификатов клиента для Пользовательских VPN-подключений: инструкция для Windows, Linux, android

Установка сертификатов клиента для Пользовательских VPN-подключений

Установка сертификата Пользовательского VPN-подключения. Инструкция по установке и настройке VPN Server на операционную систему Windows. Настройка клиента, доступ к локальной сети.

Возможно, Вы слышали, что с помощью ВПН, люди заходят на недоступные ранее сайты. И, не боятся, что их отследят в интернете. Вот для этого и придумали систему.

Вообще, VPN — это сокращение от английского «Virtual Private Network». Дословно: виртуальная частная сеть.

А что за виртуальная сеть? Давайте разбираться.

Говоря простыми словами, VPN — это обобщённое название технологий, позволяющих Вам использовать в интернете не не своё, а подменное местоположение. Тем самым, защищая от посторонних глаз информацию о себе.

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

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

Как вариант, сразу могу предложить один из VPN-сервисов с хорошей репутацией — AddWe VPN. Это быстрый, надёжный и не дорогой сервис, с которым легко разобраться.

Зачем нужен ВПН

В общих чертах, Вы уже поняли, что ВПН нужен для повышение безопасности в интернете. Но, а зачем конкретно? Что нам, простым честным людям скрывать и зачем скрываться от кого-то в сети?

Можно выделить три самые распространённые причины использования VPN.

Во-первых, технология не даёт другим сайтам собирать информацию о вас. Сегодня, чуть-ли не каждый второй сайт отслеживает и собирает информацию о Вас. Когда Вы заходите на какую-то страничку, там сразу же фиксируется, Ваше местоположение. Как в интернете, так географическое (как минимум — Ваша страна и населённый пункт). Используя эту информацию, сайты будут пытаться Вам что-то продать, навязать. Особенно, это актуально для интернет-магазинов.

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

Чтобы избежать такого рода навязчивое отслеживание, мы можем использовать VPN. И прикидываться, к примеру, не россиянами из Воронежа, а японцами. Завтра — болгарами. А потом — мексиканцами. Тогда, никакой сайт не узнает кто Вы на самом деле и откуда.

VPN позволяет заходить на заблокированные сайты
VPN позволяет заходить на заблокированные сайтыВо-вторых, VPN нужен для обхода блокировок. Самый распространённый пример: в Украине заблокированы российские сайты Яндекс, Mail.ru и Вконтакте. Но, многим украинцам нравятся эти сервисы. У многих есть страничка во Вконтакте. А теперь зайти туда нельзя.

Однако, с помощью ВПН вы легко сможете зайти и на Вконтакте, и на Яндекс и на другие сайты. Технология позволяет обходить большинство блокировок в большинстве стран мира.Люди хотят иметь возможность пользоваться любимыми сервисами.

Думаю, ничего криминально нет в том, чтобы переписываться с друзьями в соц. сети. И, ВПН позволяют это делать в обход региональных блокировок. Поэтому, различные VPN сервисы обрели массовую популярность. Особенно, в последние годы.

В третьих, благодаря ВПН ваша личная информация будет защищена при использовании Wi-fi в общественных местах. Дело в том, что, пользуясь открытым вайфаем мы становимся уязвимыми. Подключаясь к сети где-нибудь в парке или в кафе, наши устройства становятся лёгкой целью для хакеров. Тут они могут узнать о нас буквально всё. Вплоть до банковских паролей и сообщений личной переписки.

Представляете какие последствия могут быть, если злоумышленники взломают наши гаджеты пока мы сидим с друзьями в кафе? К сожалению, я на себе проверил это. И никакие антивирусы не спасли. А вот VPN бы спас. Ведь он бы запутал следы нашего устройства. И, хакеры бы начали взламывать какой-нибудь уже нерабочий мобильник где-то в Бразилии, вместо нашего.

Да и вообще, не только при использовании открытого Wi-Fi, сервис VPN поможет защитить наши персональные данные под замком. Даже если Вы из дома расплачиваетесь по квитанциям за коммунальные услуги, рекомендую использовать ВПН. Чтобы уж точно никто не перехватил информацию. Не похитил деньги и не сделал вам ничего плохого.

Как работает VPN

Технически, за счёт VPN вы соединяетесь с сайтами не со своего местоположения, а с чужого, случайного. Объясню, как это работает.

У каждого устройства в интернете есть свой адрес. Так называемый IP-адрес. Он показывает откуда Вы соединяетесь. К примеру, на сервисе 2ip.ru, Вы легко можете определить Ваш IP-адрес. И, убедиться, что сайты определяют и IP-адрес каждого посетителя и географическое местоположение по нему.

VPN защищает нас от лишнего внимания
VPN защищает нас от лишнего внимания. И так, когда Вы без VPN соединяетесь с сайтами, они всё про Вас сразу узнают и запоминают. Автоматически.

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

Таким образом, сайты видят информацию не о Вас, а о каком-то случайном IP-адресе из частой виртуальной сети. А Вы видите сайты как обычно. Разве что, загружаться сайты будут на какие-то доли секунд дольше.

Это чем-то похоже на сцену опознания. Наверняка же видели в фильмах такое. Сидят трое подозреваемых в светлой комнате. Свидетель из другой комнаты их прекрасно видит через стекло. А они видят только зеркало. Вот примерно так и с ВПН. Вы видите сайты. А они Вас — нет.

И ещё пару слов о том, почему VPN позволяет обходить блокировки. Дело в том, что сайты чаще всего блокируются только для каких-то регионов. Грубо говоря, люди с украинскими IP не могут соединяться с сайтом Вконтакте. При использовании ВПН , вы обращаетесь не к Вконтакте, а к виртуальной сети. А она-то не заблокирована. Вот и получается что вместо запрещённой связки:

украинский IP —> Вконтакте

мы получаем разрешённую:

украинский IP —> подставной IP (например в Бельгии) —> Вконтакте.

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

Виды ВПН соединений

ВПН бывает разный. Кратко рассмотрим технические особенности этой технологии. И, сразу отмечу, что сейчас в большинстве случаев используется три вида VPN соединения.

  • L2TP (или Layer 2 Tunneling Protocol) — один из старейших видов VPN соединения. Появился ещё в 1990-е годы. Не требователен к ресурсам компьютера, то есть, работает с минимальными, не ощутимыми задержками. Однако, не использует шифрование. Это значит, что при очень большом желании пользователя всё таки можно отследить. Однако, для обхода блокировок сайтов, этот протокол вполне подойдёт.
  • IPsec (или Internet Protocol Security) — также, разработан в 90-х годах. В то же время, этот протокол намного более безопасный и использует шифрование. Минус в том, что IPsec требует большое количество вычислительных мощностей. Проще говоря, использовать такой VPN надёжно, но дорого.
  • SSL/TLS (Secure Sockets Layer и Transport Layer Security) — пожалуй, самый распространённый вид ВПН соединения. Благодаря использованию современных технологий, обеспечивается быстрый доступ к любым сайтам. Уровень защищённости средний. Однако, в рамках этого вида соединения, в ряде случаев, мы можем использовать VPN бесплатно.

На мой взгляд, для большинства пользователей оптимально подойдёт третий вариант. Такой VPN, кстати, уже встроен в некоторые популярные браузеры. Например в браузер «Opera». Как его использовать — мы тоже узнаем чуть дальше по статье.

Установка OpenVPN Server

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

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

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

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

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

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

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

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

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

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

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

2. После переходим в папку C:\Program Files\OpenVPN\easy-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%\OpenVPN\easy-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 Files\OpenVPN\ssl следующие файлы:

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

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

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

2. После переходим в папку 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-сервера; остальные опции можно заполнить произвольно.

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

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

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

cd %ProgramFiles%\OpenVPN\easy-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 keys\dh.pem 2048

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

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

build-key-server.bat cert

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

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

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

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

Переходим в папку C:\Program Files\OpenVPN\config-auto (или для старой версии 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
compress
ncp-disable
fast-io
cipher AES-256-CBC
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 Files\OpenVPN\easy-rsa\keys.

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

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

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

cd %ProgramFiles%\OpenVPN\easy-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

Запускаем 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 Files\OpenVPN\config. И копируем в нее сертификаты, которые перенесли с сервера.

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

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
compress
ncp-disable
fast-io
cipher AES-256-CBC
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 Files\OpenVPN\config.

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

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

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

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

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

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

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

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

reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /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

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

Настройка 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:\openvpn\internet-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 Files\OpenVPN\easy-rsa EasyRSA-Start.bat ./easyrsa revoke client

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

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

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

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

В этой статье

Если для конфигурации VPN-подключения P2S пользователя Виртуальной глобальной сети настроена как обязательная проверка подлинности на основе сертификата, на каждом клиентском компьютере должен быть локально установлен сертификат клиента. Эта статья поможет вам установить сертификат клиента локально на клиентский компьютер. Можно также использовать Intune для установки определенных профилей и сертификатов VPN-клиентов.

Если вы хотите создать сертификат клиента, см. статью Создание и экспорт сертификатов для Пользовательских VPN-подключений.

Windows

  1. Когда сертификат клиента будет экспортирован, найдите PFX-файл и скопируйте его на клиентский компьютер.
  2. На клиентском компьютере дважды щелкните PFX -файл, чтобы установить его. Для параметра Расположение хранилища оставьте значение Текущий пользователь, а затем выберите кнопку Далее.
  3. На странице Файл для импорта не вносите никаких изменений. Выберите Далее.
  4. На странице Защита с помощью закрытого ключа введите пароль для сертификата или проверьте, правильно ли выбран субъект безопасности, а затем выберите кнопку Далее.
  5. На странице Хранилище сертификатов оставьте расположение по умолчанию и выберите кнопку Далее.
  6. Нажмите кнопку Готово. На странице Предупреждение системы безопасности для установки сертификата выберите Да. Вы можете выбрать «Да» для этого предупреждения системы безопасности, так как вы создали сертификат.
  7. Сертификат успешно импортирован.

macOS

  1. Найдите PFX-файл сертификата и скопируйте его на компьютер Mac. Сертификат для компьютера Mac можно получить разными способами. Например, файл сертификата можно отправить по электронной почте.
  2. Дважды щелкните сертификат. Вам будет предложено ввести пароль, и сертификат будет автоматически установлен, либо появится поле Добавить сертификаты. В поле Добавить сертификаты выберите Добавить, чтобы начать установку.
  3. Выберите Вход в раскрывающемся списке.
  4. Введите пароль, созданный при экспорте сертификата клиента. Этот пароль защищает закрытый ключ сертификата. Нажмите кнопку ОК.
  5. Выберите Добавить, чтобы добавить сертификат.
  6. Чтобы просмотреть добавленный сертификат, откройте приложение Keychain Access и перейдите на вкладку Сертификаты.

Linux

Сертификат клиента для Linux устанавливается в клиенте в рамках настройки. Используйте Инструкции по настройке клиента VPN-шлюз — Linux.

Дальнейшие действия

Перейдите к Инструкциям по настройке VPN пользователя Виртуальной глобальной сети.

class=»hr» hidden=»»>

Дополнительные ресурсы

Тема

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность
  • Условия использования
  • Товарные знаки
  • © Microsoft 2022

Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3

  • Автор: Уваров А.С.
  • 04.12.2019

openvpn-server-and-client-with-easy-rsa-3-000.png
OpenVPN — популярная технология для создания защищенных частных сетей (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-rsaopenvpn-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.txtopenvpn-server-and-client-with-easy-rsa-3-005.png
Действующие сертификаты имеют статус V в начале строки, отозванные — R.

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

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

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

Первым делом нам необходимо сгенерировать ключ и сертификат для клиента. Происходит это по следующей схеме:
1) Создаётся ключ и запрос сертификата.

2) Создаётся сертификат, затем производится подпись центром сертификации.

Подготовимся к созданию ключа и сертификата. Для этого перейдём в рабочую директорию easy-rsa. У меня это:

# cd /usr/share/easy-rsa/3.0.3/
После перехода в рабочую директорию, необходимо сгенерировать ключ и сделать запрос сертификата. Для этого выполните в консоли:

# ./easyrsa gen-req client1 nopass Разберём основной синтаксис:

  1. gen-req (generate request) – сгенерировать запрос, под этой командой понимается так же генерация ключа.
  2. client1 – имя нашего файла (может быть любым)
  3. nopass – директива, которая указывает не устанавливать пароль на клиентский сертификат, в противном случае, каждый раз, когда клиент будет пытаться подключиться, для сертификата будет запрашиваться пароль.

Когда выполнение будет начато, мы увидим:

Общий вывод такой, а теперь давайте разберём его конкретно:
Первым делом утилита уведомляет нас о том, что использует конфигурацию из файла vars.

Файл vars хранит переменные, в которых записаны заданные администратором значения. Благодаря этому файлу мы избавляемся от нужды отвечать на множество вопросов сервера каждый раз, когда генерируем ключ и сертификат. О том, что в нём должно содержаться, Вы так же можете ознакомиться в статье на нашем сайте про конфигурацию VPN сервера на базе OpenVPN: (https:// Установка и конфигурирование сервера OpenVPN на CentOS). Затем сервер генерирует клиентский ключ размерностью 2048 бит, после сразу же записывает его в директорию:

/usr/share/easy-rsa/3.0.3/pki/private/client1.key.FkMNLTEczCЗдесь мы задаём имя объекта, которому выдаётся сертификат. Т.к. нет общеупотребительного варианта перевода, смысл такой.

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

Создаётся файл client1.req – файл, хранящий запрос о сертификате, а также файл client1.key – хранящий клиентский ключ.

Следующим шагом будет создание и подпись клиентского сертификата. Для этого введите в консоль команду:

# ./easyrsa sign-req client client1Синтаксис остаётся примерно тем же, со следующими отличиями:

  1. sign-req (signature request) запрос на создание и подпись сертификата.
  2. второе значение – client — говорит о типе сертификата, который нужно подписать: клиент или сервер. В нашем случае – это клиент.
  3. client1 – имя файла (может быть любым).

Во время выполнения увидим следующее:

Процедура схожа с созданием запроса. Происходит обращение к файлу vars, затем сервер уведомляет нас о том, что сертификат будет сгенерирован на 3650 дней, после чего нам предлагается ввести ‘yes’, чтобы продолжить или ввести что угодно, чтобы отменить запрос.

Т.к. нам нужен подписанный сертификат, пишем ‘yes’.

Затем нам предлагается ввести ключ центра сертификации для того, чтобы сгенерировать сертификат (это мера безопасности, необходимая для того, чтобы в случае компрометации сервера, нельзя было генерировать клиентские ключи и сертификаты). Возможен, вариант, что Вы не устанавливали пароль, следовательно, запроса пароля не будет.

В результате получаем следующий вывод: происходит проверка соответствия запроса требованиям центра сертификации, подпись и генерация сертификата по указанному пути: /usr/share/easy-rsa/3.0.3/pki/issued/client1.crt

По итогу мы получаем 2 файла:

  1. client1.key – клиентский ключ
  2. client1.crt – клиентский сертификат

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

  1. ca.crt – сертификат центра сертификации
  2. client1.key – клиентский ключ
  3. client1.crt – клиентский сертификат

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

Руководство по созданию базового файла конфигурации.

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

# Первым делом, указываем тип: клиент/сервер. client # Укажите адрес VPN сервера, вместо a.b.c.d, # к которому желаете подключиться. Через пробел можно указать порт. # Смотрите закомментированый пример. Если указываете адрес и порт # директивой remote, директиву port использовать не нужно. remote a.b.c.d ;remote a.b.c.d 1194 # Укажите порт OpenVPN сервера. Должен быть таким же, как и на сервере. port 1194 # Укажите тип интерфейса tun/tap. Зависит от конфигурации сервера. dev tun # Укажите протокол. # Должен быть таким, как на сервере. proto tcp ;proto udp # Укажите непривилегированного пользователя и соответствующую группу # пользователей. Для всех клиентов, кроме Windows. ;user nobody ;group nobody # persist-key – не перечитывать файлы ключей после перезапуска тоннеля. # persist-tun – не закрывать и не перезапускать tun/tap интерфейс, так же не # выполнять up/down скрипты. Если не указать этот параметр, то каждый раз, # когда будет падать интернет, нужно будет вручную всё поднимать при условии, # что приложение OpenVPN работает на правах непривилегированного # пользователя. persist-key persist-tun # Укажите пути к сертификатам. В моём случае сертификаты лежат в той папке, # где и сам конфигурационный файл, т.е. путь остаётся пустым. ca ca.crt cert client1.crt key client1.key # Укажите ключ tls, если имеется. Генерируется на стороне сервера. Целью TLS # ключа является повышение безопасности тоннеля и шифрование трафика. # В моём случае не используется, потому закомментировано. ;tls-auth ta.key» 1 # Укажите алгоритм шифрования. Должен соответствовать серверному. cipher AES-256-CBC # Укажите: нужно ли использовать сжатие. Должно соответствовать серверу. # У меня не используется, потому закомментировано. ;comp-lzo # Укажите уровень логгирования. verb 6 # Укажите параметр проверки доступности хоста. В данном случае: # Посылать пакет icmp каждые 10 секунд в течение 120 секунд. # Если хост не отвечает спустя 120 секунд, считать его недоступным и выполнять # перезапуск тоннеля. keepalive 10 120На данном этапе всё готово. Осталось передать архив, состоящий из четырёх файлов (ca.crt, client1.crt, client1.key, tun0.ovpn).

Количество файлов, а так же состав директив в файле конфигурации клиента могут отличаться в зависимости от конфигурации Вашего OpenVPN сервера.

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

Следует рассказать о том, как разместить все сертификаты и конфигурацию клиента в один файл расширения .ovpn. Реализуется это следующим образом.

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

 

— открывающий тэг […]

— содержимое сертификатаcertificate>

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

У нас в данный момент есть 3 файла, сгенерированные OpenVPN сервером, это:

  1. ca.crt
  2. client1.crt
  3. client1.key

В файле конфигурации они объявлены таким образом:

  1. ca ca.crt
  2. cert client1.crt
  3. key client1.key

Их необходимо удалить из файла конфигурации .ovpn, затем внести в конец конфигурационного файла следующую конструкцию:

[…] […] […]После этого полностью скопируйте содержимое каждого из файлов, затем вставьте вместо […].

На данном этапе всё готово, осталось выслать клиенту готовый конфигурационный файл.Т

Предпосылки

Чтобы следовать этому руководству, предполагается, что вы уже настроили сервер OpenConnect VPN с сертификатом сервера Let’s Encrypt TLS.

Мы создадим наш собственный центр сертификации (Certificate Authority) для подписывания сертификата клиента.

Демон ocserv должен продолжать использовать сертификат сервера TLS, выпущенный Let’s Encrypt, поэтому клиентское программное обеспечение не будет отображать предупреждение о безопасности.

Настройка собственного центра CA(центра сертификации)

Мы будем использовать аутентификацию по сертификату, но Let’s Encrypt не выдаёт сертификат клиента, поэтому нам нужно создать собственный CA.

Вы можете открыть opensll для выполнения задания, но ocserv рекомендует GnuTLS, поэтому я покажу вам, как использовать GnuTLS. Установите пакет gnutls-bin.

sudo apt install gnutls-bin Создайте подкаталог в /etc/ocserv/ для хранения секретных ключей и сертификатов.

sudo mkdir /etc/ocserv/ssl/Измените рабочий каталог.

cd /etc/ocserv/ssl/Создайте закрытый ключ для CA с помощью команды certtool, которая предоставляется пакетом gnutls-bin.

По умолчанию он генерирует 3072-разрядный RSA-ключ, которого достаточно.

sudo certtool —generate-privkey —outfile ca-privkey.pem Прежде чем создавать сертификат CA, давайте создадим файл шаблона сертификата CA.

Формат файла шаблона можно найти в руководстве certtool (man certtool).

sudo nano ca-cert.cfg Добавьте в файл следующие строки.

Замените параметры соответствующими значениями.

# X.509 Certificate options # The organization of the subject. organization = «Example Org» # The common name of the certificate owner. cn = «Example CA» # The serial number of the certificate. serial = 001 # In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date. expiration_days = -1 # Whether this is a CA certificate or not ca # Whether this certificate will be used to sign data signing_key # Whether this key will be used to sign other certificates. cert_signing_key # Whether this key will be used to sign CRLs. crl_signing_key Сохраните и закройте файл. Теперь создайте сертификат CA, используя конфигурации из файла шаблона.

sudo certtool —generate-self-signed —load-privkey ca-privkey.pem —template ca-cert.cfg —outfile ca-cert.pem

Теперь у нас есть файл сертификата CA (ca-cert.pem).

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

Теперь запустите следующую команду для создания закрытого ключа клиента.

sudo certtool —generate-privkey —outfile client-privkey.pem

Создайте файл шаблона сертификата клиента.

sudo nano client-cert.cfg

Добавьте следующие строки в файл. Uid должен быть именем пользователя в файле /etc/ocserv/ocpasswd.

# X.509 Certificate options # The organization of the subject. organization = «My Org» # The common name of the certificate owner. cn = «John Doe» # A user id of the certificate owner. uid = «username» # In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date. expiration_days = 3650 # Whether this certificate will be used for a TLS server tls_www_client # Whether this certificate will be used to sign data signing_key # Whether this certificate will be used to encrypt data (needed # in TLS RSA ciphersuites). Note that it is preferred to use different # keys for encryption and signing. encryption_key

Сохраните и закройте файл. Затем запустите следующую команду для создания сертификата клиента, который будет подписан закрытым ключом CA.

sudo certtool —generate-certificate —load-privkey client-privkey.pem —load-ca-certificate ca-cert.pem —load-ca-privkey ca-privkey.pem —template client-cert.cfg —outfile client-cert.pem

Объедините закрытый ключ клиента и сертификат в файле PKCS # 12, который защищен PIN-кодом.

sudo certtool —to-p12 —load-privkey client-privkey.pem —load-certificate client-cert.pem —pkcs-cipher aes-256 —outfile client.p12 —outder

Обратите внимание, что приложение Cisco AnyConnect на iOS не поддерживает шифрование AES-256, поэтому, если пользователь использует устройство iOS, вы можете использовать 3des-pkcs12cipher.

sudo certtool —to-p12 —load-privkey client-privkey.pem —load-certificate client-cert.pem —pkcs-cipher 3des-pkcs12 —outfile client.p12 —outder

Теперь у нас есть закрытый ключ клиента и сертификат, объединенный в один файл client.p12.

Запрос подписи сертификата

Чтобы секретные ключи конечных пользователей были секретными, пользователи могут генерировать запрос подписи сертификата (CSR) со своими личными ключами, а затем отправлять запросы сертификатов администратору, который затем выдает клиентские сертификаты пользователям.

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

Затем создайте CSR с помощью следующей команды.

Файл request.pem подписывается закрытым ключом пользователя.

certtool —generate-request —load-privkey client-privkey.pem —template client-cert.cfg —outfile request.pem

Затем пользователь отправляет файл request.pem и client-cert.cfg администратору, который выполняет следующую команду для создания сертификата клиента.

sudo certtool —generate-certificate —load-ca-certificate ca-cert.pem —load-ca-privkey ca-privkey.pem —load-request request.pem —template client-cert.cfg —outfile client-cert.pem

После этого администратор отправляет пользователю сертификат сертификата cert.pem.

Включение аутентификации сертификата в ocserv демоне

Отредактируйте файл конфигурации ocserv.

sudo nano /etc/ocserv/ocserv.conf

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

auth = «certificate»Если следующая строка также незакоментирована, это означает, что пользователь также должен ввести имя пользователя и пароль.

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

auth = «plain[passwd=/etc/ocserv/ocpasswd]»Если вы разрешаете пользователям выбирать аутентификацию по сертификату или аутентификацию пароля, добавьте следующую строку.

enable-auth = «plain[passwd=/etc/ocserv/ocpasswd]»Теперь найдите следующую строку.

ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem

Для проверки сертификата клиента нам необходимо использовать наш собственный сертификат ЦС, поэтому измените эту строку на

ca-cert = /etc/ocserv/ssl/ca-cert.pem

Затем найдите следующую строку.

cert-user-oid = 0.9.2342.19200300.100.1.1Вам не нужно ее менять.

Я просто хочу сказать вам, что 0.9.2342.19200300.100.1.1 представляет UID, переданный в сертификат клиента.

Вышеупомянутая строка сообщает ocserv демону,  найти имя пользователя из поля UID сертификата клиента.

Если сертификат клиента успешно проверен сертификатом ЦС, а демон ocserv может найти совпадающее имя пользователя в файле /etc/ocserv/ocpasswd, клиент может войти в систему.

Сохраните и закройте файл. Затем перезапустите ocserv.

sudo systemctl restart ocserv

Использование аутентификации по сертификату на Ubuntu

Используйте команду scp для загрузки файла client.p12 на рабочий стол Ubuntu.

scp user@vpn.example.com:/etc/ocserv/ssl/client.p12 ~Затем установите клиентское программное обеспечение openconnect.

sudo apt install openconnect

Чтобы использовать аутентификацию по сертификату, запустите:

sudo openconnect -b vpn.example.com -c client.p12Вам будет предложено разблокировать закрытый ключ клиента паролем.

Если пароль введен правильно, вы должны быть подключены к VPN-серверу.

Использование проверки подлинности сертификата в Windows и MacOS

Загрузите клиент GUI OpenConnect для Window или MacOS со страницы OpenConnect GUI Github.

Затем создайте новый профиль подключения VPN и импортируйте файл PKCS # 12 в поле сертификата пользователя.

Нажмите кнопку «Сохранить».

Вам нужно будет ввести PIN-код, чтобы разблокировать закрытый ключ.

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

Использование аутентификации по сертификату на устройстве iOS

Пользователи iOS могут использовать приложение Cisco AnyConnect.

Чтобы импортировать сертификат клиента в приложение AnyConnect, вы можете сначала отправить файл PKCS # 12 на свой адрес электронной почты в приложении. Затем откройте приложение mail на iOS. Нажмите на приложение несколько секунд и поделитесь им с AnyConnect.

Затем введите PIN-код для импорта файла.

 

 

Настройка VPN IKEv2 сервера Mikrotik

Точное время

Настройка времени важна для любого VPN, поэтому сразу проверим/настроим часовой пояс и синхронизацию времени:

Mikrotik - NTP

В терминале:

/system clock set time-zone-name=Europe/Moscow
/system ntp client set enabled=yes server-dns-names=0.ru.pool.ntp.org,1.ru.pool.ntp.org

Сертификаты и ключи

Наш микротик будет:
а) выдавать и удостоверять ключи для себя (сервер VPN) и удаленных клиентов, для чего сначала будет настроен CA («удостоверяющий центр»),
б) выполнять роль VPN-сервера.

CA («удостоверяющий центр» — выдает заверенные сертификаты сервера и клиентов):

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

Mikrotik - CA

В терминале:

/certificate add name=cacert organization=»Bozza.ru» common-name=»cacert» key-size=4096 days-valid=3650 key-usage=crl-sign,key-cert-sign trusted=yes
/certificate sign cacert

Не забывайте подписывать все выпускаемые сертификаты! CA подписывает сам себя, а потом CA подписывает все остальные сертификаты!

Серверный сертификат:

Mikrotik - VPN server certificate

В терминале:

/certificate add name=Mikrotik organization=»Bozza.ru» common-name=»1.2.3.4″ subject-alt-name=IP:»1.2.3.4″ key-size=4096 days-valid=3650 key-usage=tls-server
/certificate sign Mikrotik ca=»cacert»

Клиентский сертификат:

Внимательно и аккуратно заполняйте поля Common Name и Subject Alt. Name — на основании этих полей на клиенте будет происходить проверка пользователя! Если допустить опечатку на этом месте, потом придется перевыпускать этот сертификат, а это немного заморочный процесс — выпуск, экспорт, скопировать, перенести и т.д.

Либо по стечению обстоятельств, либо это реально такое ограничение, но при выпуске сертификата, в левой части которого (до символа @) были заглавные буквы, Windows не подключалась к серверу с ошибкой 13801 «Неприемлемые учетные данные проверки подлинности ike».

Mikrotik VPN Client Certificate

В терминале:

/certificate add name=»vpnuser1@1.2.3.4″ organization=»Bozza.ru» common-name=»vpnuser1@1.2.3.4″ key-size=4096 days-valid=1095 key-usage=tls-client subject-alt-name=email:vpnuser1@1.2.3.4
/certificate sign vpnuser1 ca=»cacert»

В итоге, у нас есть ключи и сертификаты «cacert» (CA, выпускает и подписывает сертификаты), «Mikrotik» (VPN сервер), «vpnuser1» (клиент).

Экспорт ключей

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

Mikrotik VPN - Export Client Key and Certificate

В терминале:

/certificate export-certificate vpnuser1@1.2.3.4 type=pkcs12 export-passphrase=p@ssw0rd555

и сертификат CA «cacert» (только сертификат, БЕЗ ПРИВАТНОГО КЛЮЧА!):

Mikrotik Export Server Certificate (PEM)

На картинке опечатка закралась, экспорт происходит именно cacert, а не Mikrotik.

В терминале:

/certificate export-certificate cacert type=pem

Скачайте из Files файлы «cert_export_cacert.crt» и «cert_export_vpnuser1@1.2.3.4.p12» на клиентский компьютер и импортируйте сертификат и закрытый ключ в Личные сертификаты (если это Windows). Сертификат «ca» надо установить в «Доверенные корневые центры сертификации».

Сертификат должен стать для клиента VPN (неважно, Mac, Win, iPhone, Android) ДОВЕРЕННЫМ! Для этого и нужно экспортировать cacert и сделать его доверенным сертификатом CA на клиенте.

На iPhone можно отправить письмо с вложенными файлами сертификатов и установить их через Профили.

IKE VPN

3.1) Pool:
Клиентам VPN лучше всегда давать отдельные IP-адреса, отличные от основного диапазона. Создадим пул адресов для VPN:

Address pool

В терминале:

/ip pool add name=»ike_vpn_pool» ranges=»10.0.100.2-10.0.100.30″

3.2) Modeconfig:

IPSec - Mode Config

В терминале:

/ip ipsec mode-config add name=»modeconfig_ikev2″ address-pool=»ike_vpn_pool» address-prefix-length=32 split-include=0.0.0.0/0 static-dns=10.0.100.1 system-dns=no

Вариации:

/ip ipsec mode-config add address-pool=»ike_vpn_pool» address-prefix-length=32 name=»modeconfig_ikev2″ split-include=192.168.88.0/24 static-dns=10.0.100.1 system-dns=no

где 192.168.88.0/24 — сеть, маршрут к которой будет передан клиенту. Т.е. после установки VPN соединения клиент сможет сразу обращаться к ресурсам этой сети.

Если клиенты после подключения к удаленной сети должны иметь возможность обращаться к ресурсам удаленной сети не по IP, а по имени (например, server.office.local, а не 192.168.88.146), то надо передать клиенту не только маршрут до сети, но и сообщить ему адрес DNS сервера, отвечающего за разрешение имен в удаленной сети:

/ip ipsec mode-config add address-pool=»ike_vpn_pool» address-prefix-length=32 name=»modeconfig_ikev2″ split-include=192.168.88.0/24 static-dns=192.168.88.1 system-dns=no

где 192.168.88.1 — IP-адрес DNS-сервера (в данном случае, это IP самого микротика).

3.3) Profile:

Касается т.н. фазы 1 (Phase 1, Security Association, SA), на которой согласовываются тип аутентификации, группа Diffie-Hellman, алгоритм шифрования. SA (фазы 1) существует определенное время, в течение которого устройства должны завершить вторую фазу. Если не успевают, то повторяется фаза 1.

IPSec Profile

В терминале:

/ip ipsec profile add name=»profile_ikev2″ dh-group=modp1024,modp1536,modp2048 enc-algorithm=aes-128,aes-192,aes-256 hash-algorithm=sha256 nat-traversal=yes proposal-check=obey

3.4) Peer (кого и куда принимаем):

IPSec - Peer

В терминале:

/ip ipsec peer add name=»peer_ikev2″ exchange-mode=ike2 address=0.0.0.0/0 local-address=1.2.3.4 passive=yes send-initial-contact=yes profile=»profile_ikev2″

— принимаем всех (0.0.0.0/0) на внешний адрес микротика (1.2.3.4) — адресов-то может быть много и не обязательно это будет публичный IP.

3.5) Proposal:

IPSec Proposal

В терминале:

/ip ipsec proposal add name=»proposal_ikev2″ auth-algorithms=sha1,sha256,sha512 enc-algorithms=aes-128-cbc,aes-128-ctr,aes-128-gcm,aes-192-ctr,aes-192-gcm,aes-256-cbc,aes-256-ctr,aes-256-gcm lifetime=1h pfs-group=none

Относится к так называемой второй фазе (Phase 2, IPSec SA), когда устанавливается, как будет проходить шифрование и аутентификация (проверка, что получены именно те данные, которые были отправлены) данных, а также частота обновления ключей. По-умолчанию, ключи обновляются каждые 8 часов (это время можно менять параметром lifetime).

3.6) Policy group:

IPSec Group

В терминале:

/ip ipsec policy group add name=group_ikev2

3.7) Policy:

IPSec Policy

В терминале:

/ip ipsec policy add src-address=0.0.0.0/0 dst-address=10.0.100.0/24 protocol=all template=yes group=»group_ikev2″ action=encrypt ipsec-protocols=esp proposal=»proposal_ikev2″

3.8) Identity (для каждого пользователя — свой):

Внимательно и аккуратно выбирайте параметры. Для сертификата «vpnuser1@1.2.3.4» указывается Remote ID «vpnuser1@1.2.3.4» и проверка того, имеет ли право удаленный пользователь подключиться или нет, будет происходить на основании данных из сертификата:

IPSec Identity

  • «Remote ID Type» определяет, какой ID ожидается от удаленного клиента. Например, тип «user fqdn», доступный только в IKEv2, позволяет указать полное имя удаленного клиента в виде  «vpnuser1@1.2.3.4».
  • «Match By» определяет, с чем сравнивать «peers identity» (ID удаленного клиента) — с сертификатом (из Remote Certificate) или с данными из поля Remote ID. Не все клиенты могут прислать кастомный ID. Например, встроенный VPN клиент в Windows не позволяет указать Remote ID, а просто предлагает «использовать сертификат компьютера».

В терминале:

/ip ipsec identity add auth-method=digital-signature certificate=Mikrotik remote-certificate=vpnuser1@1.2.3.4 generate-policy=port-strict match-by=certificate mode-config=»modeconfig_ikev2″ peer=»peer_ikev2″ policy-template-group=»group_ikev2″ remote-id=user-fqdn:vpnuser1@1.2.3.4

Дальше надо настроить firewall.

FIREWALL

Сферический firewall в вакууме, нужно аккуратно адаптировать эти правила в ваш firewall.

Пожалуйста, внимательно смотрите, что вы разрешаете или запрещаете в firewall. Любые сертификаты будут бессмысленны, если вы случайно разрешите input на внемнем интерфейсе.

Mikrotik VPN IKEv2 Firewall Example

INPUT (разрешить входящие на 500/udp И 4500/udp):

/ip firewall filter
add action=drop chain=input comment=»invalid» connection-state=invalid
add action=accept chain=input comment=»established» connection-state=established
add action=accept chain=input comment=»related» connection-state=related
add action=accept chain=input connection-state=new dst-port=500 protocol=udp
add action=accept chain=input connection-state=new dst-port=4500 protocol=udp

add action=drop chain=input comment=»drop everything else»

ЗЫ: еще пишут в примерах, что надо разрешить протокол ipsec-esp, но я проверял :) отключение ни чему не мешает, поэтому и добавлять лишнее не будем.

FORWARD:

/ip firewall filter
add action=drop chain=forward comment=»invalid» connection-state=invalid
add action=accept chain=forward comment=»established» connection-state=established
add action=accept chain=forward comment=»related» connection-state=related
add action=accept chain=forward comment=»in:ipsec» ipsec-policy=in,ipsec
add action=accept chain=forward comment=»VPN-to-LAN» dst-address=\
192.168.88.0/24 ipsec-policy=in,ipsec src-address=10.0.100.0/24
NAT

Чтобы VPN-клиенты могли выходить в интернет, настроим NAT:

Mikrotik Firewall NAT IPSec

/ip firewall nat
add action=src-nat chain=srcnat ipsec-policy=out,none out-interface=ether1-gateway src-address=10.0.100.0/24 to-addresses=1.2.3.4
add action=masquerade chain=srcnat comment=»default» out-interface=ether1-gateway

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

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

1) по email (сертификаты как вложение), открыть вложенный cacert и vpnclient1 программой Mail и установить профиль;
2) по ссылке открыть в Safari и установить профиль
3) передать по AirDrop с MacBook, к примеру.

Стоит подумать, как лучше, потому что в данном случае передается ключ для доступа, а не какая-то ерунда. При отправке по email потом надо удалить письмо из отправленных, входящих, из корзины и еще где там может осесть письмо — автоархив какой-нить. Если передать надо удаленному клиенту, вариантов не много. Но если настраивается устройство, доступное локально — стоит заморочиться.

Например, можно на компе открыть микро-веб сервер, например, с помощью Python:

cd c:\certs\
python -m http.server 8080

и с iPhone в Safari открыть http://ip-address-компа

Установите сертификаты и ключ через профили (там все интуитивно, описывать, думаю, не стоит). А саму настройку VPN IKEv2 — просто приведу картинку-скрин экрана:

Обратите внимание на то, что локальный ID повторяет имя (Name, Common Name, Subject Alternative Name) клиентского сертификата.

Аутентификация пользователя происходит автоматически, на основании данных из сертификата.

iPhone IKEv2 VPN Settings

MacOS

Суть процесса: открываете «Связка ключей», в ней импортируете сначала cacert (доверенный центр сертификации), а потом сертификат vpnuser1. В «Системные настройки» в пункте «Сеть» добавляете VPN подключение, тип IKEv2, поля заполняете так же как в iOS (картинка выше), выбираете сертификат и все. Готово.

Windows 7/10

Суть такая — сертификат устанавливается в учетную запись компьютера, а не пользователя (по-умолчанию, certmgr.msc предлагает именно Пользователя). mmc.exe — Сертифкаты — Учетная запись компьютера.

Там уже добавляете в доверенные корневые cacert, а в Личные — vpnuser1 (Сертификаты — Личное — Сертификаты, правой мышкой — Все задачи — Импорт).

Ну и настраиваете IKEv2 VPN стандартно.

Настройка сервера IKEv2 VPN с StrongSwan в Ubuntu 20.04

Введение

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

Internet Key Exchange v2 или IKEv2 — это протокол, который позволяет создавать прямые туннели IPSec между сервером и клиентом. IPSec обеспечивает шифрование сетевого трафика в виртуальных частных сетях IKEv2. IKEv2 изначально поддерживается на ряде платформ (OS X 10.11+, iOS 9.1+, Windows 10) без дополнительных приложений и легко решает проблемы с подключением клиентов.

В этом обучающем руководстве мы настроим сервер IKEv2 VPN с помощью StrongSwan на сервере Ubuntu 20.04. Затем вы узнаете, как подключиться к нему с помощью клиентов Windows, macOS, Ubuntu, iOS и Android.

Предварительные требования

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

  • Один сервер Ubuntu 20.04, настроенный в соответствии с руководством по начальной настройке сервера Ubuntu 20.04, с пользователем без прав root с привилегиями sudo и брандмауэром.

Шаг 1 — Установка StrongSwan

Вначале мы установим StrongSwan, демона IPSec с открытым исходным кодом, а затем настроим его как наш сервер VPN. Также мы установим компонент инфраструктуры открытых ключей (PKI), чтобы создать центр сертификации (СА), который будет предоставлять учетные данные для нашей инфраструктуры.

Начните с обновления кэша локальных пакетов:

  1. sudoapt update

Затем установите программное обеспечение с помощью следующей команды:

  1. sudoaptinstall strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins

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

После завершения установки перейдем к созданию сертификатов.

Шаг 2 — Создание центра сертификации

Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Для упрощения формирования требуемого сертификата пакет strongswan-pki включает утилиту pki, которая может сгенерировать центр сертификации и сертификаты сервера.

Для начала создадим несколько каталогов для хранения всех активов, с которыми мы будем работать. Структура каталогов соответствует некоторым каталогам в /etc/ipsec.d, куда мы постепенно переместим все создаваемые элементы:

  1. mkdir -p ~/pki/{cacerts,certs,private}

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

  1. chmod700 ~/pki

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

Запустите следующие команды, чтобы сгенерировать ключ:

  1. pki —gen —type rsa —size 4096 —outform pem > ~/pki/private/ca-key.pem

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

  1. pki —self —ca —lifetime 3650 —in ~/pki/private/ca-key.pem \
  2. —type rsa —dn «CN=VPN root CA» —outform pem > ~/pki/cacerts/ca-cert.pem

Флаг —lifetime 3650 используется для обеспечения действительности корневого сертификата центра сертификации на протяжении 10 лет. Корневой сертификат центра обычно не меняется, поскольку его необходимо перераспределять на каждый использующий его сервер и клиент. Исходя из этого, 10 лет — это безопасный срок действия по умолчанию.

Вы можете изменить значение различимого имени distinguished name (DN) на любое другое имя по своему желанию. Обычное имя (поле CN) здесь используется только как индикатор, поэтому оно не обязательно должно совпадать с чем-либо в вашей инфраструктуре.

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

Шаг 3 — Генерирование сертификата для сервера VPN

Теперь мы создадим сертификат и ключ для сервера VPN. Этот сертификат позволит клиентам проверять подлинность сервера, используя только что сгенерированный нами сертификат CA.

Вначале создайте закрытый ключ сервера VPN с помощью следующей команды:

  1. pki —gen —type rsa —size 4096 —outform pem > ~/pki/private/server-key.pem

Затем создайте и подпишите сертификат сервера VPN, используя ключ центра сертификации, созданный на предыдущем шаге. Запустите следующую команду, но измените поля Common Name (CN) и Subject Alternate Name (SAN) на имя DNS или IP-адрес вашего сервера VPN:

  1. pki —pub —in ~/pki/private/server-key.pem —type rsa \
  2. | pki —issue —lifetime 1825\
  3. —cacert ~/pki/cacerts/ca-cert.pem \
  4. —cakey ~/pki/private/ca-key.pem \
  5. —dn «CN=server_domain_or_IP» —san server_domain_or_IP\
  6. —flag serverAuth —flag ikeIntermediate —outform pem \
  7. > ~/pki/certs/server-cert.pem

Примечание. Если вы используете IP-адрес вместо имени DNS, вам потребуется указать несколько входов —san. Строка в предыдущем блоке команд, где вы указываете distinguished name (—dn …), должна быть дополнена еще одной строкой, например следующей:

—dn «CN=IP address —san @IP_address —san IP_address \Дополнение —san @IP_address необходимо, так как некоторые клиенты буду проверять наличие в сертификате TLS как записи DNS, так и записи IP-адреса для сервера при проверке его подлинности.

Опция —flag serverAuth используется для указания того, что сертификат будет использоваться для аутентификации сервера, прежде чем будет установлен зашифрованный туннель. Опция —flag ikeIntermediate используется для поддержки более старых клиентов macOS.

Теперь мы сгенерировали все файлы TLS/SSL, необходимые StrongSwan, и можем переместить их в каталог /etc/ipsec.d следующим образом:

  1. sudocp -r ~/pki/* /etc/ipsec.d/

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

Шаг 4 — Настройка StrongSwan

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

  1. sudomv /etc/ipsec.conf{,.original}

Создайте и откройте новый пустой файл конфигурации с помощью предпочитаемого текстового редактора. Мы будем использовать nano:

  1. sudonano /etc/ipsec.conf

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

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

Вначале мы укажем StrongSwan регистрировать состояния демонов для целей отладки и разрешить дублирующиеся соединения. Добавьте в файл следующие строки:

/etc/ipsec.confconfig setup charondebug=»ike 1, knl 1, cfg 0″ uniqueids=noЗатем мы создадим раздел конфигурации для сервера VPN. Также мы укажем StrongSwan создать туннели IKEv2 VPN и автоматически загружать этот раздел конфигурации при запуске. Добавьте в файл следующие строки:

/etc/ipsec.conf. . . conn ikev2-vpn auto=add compress=no type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yesТакже мы настроем обнаружение отсутствующих узлов, чтобы закрывать неиспользуемые соединения при непредвиденном отключении клиента. Добавьте следующие строки:

/etc/ipsec.conf. . . conn ikev2-vpn . . . dpdaction=clear dpddelay=300s rekey=noЗатем мы настроим параметры IPSec «левой» стороны сервера. Каждый из следующих параметров обеспечивает конфигурацию сервера для приема соединений от клиентов и корректной идентификации себя. Вы добавите каждую из этих настроек в файл /etc/ipsec.conf после того, как вы изучите их и поймете, для чего они используются:

  • left=%any Значение %any гарантирует использование сервером сетевого интерфейса при получении входящих соединений для последующей связи с клиентами. Например, если вы подключаете клиента через частную сеть, сервер будет использовать частный IP-адрес, где он получает трафик для остальной части подключения.
  • leftid=@server_domain_or_IP Эта опция контролирует имя, которое сервер показывает клиентам. При совмещении со следующей опцией leftcert, опция leftid обеспечивает совпадение настроенного имени сервера и различимого имени (DN), содержащегося в публичном сертификате.
  • leftcert=server-cert.pem Эта опция — это путь к публичному сертификату для сервера, который вы настроили на шаге 3. Без него сервер не сможет аутентифицировать себя с клиентами или завершить переговоры по настройке IKEv2.
  • leftsendcert=always Значение always гарантирует, что любой клиент, который подключается к серверу, всегда будет получать копию публичного сертификата сервера в рамках настроек первоначального соединения.
  • leftsubnet=0.0.0.0/0 Последняя опция «слева», которую вы добавите, указывает клиентам на подсети, которые доступны за сервером. В этом случае 0.0.0.0/0 используется для представления всего набора адресов IPv4, что означает, что сервер будет указывать клиентам передавать весь свой трафик через VPN по умолчанию.

Теперь, когда вы ознакомились с каждой из соответствующих опций «слева», добавьте их в файл следующим образом:

/etc/ipsec.conf. . . conn ikev2-vpn . . . left=%any leftid=@server_domain_or_IP leftcert=server-cert.pem leftsendcert=always leftsubnet=0.0.0.0/0Примечание. При настройке идентификатора сервера (leftid) символ @ нужно указывать только в случае, если ваш сервер VPN будет идентифицироваться по доменному имени:

/etc/ipsec.conf . . . leftid=@vpn.example.com . . .Если сервер будет идентифицироваться по IP-адресу, просто укажите IP-адрес:

/etc/ipsec.conf . . . leftid=your_server_ip . . .Далее мы можем настроить параметры IPSec клиента «справа». Каждый из следующих параметров указывает серверу, как принимать соединения от клиентов, как клиенты должны аутентифицироваться на сервере, а также сообщает диапазоны частных IP-адресов и серверы которые будут использовать клиенты. Добавьте каждую из этих настроек в файл /etc/ipsec.conf после того, как изучите их и поймете, для чего они используются:

  • right=%any Опция %any для стороны соединения right предписывает серверу принимать входящие соединения от удаленных клиентов.
  • rightid=%any Эта опция гарантирует, что сервер не будет отклонять соединения от клиентов, которые предоставляют идентификатор до создания зашифрованного туннеля.
  • rightauth=eap-mschapv2 Эта опция настраивает метод аутентификации, который будут использовать клиенты для аутентификации на сервере. eap-mschapv2 используется здесь для расширения возможностей совместимости и поддержки таких клиентов, как устройства на базе Windows, macOS и Android.
  • rightsourceip=10.10.10.0/24 Эта опция предписывает серверу назначать частные IP-адреса клиентам из указанного пула IP-адресов 10.10.10.0/24.
  • rightdns=8.8.8.8,8.8.4.4 Эти IP-адреса являются публичными интерпретаторами DNS Google. Вместо них можно использовать другие публичные интерпретаторы, интерпретаторы сервера VPN или любые другие, к которым у клиента есть доступ.
  • rightsendcert=never Эта опция сообщает серверу, что клиентам не нужно отправлять сертификат для аутентификации себя.

Теперь, когда вы ознакомились с необходимыми опциями «справа», добавьте следующие строки в /etc/ipsec.conf:

/etc/ipsec.conf. . . conn ikev2-vpn . . . right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 rightsendcert=neverТеперь мы укажем StrongSwan запрашивать у клиента учетные данные пользователя при подключении:

/etc/ipsec.conf. . . conn ikev2-vpn . . . eap_identity=%identityИ наконец, добавьте следующие строки для поддержки клиентов на базе Linux, Windows, macOS, iOS и Android. Эти строки определяют различные алгоритмы обмена ключами, хэширования, аутентификации и шифрования (обычно их называют набор шифров), которые StrongSwan разрешит использовать разным клиентам.

/etc/ipsec.conf. . . conn ikev2-vpn . . . ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!Каждый поддерживаемый набор шифров отделяется от других запятой. Например, chacha20poly1305-sha512-curve25519-prfsha512 — это один набор, а aes256gcm16-sha384-prfsha384-ecp384 — другой. Перечисленные здесь наборы шифров выбраны для обеспечения самых широких возможностей совместимости с клиентами на базе Windows, macOS, iOS, Android и Linux.

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

/etc/ipsec.confconfig setup charondebug=»ike 1, knl 1, cfg 0″ uniqueids=no conn ikev2-vpn auto=add compress=no type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any leftid=@server_domain_or_IP leftcert=server-cert.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 rightsendcert=never eap_identity=%identity ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!Сохраните и закройте файл после того, как проверите, что все строки добавлены корректно. Если вы используете nano, нажмите CTRL+X, Y, затем ENTER.

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

Шаг 5 — Настройка аутентификации VPN

Теперь наш сервер VPN настроен на принятие подключений клиентов, но мы еще не настроили учетные данные. Нам нужно задать пару настроек в специальном файле конфигурации с именем ipsec.secrets:

  • Нам нужно указать StrongSwan, где можно найти закрытый ключ для нашего сертификата сервера, чтобы сервер мог пройти аутентификацию на стороне клиента.
  • Также нам потребуется список пользователей, которым будет разрешено подключаться к VPN.

Откроем для редактирования файл secrets

  1. sudonano /etc/ipsec.secrets

Вначале мы укажем StrongSwan, где можно найти закрытый ключ:

/etc/ipsec.secrets: RSA «server-key.pem»Затем мы зададим учетные данные пользователя. Вы можете создать любую комбинацию имени пользователя и пароля:

/etc/ipsec.secretsyour_username : EAP «your_password»Сохраните и закройте файл. Мы завершили настройку параметров VPN и теперь можем перезапустить службу VPN, чтобы применить новую конфигурацию:

  1. sudo systemctl restart strongswan-starter

Мы полностью настроили параметры сервера и учетные данные пользователя на сервере VPN и теперь можем перейти к самой важной части: настройке брандмауэра.

Шаг 6 — Настройка брандмауэра и переадресации IP ядра

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

Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Если вы еще не настроили UFW, вам следует начать с добавления правила, разрешающего соединения SSH через брандмауэр, чтобы ваш текущий сеанс не был прерван при активации UFW:

  1. sudo ufw allow OpenSSH

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

  1. sudo ufw enable

Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec 500 и 4500:

  1. sudo ufw allow 500,4500/udp

Затем мы откроем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Но прежде чем мы сможем сделать это, нам нужно определить, какой сетевой интерфейс на нашем сервере используется для доступа в Интернет. Определите этот интерфейс с помощью запроса устройства, связанного с маршрутом по умолчанию:

  1. ip route show default

Ваш публичный интерфейс должен содержать слово «dev». Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:

Outputdefault via your_server_ip dev eth0 proto staticОпределив интерфейс публичной сети, откройте файл /etc/ufw/before.rules в своем текстовом редакторе: Правила из этого файла добавляются в брандмауэр перед остальными правилами ввода и вывода. Они используются для настройки перевода сетевых адресов (NAT), чтобы сервер мог корректно настраивать соединения между клиентами и сетью Интернет.

  1. sudonano /etc/ufw/before.rules

Добавьте в верхнюю часть файла (перед строкой *filter) следующий блок конфигурации: Измените каждый экземпляр eth0 в конфигурации выше для соответствия имени интерфейса, которое вы определили с помощью ip route. Строки *nat создают правила, благодаря которым брандмауэр может обеспечивать маршрутизацию и управление трафиком между клиентами VPN и интернетом. Строка *mangle позволяет настроить максимальный размер сегмента пакета, чтобы предотвратить возможные проблемы с некоторыми клиентами VPN:

/etc/ufw/before.rules*nat-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy —pol ipsec —dir out -j ACCEPT-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADECOMMIT*mangle-A FORWARD —match policy —pol ipsec —dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp —tcp-flags SYN,RST SYN -m tcpmss —mss 1361:1536 -j TCPMSS —set-mss 1360COMMIT *filter :ufw-before-input — [0:0] :ufw-before-output — [0:0] :ufw-before-forward — [0:0] :ufw-not-local — [0:0] . . .После строки *filter и строк определения цепочки нужно добавить еще один блок конфигурации:

/etc/ufw/before.rules. . . *filter :ufw-before-input — [0:0] :ufw-before-output — [0:0] :ufw-before-forward — [0:0] :ufw-not-local — [0:0] -A ufw-before-forward —match policy —pol ipsec —dir in —proto esp -s 10.10.10.0/24 -j ACCEPT-A ufw-before-forward —match policy —pol ipsec —dir out —proto esp -d 10.10.10.0/24 -j ACCEPTЭти строки указывают брандмауэру перенаправлять трафик ESP (защищенная инкапсуляция полезной нагрузки), чтобы дать клиентам VPN возможность подключения. ESP обеспечивает дополнительную защиту пакетов VPN, когда они проходят через ненадежные сети.

Сохраните и закройте файл после того, как проверите, что все строки добавлены корректно. Если вы используете nano, нажмите CTRL+X, Y, затем ENTER.

Прежде чем перезапустить брандмауэр, нам нужно изменить некоторые параметры ядра сети, чтобы разрешить маршрутизацию с одного интерфейса на другой. Файл, который контролирует эти настройки, называется /etc/ufw/sysctl.conf. Нам потребуется настроить в файле несколько вещей.

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

Откройте файл конфигурации параметров ядра UFW, используя nano или предпочитаемый текстовый редактор:

  1. sudonano /etc/ufw/sysctl.conf

Теперь добавьте следующую настройку net/ipv4/ip_forward=1 в конце файла, чтобы активировать перенаправление пакетов между интерфейсами:

/etc/ufw/sysctl.conf. . . net/ipv4/ip_forward=1Следующий блок, отправляющий и принимающий ICMP , перенаправляет пакеты путем добавления следующих строк в конец файла:

/etc/ufw/sysctl.conf. . . net/ipv4/conf/all/accept_redirects=0net/ipv4/conf/all/send_redirects=0И наконец, отключите обнаружение путей MTU, добавив следующую строку в конец файла:

/etc/ufw/sysctl.conf. . . net/ipv4/ip_no_pmtu_disc=1Завершив изменения, сохраните файл. Теперь мы можем активировать все изменения путем отключения и повторного подключения брандмауэра, поскольку UFW применяет эти настройки во время каждой перезагрузки.

  1. sudo ufw disable
  2. sudo ufw enable

Вам будет предложено подтвердить процесс. Введите Y, чтобы активировать UFW с новыми настройками.

Шаг 7 — Тестирование подключения VPN на Windows, macOS, Ubuntu, iOS и Android

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

  1. cat /etc/ipsec.d/cacerts/ca-cert.pem

Вывод будет выглядеть следующим образом:

Output——BEGIN CERTIFICATE—— MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE . . . H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA== ——END CERTIFICATE——Скопируйте эти данные на свой компьютер, включая строки ——BEGIN CERTIFICATE—— и ——END CERTIFICATE——, и сохраните их в файл с понятным именем, например, ca-cert.pem. Созданный файл должен иметь расширение .pem.

Также вы можете использовать SFTP, чтобы перенести файл на свой компьютер.

Когда файл ca-cert.pem будет загружен на ваш компьютер, вы можете настроить подключение к VPN.

Подключение из Windows

Существует множество способов импорта корневого сертификата и настройки Windows для подключения к VPN. Первый метод использует графические инструменты для каждого шага. Второй метод использует команды PowerShell, которые могут выполняться с помощью скриптов и меняться в зависимости от конфигурации VPN.

Примечание. Эти инструкции протестированы на установках Windows 10, использующих версии 1903 и 1909.

Настройка Windows с помощью графических инструментов

Вначале импортировать сертификат root, выполнив следующие шаги:

  1. Нажмите WINDOWS+R, чтобы открыть диалоговое окно Выполнить и введите mmc.exe, чтобы открыть консоль управления Windows.
  2. Из меню Файл перейдите в раздел Добавить или удалить оснастку, выберите Сертификаты из списка доступных оснасток и нажмите Добавить.
  3. Чтобы разрешить VPN работать для любых пользователей, выберите Учетная запись компьютера и нажмите Далее.
  4. Поскольку мы выполняем настройку на локальном компьютере, выберите пункт Локальный компьютер и нажмите Готово.
  5. Под узлом Корень консоли откройте запись Сертификаты (локальный компьютер), раскройте Доверенные корневые центры сертификации и выберите запись Сертификаты:Просмотр сертификатов
  6. В меню Действие выберите пункт Все задачи и нажмите Импорт, чтобы открыть мастер импорта сертификатов. Нажмите Далее, чтобы пролистать вводное окно.
  7. На экране Импортируемый файл нажмите кнопку Обзор, убедитесь, что вы изменили тип файла с “X.509 Certificate (.cer;.crt)” на “All Files (.) и выберите сохраненный ранее файл ca-cert.pem. Затем нажмите Далее.
  8. Убедитесь, что Хранилище сертификатов имеет значение Доверенные корневые центры сертификации и нажмите Далее.
  9. Нажмите Готово, чтобы импортировать сертификат.

Затем выполните следующие шаги по настройке VPN:

  1. Откройте Панель управления и перейдите в Центр управления сетями и общим доступом.
  2. Нажмите Создание и настройка нового подключения или сети и выберите пункт Подключение к рабочем месту.
  3. Выберите пункт Использовать мое подключение к Интернету (VPN).
  4. Введите данные сервера VPN. Введите доменное имя сервера или IP-адрес в поле Адрес в Интернете, затем введите в поле Имя пункта назначения описание своего соединения VPN. Затем нажмите Готово.

Настройка Windows с помощью PowerShell

Для импорта корневого сертификата СА с помощью PowerShell сначала откройте командную строку PowerShell с правами администратора. Для этого нажмите правой кнопкой мыши значок Пуск и выберите Windows PowerShell (Admin). Также вы можете открыть командную строку как администратор и ввести powershell.

Затем мы импортируем сертификат, используя командлет PowerShell Import-Certificate. В следующей команде первый аргумент -CertStoreLocation гарантирует, что сертификат импортируется в хранилище доверенных корневых центров сертификации компьютера, чтобы все программы и пользователи могли проверить сертификат сервера VPN. Аргумент -FilePath должен указать расположение, куда вы скопировали сертификат. В следующем примере путь — это C:\Users\sammy\Documents\ca-cert.pem. Убедитесь, что вы отредактировали команду в соответствии с используемым расположением.

  1. «>Import-Certificate `
  2. «> -CertStoreLocation cert:\LocalMachine\Root\`
  3. «> -FilePath C:\users\sammy\Documents\ca-cert.pem

Команда выведет примерно следующее:

Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root Thumbprint Subject ———- ——- DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CAТеперь для настройки VPN с помощью PowerShell запустите следующую команду. Подставьте имя DNS или IP-адрес вашего сервера в строку -ServerAddress. Различные флаги обеспечат корректную настройку Windows с необходимыми параметрами безопасности, которые соответствуют опциям, заданным в /etc/ipsec.conf.

  1. «>Add-VpnConnection -Name «VPN Connection»`
  2. «> -ServerAddress «server_domain_or_IP»`
  3. «> -TunnelType «IKEv2″`
  4. «> -AuthenticationMethod «EAP»`
  5. «> -EncryptionLevel «Maximum»`
  6. «> -RememberCredential `

Если команда выполнена успешно, вы не увидите никакого вывода. Чтобы убедиться, что VPN настроен корректно, используйте командлет Get-VPNConnection:

  1. «>Get-VpnConnection -Name «VPN Connection»

Вывод будет выглядеть следующим образом:

OutputName : VPN Connection ServerAddress : your_server_ip AllUserConnection : False Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E} TunnelType : Ikev2 AuthenticationMethod : {Eap} EncryptionLevel : Maximum L2tpIPsecAuth : UseWinlogonCredential : False EapConfigXmlStream : #document ConnectionStatus : Disconnected RememberCredential : True SplitTunneling : False DnsSuffix : IdleDisconnectSeconds : 0По умолчанию Windows выбирает более старые и медленные алгоритмы. Запустите командлет Set-VpnConnectionIPsecConfiguration для обновления параметров шифрования, которые будет использовать Windows для обмена ключами IKEv2, а также чтобы провести шифрование пакетов:

  1. «>Set-VpnConnectionIPsecConfiguration -Name «VPN Connection»`
  2. «> -AuthenticationTransformConstants GCMAES256 `
  3. «> -CipherTransformConstants GCMAES256 `
  4. «> -DHGroup ECP384 `
  5. «> -IntegrityCheckMethod SHA384 `
  6. «> -PfsGroup ECP384 `
  7. «> -EncryptionMethod GCMAES256

Примечание. Если вы хотите удалить соединение VPN и перенастроить его с другими опциями, вы можете запустить командлет Remove-VpnConnection.

  1. «>Remove-VpnConnection -Name «VPN Connection» -Force

С помощью флага -Force можно пропустить предложение подтвердить удаление. Вы должны быть отключены от VPN, если хотите удалить его с помощью данной команды.

Подключение к VPN

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

Подключение из macOS

Выполните следующие шаги по импорту сертификата:

  1. Дважды щелкните файл сертификата. Откроется экран «Keychain Access» с диалоговым окном, где будет указано: «Keychain Access is trying to modify the system keychain. Enter your password to allow this».
  2. Введите свой пароль и нажмите Modify Keychain
  3. Дважды щелкните импортированный сертификат VPN. После этого откроется небольшое окно свойств, где вы сможете указать уровни доверия. Укажите для параметра IP Security (IPSec) значение Always Trust (всегда доверять), после чего вам нужно будет снова ввести пароль. Настройка будет сохранена автоматически после ввода пароля.

После импорта и подтверждения надежности сертификата настройте подключение к VPN, выполнив следующие шаги:

  1. Откройте раздел System Preferences (настройки системы) и выберите пункт Network (сеть).
  2. Нажмите небольшую кнопку «плюс» в нижнем левом углу списка сетей.
  3. В открывшемся всплывающем окне установите для параметра Interface (интерфейс) значение VPN, установите для параметра VPN Type (тип VPN) значение IKEv2 и присвойте имя соединению.
  4. В поле Server (сервер) и Remote ID (удаленный идентификатор) введите доменное имя или IP-адрес сервера. Оставьте поле Local ID (локальный идентификатор) пустым.
  5. Нажмите Authentication Settings (настройки аутентификации), выберите пункт Username (имя пользователя) и введите имя пользователя и пароль, которые вы настроили для своего пользователя VPN. Затем нажмите OK.

Наконец, нажмите кнопку Connect (подключение) для подключения к VPN. Теперь вы должны быть подключены к VPN.

Подключение из Ubuntu

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

Управление StrongSwan как службой

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

Сначала обновите свой локальный кэш пакетов с помощью apt

  1. sudoapt update

Затем установите StrongSwan и необходимые плагины для аутентификации:

  1. sudoaptinstall strongswan libcharon-extra-plugins

Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

  1. sudocp/tmp/ca-cert.pem /etc/ipsec.d/cacerts

Чтобы убедиться, что VPN работает только по запросу, используйте systemctl для автоматического отключения StrongSwan:

  1. sudo systemctl disable —now strongswan-starter

Затем настройте имя пользователя и пароль, которые вы будете использовать для аутентификации на сервере VPN. Отредактируйте /etc/ipsec.secrets с помощью nano или любого предпочитаемого редактора:

  1. sudonano /etc/ipsec.conf

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

/etc/ipsec.confyour_username : EAP «your_password»А теперь отредактируйте файл /etc/ipsec.conf для настройки вашего клиента в соответствии с конфигурацией сервера:

/etc/ipsec.confconfig setup conn ikev2-rw right=server_domain_or_IP # This should match the `leftid` value on your server’s configuration rightid=server_domain_or_IP rightsubnet=0.0.0.0/0 rightauth=pubkey leftsourceip=%config leftid=username leftauth=eap-mschapv2 eap_identity=%identity auto=startЧтобы подключиться к VPN, введите:

  1. sudo systemctl start strongswan-starter

Чтобы снова отключиться, введите:

  1. sudo systemctl stop strongswan-starter

Использование клиента charon-cmd для разовых подключений

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

Сначала обновите свой локальный кэш пакетов с помощью apt

  1. sudoapt update

Затем установите StrongSwan и необходимые плагины для аутентификации:

  1. sudoaptinstall strongswan libcharon-extra-plugins

Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

  1. sudocp/tmp/ca-cert.pem /etc/ipsec.d/cacerts

На этом этапе вы можете подключиться к серверу VPN с помощью charon-cmd, используя сертификат СА сервера, IP-адрес сервера VPN и настроенное имя пользователя.

Запустите следующую команду для подключения к VPN в любое время:

  1. sudo charon-cmd —cert ca-cert.pem —host vpn_domain_or_IP —identity your_username

При запросе укажите пароль пользователя VPN. После этого вы подключитесь к VPN. Чтобы отключиться, нажмите CTRL+C в терминале и дождитесь, пока соединение не будет закрыто.

Подключение из iOS

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

  1. Отправьте себе электронное письмо с прикрепленным корневым сертификатом.
  2. Откройте электронное письмо на устройстве iOS, нажмите на вложенный файл сертификата, затем нажмите Установить и введите код доступа. После установки нажмите Готово.
  3. Откройте Настройки, Общие, VPN и нажмите Добавить конфигурацию VPN. После этого откроется экран конфигурации подключения VPN.
  4. Нажмите Тип и выберите IKEv2.
  5. В поле Описание введите короткое имя подключения VPN. Вы можете выбрать все, что угодно.
  6. В поле Server (сервер) и Remote ID (удаленный идентификатор) введите доменное имя или IP-адрес сервера. Поле Local ID (локальный идентификатор) нельзя оставлять пустым.
  7. Введите имя пользователя и пароль в разделе Аутентификация, а затем нажмите Готово.
  8. Выберите соединение VPN, которое вы только что создали, нажмите переключатель вверху страницы, и подключение будет установлено.

Подключение из Android

Выполните следующие шаги по импорту сертификата:

  1. Отправьте себе электронное письмо с прикрепленным сертификатом CA. Сохраните сертификат CA в папку «Загрузки».
  2. Загрузите клиент StrongSwan VPN из магазина Play Store.
  3. Откройте приложение. Нажмите значок «подробнее» (. . .) в правом верхнем углу и выберите Сертификаты СА.
  4. Снова нажмите значок «подробнее» . . . в правом верхнем углу. Выберите пункт Импорт сертификата.
  5. Найдите файл сертификата CA в папке «Загрузки» и выберите его для импорта в приложение.

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

  1. В приложении нажмите ADD VPN PROFILE (добавить профиль VPN) сверху.
  2. Введите в поле Server (сервер) доменное имя или публичный IP-адрес вашего сервера VPN.
  3. Обязательно выберите тип VPN: IKEv2 EAP (Username/Password).
  4. Введите поля Username (имя пользователя) и Password (пароль) учетные данные, определенные на сервере.
  5. Уберите флажок Select automatically (выбирать автоматически) в разделе CA certificate (сертификат CA) и нажмите Select CA certificate (выбрать сертификат CA).
  6. Откройте вкладку IMPORTED (импортированные) вверху экрана и выберите импортированный CA (он будет иметь имя «VPN root CA», если вы до этого не изменяли значение «DN»).
  7. Если хотите, можете ввести в поле Profile name (optional) (имя профиля, необязательно) более понятное имя.

Когда вы захотите подключится к VPN, нажмите на профиль, созданный в приложении StrongSwan.

Диагностика и устранение неисправностей подключения

Если вы не сможете импортировать сертификат, убедитесь, что файл имеет расширение .pem, а не .pem.txt.

Если вы не можете подключиться к VPN, проверьте используемые имя сервера и IP-адрес. Доменное имя или IP-адрес сервера должны соответствовать настроенным как общее имя (CN) при создании сертификата. Если они не совпадают, соединение VPN не будет работать. Например, если вы настроили сертификат с CN vpn.example.com, вы должны использовать vpn.example.com при вводе данных сервера VPN. Еще раз проверьте команду, которую вы использовали для генерирования сертификата и значения, которые использовали при создании соединения VPN.

Наконец, проверьте конфигурацию VPN и убедитесь, что значение leftid настроено с символом @, если вы используете доменное имя:

/etc/ipsec.conf leftid=@vpn.example.comЕсли вы используете IP-адрес, убедитесь, что символ @ опущен. Также убедитесь, что при генерировании файла server-cert.pem вы включили флаги —san @IP_address и —san IP_address.

Инструкция по установке Континент TLS VPN клиент 2.0.1440

Перед установкой Континента ТЛС версии 2 необходимо удалить предыдущую версию Континента (если конечно она была установлена) через Пуск > Панель управления > Программы > Программы и компоненты. Потом перезагрузить компьютер.
Скачанный дистрибутив необходимо разархивировать и запустить файл «Континент TLS-клиент.exe»

Настройка СКЗИ «Континент TLS VPN Клиент» для работы в Электронном бюджете

Запускаем Континент TLS VPN Клиент (через меню пуск или иконку на рабочем столе). В открывшемся окне нажимаем «Главная» > «Добавить» > «Ресурс».

Настройка континента TLS VPN клиентВ окне добавления ресурса прописываем следующее:

  1. Если используете сертификат пользователя по ГОСТ 2012, то пишем:
    • Адрес: lk2012.budget.gov.ru
    • Имя ресурса: lk2012.budget.gov.ru
    • Удаленный порт: 443
    • Тип: Прокси
  2. Если используете сертификат пользователя по ГОСТ 2001, то пишем:
    • Адрес: lk.budget.gov.ru
    • Имя ресурса: lk.budget.gov.ru
    • Удаленный порт: 443
    • Тип: Прокси

Нажимаем «Сохранить». В соединениях отобразиться «lk2012.budget.gov.ru» или/и «lk.budget.gov.ru».

Континент TLS VPN Клиент. Добавление ресурсаДалее идем в раздел «Настройки» > «Основные». Ставим галочки в следующих чекбоксах:

  • Проверять сертификаты по CRL
  • Запускать при старте системы
  • Скачивать CRL автоматически
  • При запуске свернуть в системный трей

Получаем страницу с такими настройками. Нажимаем «Сохранить».

Континент TLS VPN Клиент. Настройки. Основные.Следующий этап — настройка прокси. Раздел «Настройки» > «Внешний прокси» ставим галку «Настраивать автоматически» и сохраняем.

Континент TLS VPN Клиент. Настройка. Внешний прокси.Следующий этап — настройка сертификатов. Идем на вкладку «Управление сертификатами» > раздел «Серверные сертификаты» > «Импортировать».

Континент TLS VPN Клиент. Серверные сертификаты.
Континент TLS VPN Клиент. Серверные сертификаты. Загрузка.
Если у вас нет серверных сертификатов, то качаем…
Сертификат сервера «Континент TLS VPN» ГОСТ Р 34.10-2012
Сертификат сервера «Континент TLS VPN» ГОСТ Р 34.10-2001
В результате добавления сертификатов видим следующее. Континент TLS VPN Клиент. Серверные сертификаты.Далее проверяем вкладку пользовательские сертификаты. Если вашего сертификата там нет, то его необходимо установить через КриптоПро. Инструкция по установке личного сертификата в КриптоПро тут. Если сертификат установлен, то видим следующее.

Континент TLS VPN Клиент. Пользовательские сертификаты.
Идем на вкладку «Управление сертификатами» > раздел «CDP» > кнопка «Скачать CRL». Континент TLS клиент 2.0 скачать дистрибутив, настройка, сертификаты сервера, инструкция по установке
На панели задач внизу справа нажать правой кнопкой мыши на значок «Континент TLS Клиента» и выбрать пункт «Сброс соединений». Метки: Континент TLS , Электронный бюджет

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

Конфигурацию XML для EAP см. в разделе Конфигурация EAP.

Примечание

Чтобы настроить проверку подлинности Windows Hello для бизнеса, выполните действия, описанные в разделе Конфигурация EAP для создания сертификата смарт-карты. Подробнее о Windows Hello для бизнеса.

На следующем изображении показано поле для EAP XML в профиле VPN решения Microsoft Intune. Поле EAP XML отображается только при выборе встроенного типа подключения (автоматический, IKEv2, L2TP, PPTP).

Конфигурация EAP XML в профиле Intune.

Особенности использования технологий VPN и SSL/TLS

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

VPN — это совокупность технологий, позволяющая организовать защищённую виртуальную сеть, объединяющую доверенные сети и узлы, поверх открытой сети с низким уровнем доверия путём использования криптографических способов защиты данных.В качестве одного из первых шагов в процессе эволюции технологий VPN можно отметить принятие в 1976 году стандарта протокола X.25, предназначенного для организации WAN поверх телефонных сетей. Дальнейшее развитие технологий связи привело к появлению целого ряда протоколов, позволяющих осуществлять развёртывание VPN, в частности PPTP, L2TP, IPsec, IPlir.

Каждый из протоколов VPN имеет свои особенности функционирования и степень защищённости передаваемых данных (например, L2TP вообще не обеспечивает защиту данных сам по себе), что обусловлено как историей их возникновения, так и целями их создания.

Протоколы IPsec и IPlir можно отнести к наиболее защищённым, универсальным и перспективным, поэтому при дальнейшем исследовании свойств технологии VPN будем ориентироваться в большей степени именно на них.

SSL/TLS — это протокол, предназначенный для организации криптографически защищённых соединений через компьютерные сети.Отправной точкой процесса развития семейства протоколов SSL/TLS является протокол SSL 1.0, разрабатываемый компанией Netscape, но так и не увидевший свет в силу наличия в нём ряда серьёзных проблем с безопасностью. Первой обнародованной версией семейства является протокол SSL 2.0, появившийся в 1995 году. Практически незамедлительно, опять же из-за имеющихся во второй версии протокола уязвимостей, был осуществлён его редизайн, результатом которого стало появление в 1996 году SSL 3.0. Следующим шагом стала модернизация третьей версии протокола наряду со сменой его названия с Secure Sockets Layer на Transport Layer Security. Так в 1999 году был выпущен протокол TLS 1.0, который в дальнейшем ещё дважды претерпевал изменения: в 2006 году появился протокол TLS 1.1, а в 2008 году — TLS 1.2. В настоящее время ведётся активная разработка спецификации для очередной версии протокола — TLS 1.3.

Сравнение технологий

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

Место в сетевой модели

Прежде всего необходимо отметить, что данные технологии относятся к различным уровням эталонной сетевой модели ISO/OSI. Протоколы VPN обычно соответствуют канальному или сетевому уровням, тогда как протокол SSL/TLS находится между транспортным и прикладным уровнями (как правило, его причисляют к уровню представления). Это во многом определяет возможности технологий и сценарии их применения.

VPN-протоколы IPSec и IPlir защищают весь трафик между двумя узлами, позволяя пользователю в случае удалённого подключения к доверенной сети быть её полноправным членом, как если бы он находился непосредственно в ней.

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

Принадлежность рассматриваемых технологий разным сетевым уровням также накладывает свой отпечаток на специфику их работы с NAT-устройствами. Данные устройства изменяют IP-адреса в IP-пакетах, что может вызывать трудности при передаче через них защищённого трафика в случае использования VPN-протоколов, следящих за целостностью IP-пакетов. К таким протоколам относится, например, IPsec. В качестве решения данной проблемы может рассматриваться использование технологии NAT-T, позволяющей защищённым пакетам успешно проходить через NAT-устройства. Тем не менее технология NAT-T поддерживается далеко не всеми реализациями VPN, что отрицательно сказывается на совместимости используемых решений. Протокол SSL/TLS не имеет описанных проблем с NAT-устройствами, так как лежит выше транспортного уровня и корректность его работы не зависит от смены IP-адресов и номеров портов. Еще одним важным отличием между рассматриваемыми технологиями является то, что VPN-решения могут использовать в качестве транспортного протокола как TCP, так и UDP, в то время как классические SSL/TLS решения — только TCP. Это ограничивает применение SSL/TLS в сценариях, для которых задержка трафика, вызванная потерями пакетов, является критичной. Стоит отметить, что для таких случаев был разработан альтернативный протокол под названием DTLS, представляющий собой переработанную с целью поддержки транспортного протокола UDP версию TLS 1.1. Однако поддержка DTLS обеспечивается далеко не всеми распространёнными реализациями SSL/TLS.

Вопросы эксплуатации и стоимости

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

Данные параметры напрямую коррелируют с необходимостью установки какого-либо дополнительного обеспечения и осуществления его настройки. Развёртывание VPN, как правило, требует установки специализированного аппаратного или программного обеспечения с последующим проведением его довольно сложного конфигурирования. Реализация и настройка защищённых взаимодействий посредством SSL/TLS, на первый взгляд, представляет собой гораздо более простую задачу. Во многом это объясняется тем, что роль клиента в SSL/TLS может исполнять любой современный браузер.

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

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

Что касается простоты настройки клиентской стороны при использовании SSL/TLS, то данное утверждение верно лишь в случае взаимодействия, в процессе которого выполняется только аутентификация сервера. Если же дополнительно требуется осуществление аутентификации клиента, то такие проблемы, как первичная доставка секретных/закрытых ключей и организация их надежного хранения, возникающие при развертывании VPN, имеют место и для SSL/TLS.

Другой особенностью, влияющей на цену решения, является совместимость технологий. Различные реализации VPN далеко не всегда совместимы друг с другом, даже в том случае, если базируются на одном и том же протоколе. Это приводит к необходимости использования однотипного оборудования, что усложняет процессы расширения системы и слияния нескольких систем в одну. Реализации SSL/TLS являются более унифицированными, но также зачастую различаются в части поддержки тех или иных криптографических алгоритмов, функций и параметров.

Вопросы безопасности

Аутентификация сторон при использовании технологии VPN обычно выполняется на основе сертификатов (IPsec) или предварительно распределённых секретных ключей (IPsec, IPlir). Это позволяет выбрать наиболее подходящий способ аутентификации в зависимости от конкретного сценария.

В SSL/TLS классическим подходом, применяющимся для аутентификации, является использование сертификатов. При этом существуют и альтернативные способы, в частности аутентификация на основе паролей и аутентификация на основе предварительно распределённых секретных ключей, однако они поддерживаются весьма ограниченным числом реализаций SSL/TLS. Соответственно, подавляющему большинству систем, использующих протокол SSL/TLS, присущи все основные недостатки систем, защита в которых базируется на сертификатах и PKI.

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

При применении SSL/TLS также существует возможность выполнения ряда проверок клиентского устройства перед предоставлением ему прав доступа. Однако осуществление таких проверок обычно также требует установки дополнительных апплетов к браузеру.

Широкая распространенность протокола SSL/TLS послужила основанием для его детального изучения, что привело к обнаружению целого ряда уязвимостей, имеющихся в этом протоколе. Уязвимости можно разделить на архитектурные, то есть основанные на недостатках самой спецификации протокола SSL/TLS, и на присущие только конкретным реализациям протокола. Такое разделение можно назвать условным, поскольку большинство архитектурных уязвимостей основаны на теоретических особенностях спецификации SSL/TLS, но для своей эксплуатации требуют выполнения ряда практических требований. К основным атакам на SSL/TLS можно отнести BEAST, Padding Oracle Attacks (атака Водонея, Lucky 13, POODLE), атаки на поточный шифр RC4, атака при «пересогласовании», атаки на основе сжатия данных (CRIME, TIME, BREACH), атаки, основанные на навязывании небезопасных криптографических параметров (FREAK, Logjam), атаки, основанные на понижении версии используемого протокола SSL/TLS, Heartbleed.

Большинство из перечисленных атак были реализуемы только на момент своего обнародования и впоследствии устранялись. Можно сказать, что обнаружение новых уязвимостей в SSL/TLS сыграло и положительную роль в становлении этого протокола, поскольку во многом обуславливало его развитие, приводя либо к разработке дополнительных рекомендаций по его использованию, либо к выпуску новых версий протокола с иммунитетом к найденным недостаткам. Несмотря на это, на большом количестве узлов в сети до сих пор используются старые версии протоколов SSL/TLS или же попросту игнорируются имеющиеся рекомендации, что, наряду с большой вероятностью обнаружения новых атак, не позволяет говорить о гарантированной надёжности при использовании технологий на основе SSL/TLS. Некоторые протоколы, применяющиеся для развёртывания VPN, также могут быть подвержены разного рода атакам, в частности протокол PPTP имеет целый ряд серьезных уязвимостей. Тем не менее считается, что такие протоколы, как IPsec и IPlir, обеспечивают достаточный уровень безопасности, поскольку на данный момент не имеют каких-либо существенных выявленных уязвимостей.

 

 

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: