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

Ещё один блог о системном администрировании, операционных системах, СУБД, сетях, костылях-велосипедах и пр.

Настройка MikroTik в качестве OVPN-сервера с использованием клиентских сертификатов

В этой статье описана схема настройки Mikrotik в качестве сервера openvpn. Данная конструкция рабочая, проверена на RouterOS v6.29. Для создания сертификатов будем использовать встроенный в RouterOS PKI


Хочу сразу сообщить, что в отличие от Linux серверов, OpenVPN на Mikrotik не поддерживает UDP транспорт и компрессию lzo. Но, тем не менее, все остальные функции, включая TCP транспорт, L2/L3 туннели и т.д., полностью работают.

Настраиваем OVPN-сервер на ROS

1.Настраиваем PKI

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

/certificate add name=cert-CA country="MD" state="MD" locality="Chisinau" organization="CompanyName" unit="" common-name="itsp-CA" key-size=1024 days-valid=3650 key-usage=crl-sign,key-cert-sign

/certificate sign cert-CA ca-crl-host=127.0.0.1 name="itsp-CA"

Сертификат сервера

/certificate add name=cert-SRV country="MD" state="MD" locality="Chisinau" organization="CompanyName" unit="" common-name="itsp-SRV-OVPN" key-size=1024 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server

/certificate sign cert-SRV ca=itsp-CA name="itsp-SRV-OVPN"

Шаблон для сертификатов клиентов

/certificate add name=cert-CL country="MD" state="MD" locality="Chisinau" organization="CompanyName" unit="" common-name="itsp-CL-OVPN" key-size=1024 days-valid=3650 key-usage=tls-client

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

/certificate add name=cert-CL-to-TEST copy-from="cert-CL" common-name="client-test"

/certificate sign cert-CL-to-TEST ca="itsp-CA" name="client-test"

Сертификат второго и последующих клиентов:

/certificate add name=cert-CL-to-${название клиента} copy-from="cert-CL" common-name="client-${название клиента}"

где:

  • common-name="client-${название клиента}" - должен быть уникальным
/certificate sign cert-CL-to-${название клиента} ca="itsp-CA" name="client-${название клиента}"

где:

  • name="client-${название клиента}" - должен быть уникальным

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

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

/certificate issued-revoke ${название сертификата}

где:

  • ${название сертификата} - это поле 'name=' подписанного сертификата

2.Настройка OVPN сервера

Задаем пул-адресов для OVPN-клиентов

/ip pool add name=ovpn-pool ranges=10.127.3.210-10.127.3.230

Создаем PPP-профиль для OVPN-сервера

/ppp profile add name=ovpn-clients local-address=10.127.3.1 remote-address=ovpn-pool dns=10.17.2.172 use-ipv6=no

Включаем OVPN-сервер

На Mikrotik сервер OVPN можно настроить в режиме tun («ip» в ROS), а можно в режиме tap («ethernet» в ROS). Режим tun — обычный туннель. Режим tap — эмуляция полноценного ethernet, в частности в режиме tap клиентов можно объединить в режим моста и они будут прекрасно друг друга видеть.

Мы же будем настраивать наш Mikrotik в режиме tun. Добавлю парочку картинок, смотрим на рисунок ниже.

Создаем пользователя:

3.Экспорт сертификатов для настройки клиентов

Экспорт сертификата CA:

/certificate export-certificate itsp-CA export-passphrase=""

Примечание: Нам нужен только сам сертификат, закрытый ключ не нужен, поэтому параметр export-passphrase="" должен быть пустым.

Экспорт сертификатов клиентов:

/certificate export-certificate client-test export-passphrase=pa55w0rd

Примечание: export-passphrase= - обязательный параметр для экспорта закрытых ключей. Для каждого клиента используем свой пароль. Стараемся не использовать тот же самый пароль, который указывали для пользователей!

Далее извлекаем полученные файлы сертификатов и ключей из микротика любым удобным способом - можно просто "перетянуть" их из winbox'а, можно скачать посредством ftp или с помощью scp.

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

  1. Получаем OVPN-дистрибутив с openvpn.net.
  2. Устанавливаем, все опции оставляем по-умолчанию, в том числе tap-интерфейс, который понадобится для любого режима настройки.
  3. Идём в OpenVPN\config (по-умолчанию C:\Program Files\OpenVPN\config) и создаём там файл client.ovpn
  4. Создаём конфигурацию клиента.

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

client
dev tun
proto tcp-client
remote ras.example.com 1194
tls-client
tls-cipher TLS-RSA-WITH-AES-256-CBC-SHA
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
ca cert_export_itsp-CA.crt
cert cert_export_client-test.crt
key cert_export_client-test.key
auth-user-pass user-pwd.txt
askpass pass.txt
verb 3
route 10.0.0.0 255.0.0.0
route-delay 5

Примечание: для применения параметров маршрутизации, прописанных в конфиге, сам сервис OVPN, или же OVPN GUI должны быть запущены с правами администратора.
Примечание №2: auth-user-pass user-pwd.txt - тут записаны логин и пароль пользователя. Первая строчка - логин, вторая - пароль.
Примечание №3: askpass pass.txt - тут записан пароль, указанный при экспорте закрытого ключа (в данном примере в этом файле будет записано значение pa55w0rd)

Всем удачи в настройке!


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

Комментарии (RSS)

Переменная remote-cert-tls server в конфигурации клиента здесь уже не применима?

В логе подключения в связи с этим есть замечание: Sun Dec 24 21:38:39 2017 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.

Ответить Отменить ответ

По всей видимости не работает. Не знаю баг ли это микротика или недоработки в настройке ovpn-сервера. При установке данной переменной в логе клиента возникала ошибка:

VERIFY KU ERROR

В интернетах набрел на статейку - https://www.v13.gr/blog/?p=386

Теперь уже другая ошибка

Certificate does not have extended key usage extension
VERYFY EKU ERROR

Как победить пока не знаю. Если найдете решение раньше меня - поделитесь)

Ответить Отменить ответ

Замечено следующее, используя иные мануалы по генерации сертификатов и последующей настройки ovpn-сервера, переменная remote-cert-tls server в конфиге клиента отрабатывается корректно. В причинах не разбирался, но по этой статье https://www.sanglyb.ru/kak-nastroit-openvpn-server-na-mikrotik первоначально у меня описанная ситуация не воспроизводилась.

Ответить Отменить ответ

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

HTML Preview:

Коротко о себе:

Привет! Меня зовут Вадим. В этом блоге я пишу об интересующих меня вещах, о проблемах, с которыми сталкиваюсь во время работы, и о путях их решения.

Связаться со мной можно, написав письмо на адрес vadim@adminbook.click