Поднимаем Open VPN сервер на Mikrotik.
Содержание
Немного теории
По началу может показаться, что это что-то трудное, затянутое и вообще ненужное. На самом деле, ovpn очень удобный и что мне нравится его довольно трудно заблокировать.
Так-с, для начала небольшой алгоритм процесса, чтобы было понимание, что и зачем.
- Настройка времени. Мы будет использовать SSL-сертификаты, а они очень чувствительны к времени;
- Выпускаем три сертификата: корневой, для сервера open vpn, для клиентов open vpn;
- Создаём отдельную подсеть для VPN подключений (отдельный адрес и отдельный пул);
- Настраиваем профиль работы сервера;
- Настраиваем FireWall для работы нашего open vpn сервера;
- Создаём пользователей для подключения;
Настройка времени
Для начала нам нужно настроить время. Это очень важный шаг, который нельзя пропускать, иначе рисуем получить проблемы с SSL-сертификатами.
Переходим в System -> Clock
Автоматическая синхронизация с ntp-серверами
Неплохо бы настроить NTP-клиент на Mikrotik. Это избавляет нас от ошибок и время будет автоматически синхронизироваться. Для этого переходим System -> SNTP и пропишем сервера.
- Первым я указываю гугловские time.google.com
- Вторичным 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, нажимаем на плюсик и задаём параметры.
- Указываем название, чтобы было нам понятно, для чего этот профиль используется;
- Задаём локальный адрес для подключений;
- Выбираем наш пул адресов;
- Указываем наш Bridge
- Указываем DNS, WINS-сервера
Нажимаем кнопку Apply и едем дальше. Переходим на вкладку Interface, нажимаем OVPN Server
- Нажимаем галку Enabled, тем самым запускаем сам сервер;
- Указываем порт на котором будет работать, я маскируюсь под https трафик;
- Дальше указываем профиль, который мы недавно создали;
- Указываем наш сертификат сервера;
- Ставим галочку Requre Client Certificate, обязательно требуем сертификаты;
Нажимаем кнопку Apply и едем дальше.
Настройка FireWall
Переходим IP -> FireWall и добавляем новое правило. Которое будет разрешать tcp соединение по 443 порту на наш порт с интернетом. Ну или тот порт, который мы указываем в настройках ovpn сервера.
Создаём пользователей
Переходим на PPP -> Secrets и нажимаем на плюсик. Добавляем нового пользователя.
Указываем имя подключения, пароль и тип VPN, к которому может этот юзер подключаться. Всё остальное, без надобности, можно не трогать.
Итог
И так, мы настроили Open VPN сервер на Mikrotik. Теперь необходимо настроить клиентскую часть.