Содержание

Microtik: Клиент Site-to-site OpenVPN с Ubuntu

Задача: Сервер OpenVPN на Ubuntu, Microtik в качестве клиента, подключение Site-to-site

Что понадобится:

Сервер OpenVPN на Ubuntu

Примечание: Ubuntu 20.04 LTS

Установка

Ставим пакеты:

sudo apt install openvpn easy-rsa -y

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

Можно создать отдельного пользователя для генерации ключей, можно использовать существующего, можно все делать под root - выбирайте как больше нравится. Я создаю отдельного пользователя openvpn.

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

useradd -m -s /bin/false openvpn

Далее все делаем от этого пользователя.

Создаем папки, даем на них права:

mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/

chown openvpn ~/easy-rsa
chmod 700 ~/easy-rsa

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

cd ~/easy-rsa

cp /usr/share/easy-rsa/vars.example vars

Далее в файле vars изменяем/добавляем описанные ниже строки.

Настройки для ключей, чтобы не запрашивало каждый раз:

set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "Moscow Region"
set_var EASYRSA_REQ_CITY "Moscow"
set_var EASYRSA_REQ_ORG "YOU_ORGANIZATION"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "OU_UNIT"

Длина ключа:

set_var EASYRSA_KEY_SIZE 2048

Вид ключа. Можно старый добрый RSA, можно новый и более короткий Elliptic curve. Для работы с Микротиками я оставляю RSA 2048

# The default crypto mode is rsa; ec can enable elliptic curve support.
# Note that not all software supports ECC, so use care when enabling it.
# Choices for crypto alg are: (each in lower-case)
#  * rsa
#  * ec

set_var EASYRSA_ALGO rsa

# Define the named curve, used in ec mode only:

#set_var EASYRSA_CURVE secp384r1

Срок действия корневого CA сертификата:

set_var EASYRSA_CA_EXPIRE 7300

Срок действия выдаваемых для пользователей сертификатов:

set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_KEY_EXPIRE 3650

Если не планируете заморачиваться со списками отзыва ключей (например, делаем ключи только для редко сменяемого оборудования):

set_var EASYRSA_CRL_DAYS 3650

Создание CA и прочих сертификатов:

Инициализируем:

./easyrsa init-pki

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

./easyrsa build-ca

Создаем DH:

./easyrsa gen-dh

Создаем TA (TLS, но использовать с Микротиком не будем, а вот пользователей сможем дополнительно проверять):

openvpn --genkey --secret ~/easy-rsa/pki/ta.key

Создаем сертификат сервера (ключ nopass чтобы не требовался пароль):

./easyrsa build-server-full VPN-Server nopass

Создаем CRL (список отозванных сертификатов):

./easyrsa gen-crl

Копируем все сертификаты и ключи в папку настроек OpenVPN:

sudo cp -rp ~/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem} /etc/openvpn/server/
sudo cp -rp ~/easy-rsa/pki/issued/VPN-Server.crt /etc/openvpn/server/
sudo cp -rp ~/easy-rsa/pki/private/VPN-Server.key /etc/openvpn/server/

Создание пользователей

Создание выполняется следующей командой (my-user - имя пользователя, ключ nopass чтобы не требовался пароль):

./easyrsa build-client-full my-user nopass

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

Немного условий:

Создаем файл /etc/openvpn/mikrotik.conf со следующим содержимым:

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/VPN-Server.crt
key /etc/openvpn/server/VPN-Server.key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

proto tcp
dev tun
topology subnet
server 172.16.1.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
keepalive 10 60
persist-key
persist-tun
auth SHA1
# for OpenVPN < v.2.6.0
#cipher AES-256-CBC
# for OpenVPN >= v.2.6.0
cipher AES-256-CBC
data-ciphers 'AES-256-CBC'
data-ciphers-fallback 'AES-256-CBC' 

user nobody
group nogroup

push "route 10.0.0.0 255.255.255.0"
route 192.168.1.0 255.255.255.0

log-append /var/log/openvpn/openvpn-mikrotik.log
status /var/log/openvpn/openvpn-mikrotik-status.log
ifconfig-pool-persist /var/log/openvpn/ipp-mikrotik.txt
verb 3
mute 20
mssfix 0

Создаем папку /etc/openvpn/ccd - там будут храниться индивидуальные конфиги для клиентов.

Создаем файл /etc/openvpn/ccd/my-user со следующим содержимым:

ifconfig-push 172.16.1.2 255.255.255.0
iroute 192.168.1.0 255.255.255.0

Смысл этих настроек следующий:

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

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

Копируем с сервера Ubuntu следующие файлы (на Windows это можно сделать при помощи WinSCP):

Заливаем сертификаты на Mikrotik: Files → Upload

Импортируем сертификаты через System → Certificates → Import в указанном порядке:

В итоге должно быть 2 записи:

Настраиваем подключение

Настраиваем профиль OVPN: PPP → Profiles → Добавить

Добавляем интерфейс OVPN Client:

Настраиваем разрешения для нового интерфейса

Чтобы трафик ходил через наш интерфейс добавляем 3 правила: IP → Firewall → Filter Rules

Внимание: данные правила разрешают любой трафик через VPN!

Правило Input

Закладка General

Закладка Action:

Правило Ouput

Закладка General

Закладка Action:

Правило Forward

Закладка General

Закладка Action:

Проверяем работу VPN.

Что дальше

Далее можно ограничить разрешения на трафик через VPN и принять прочие меры безопасности.