Open VPN сервер на Mikrotik

0

Поднимаем Open VPN сервер на Mikrotik.

Немного теории

По началу может показаться, что это что-то трудное, затянутое и вообще ненужное. На самом деле, ovpn очень удобный и что мне нравится его довольно трудно заблокировать.

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

  1. Настройка времени. Мы будет использовать SSL-сертификаты, а они очень чувствительны к времени;
  2. Выпускаем три сертификата: корневой, для сервера open vpn, для клиентов open vpn;
  3. Создаём отдельную подсеть для VPN подключений (отдельный адрес и отдельный пул);
  4. Настраиваем профиль работы сервера;
  5. Настраиваем FireWall для работы нашего open vpn сервера;
  6. Создаём пользователей для подключения;

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

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

Переходим в System -> Clock

Автоматическая синхронизация с ntp-серверами

Неплохо бы настроить NTP-клиент на Mikrotik. Это избавляет нас от ошибок и время будет автоматически синхронизироваться. Для этого переходим System -> SNTP и пропишем сервера.

  1. Первым я указываю гугловские time.google.com
  2. Вторичным ntp1.stratum2.ru

Нажимаем кнопку Apply и всё. На этом шаге мы закончили работу.

Выпуск сертификатов

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

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

Корневой сертификат

Начинаем с выпуска корневого сертификата. Переходим в System -> Certificates и нажимаем на «+».

Красным выделено — обязательные поля;

Синим выделено — необязательные поля;

Корневой сертификат обозначается CA, так его и назовём, чтобы всё было ясно.

Days Valid это количество дней, которые наш корневой сертификат является валидным. Я обычно оставляю 5 или 10 лет. Тут на ваше усмотрение. Но надо учитывать, что если он просрочиваться, а серверный сертификат или клиентский ещё будут в актуальном состояние, то вся цепочка ломается и придется всё перевыпускать.

Далее на этой же странице переходим на вкладку Key Usage, проставляем галки около key-cert-sign, crl-sign.

Нажимаем кнопку Apply и дальше нажимаем кнопку Sign.

В параметре CA CRL Host можно указать локальный ip адрес, но лучше указывать 127.0.0.1. Нажимаем кнопку Start и ждём пока процесс закончится.

Переходим обратно в System -> Certificate и проверяем, чтобы был флаг KLAT.

На этом мы закончили работу с корневым сертификатом.

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

Теперь нам нужно выпустить закрытый сертификат для работы сервера. Переходим в System -> Certificate, нажимаем плюсик и заполняем поля.

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

Имя указываем, что это сертификат нашего сервера. Обязательно обратите внимание на Days Valid. Его тоже можно выпускать на более долгий срок. Но я оставляю обычно год. Далее переходим на вкладку Key Usage и ставим галочки рядом с digital signature, key encipherment и tls server.

Нажимаем кнопочку Apply и подписываем через кнопку Sign

В параметре CA указываем наш корневой сертификат и нажимаем Start. После удачного выпуска наш сертификат получает флаг KI.

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

Ну и остался последний сертификат. Клиентский. Тут надо понимать, кому мы его выписываем. Его можно выписать один вообще на всех, на каждого пользователя нашим VPN, на филиал и так далее. От этого надо учитывать количество дней. Я выпишу один для примера, оставляя его на год. Открываем System -> Certificate, нажимаем наш любимый «+».

Параметры Name и Common Name заполняем понятным образом. Это может быть название филиала, название клиента, фио и так далее.  Переходим на вкладку Key Usage выбираем tls-client.

Нажимаем Apply, дальше Sign и выбираем наш CA. Он также, как и сервер, должен получить флаг KI.

Экспортируем сертификаты

Для дальнейшей настройки нам нужно экспортировать и выгрузить два сертификата. Это CA и клиентский.

Чтобы это сделать нажимаем правой кнопкой по сертификату и переходим в окно экспорта.

Далее выбираем тип. Я использую PEM.

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

Теперь экспортируем клиентский сертификат. Также нажимаем правой кнопкой на нужному сертификату и переходим в Export.

Имя задаем понятное, чтобы потом не запутаться, если вы выпускаете больше одного сертификата для клиентов. Я использую тип PEM, мне он больше нравится. И тут обязательно указываем Export Passphrase, без пароля не экспортируется закрытая часть и наш ключ нельзя будет использовать в конфигурирование клиентов.

После того, как нажали Export, открываем вкладку File. И видим 3 наших файлика. Это CA-сертификат, открытая часть клиентского сертификата и закрытая часть. Выделяем их. Правой кнопкой Downloads и качаем к себе, они нам пригодятся дальше.

На этом работа с сертификатами закончена. Можно выдохнуть.

Отделяем котлеты от мух

Нам нужен отдельный пул адресов от нашей основной сети. Для этого переходим на IP -> Pool и нажимаем на плюсик.

Задаём понятное название и указываем нужное количество IP-адресов в подсети, которую мы отдаём для подключение клиентов к нашему OpenVPN серверу. У меня это будет подсеть 10.12.0.0, в ней я выделяю 10.12.0.10-10.12.0.100.

Профиль Open VPN сервера

Переходим PPP -> Profiles, нажимаем на плюсик и задаём параметры.

  1. Указываем название, чтобы было нам понятно, для чего этот профиль используется;
  2. Задаём локальный адрес для подключений;
  3. Выбираем наш пул адресов;
  4. Указываем наш Bridge
  5. Указываем DNS, WINS-сервера

Нажимаем кнопку Apply и едем дальше. Переходим на вкладку Interface, нажимаем OVPN Server

  1. Нажимаем галку Enabled, тем самым запускаем сам сервер;
  2. Указываем порт на котором будет работать, я маскируюсь под https трафик;
  3. Дальше указываем профиль, который мы недавно создали;
  4. Указываем наш сертификат сервера;
  5. Ставим галочку Requre Client Certificate, обязательно требуем сертификаты;

Нажимаем кнопку Apply и едем дальше.

Настройка FireWall

Переходим IP -> FireWall и добавляем новое правило. Которое будет разрешать tcp соединение по 443 порту на наш порт с интернетом. Ну или тот порт, который мы указываем в настройках ovpn сервера.

Создаём пользователей

Переходим на PPP -> Secrets и нажимаем на плюсик. Добавляем нового пользователя.

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

Итог

И так, мы настроили Open VPN сервер на Mikrotik. Теперь необходимо настроить клиентскую часть.

OpenVPN клиент Windows