OpenVPN сервер на RouterOS - RDB IT Support

Налаштовуємо OVPN-сервер на ROS

1. Налаштування PKI

1.1. Сертифікат CA:

/certificate add name=CA country="UA" state="MSK" locality="MSK" organization="" unit="" common-name="CA" key-size=2048 days-val >

/certificate sign CA-crl-host=127.0.0.1 name="CA"

1.2. Сертифікат сервера:

/certificate add name=SRV country="UA" state="MSK" locality="MSK" organization="" unit="" common-name="srv-OVPN" key-size=2048 days-val > ;

/certificate sign SRV ca="CA" name="srv-OVPN"

Примітка: для сертифіката сервера key-usage краще не змінювати (а якщо дуже хочемо поміняти - то там написано що потрібно прописати в конфізі клієнта для цього).

Примітка: на відміну від SSTP - OVPN не перевіряє відповідність common-name сертифіката сервера fqdn'у цього сервера.

1.3. Шаблон для сертифікатів клієнтів:

/certificate add name=template-CL country="UA" state="MSK" locality="MSK" organization="" unit="" common-name="client-ovpn-template" key-size=2048 days-val >

1.3.1 Сертифікат першого клієнта:

/certificate sign CL-to-issue ca="CA" name="client-ovpn-1"

1.3.2. Сертифікат другого та наступних клієнтів:

3.1, але змінюємо значення параметрів.

Для першої команди це значення має бути унікальним в межах одного CA.

Для другої команди це значення має бути унікальним в межах одного мікротика.

1.4 У майбутньому для відкликання сертифікатів використовуємо команду:

certificate issued-revoke %cert-name%

Де %cert-name% — поле name= підписаного сертифіката, тобто PKI мікротика, що відображається.

2. Налаштування сервера OVPN

Примітка: можна налаштувати врежимі tun («ip» у ROS), а можна в режимі tap («ethernet» у ROS). Режим tun – звичайний тунель. Режим tap - емуляція повноцінного ethernet, зокрема в tap tap клієнтів можна об'єднати в режим мосту і вони будуть чудово один одного бачити. Теоретично в режимі tap можна запустити DHCP-сервер, але в поточній версії ROS це не реалізовано.

/ip pool add name=OVPN_srv_pool ranges=192.168.100.100-192.168.100.199

2tun.2. Створюємо PPP-profile для OVPN-сервера:

/ppp profile add name=OVPN_server local-address=192.168.100.1 remote-address=OVPN_srv_pool

Опціонально! Інші параметри на ваш смак і відповідно до ваших цілей. Наприклад: dns=192.168.100.1 use-ipv6=no

2tun.3. Налаштовуємо режим автентифікації користувачів:

/ppp aaa set accounting=yes

2tun.4. Додаємо користувачів:

/ppp secret add name=isp-user-1 password=8WeHJOiNDnIY26 service=ovpn profile=OVPN_server

/ppp secret add name=isp-user-2 password=FduuIixHWt95D1 service=ovpn profile=OVPN_server

2tun.5. Включаємо OVPN-сервер:

/interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ip netmask=24 require-client-certificate=yes certificate=srv-OVPN enabled=yes port=443

/ip pool add name=OVPN_srv_pool ranges=192.168.100.100-192.168.100.199

2tap.1+. Створюємо міст для OVPN-підключень:

/interface br

Примітка: arp має бути включений, інакше клієнти один одного не побачать.

2tun.2. Створюємо PPP-profile для OVPN-сервера:

/ppp profile add name=OVPN_server local-address=192.168.100.1 remote-address=OVPN_srv_pool br >

Опціонально! Інші параметри на ваш смак і відповідновашими цілями. Наприклад: dns=192.168.100.1 use-ipv6=no

2tap.3. Налаштовуємо режим автентифікації користувачів:

/ppp aaa set accounting=yes

2tap.4. Додаємо користувачів:

/ppp secret add name=isp-user-1 password=8WeHJOiNDnIY26 service=ovpn profile=OVPN_server

/ppp secret add name=isp-user-2 password=FduuIixHWt95D1 service=ovpn profile=OVPN_server

2tap.5. Включаємо OVPN-сервер:

/interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ethernet netmask=24 require-client-certificate=yes certificate=test-srv-OVPN enabled=yes port=443

Примітки для обох режимів:

2. RADIUS - аутентифікацію я не розглядаю просто тому, що не тестував. Можу лише припустити, що працюватиме вона тільки для username/password, а сертифікати будуть так само перевірятися на мікротиці.

3. Експорт сертифікатів для налаштування клієнтів

3.1. Експорт сертифіката CA:

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

Примітка: Нам потрібен лише сертифікат, закритий ключ НЕ потрібен, тому параметр export-passphrase="" повинен бути порожнім.

3.2. Експорт сертифікатів клієнтів:

/certificate export-certificate client-ovpn-1 export-passphrase=private-key-password1

/certificate export-certificate client-ovpn-2 export-passphrase=private-key-password2

Примітка: export-passphrase= – обов'язковий параметр для експорту закритих ключів; використовуємо для кожного клієнта свій пароль; НЕ використовуємо той же пароль, який вказували в пунктах 2.4 для користувачів!

3.3. Виймаємо отримані файли сертифікатів та ключів з мікротика будь-яким зручним способом (як правило, я тягаютуди-сюди файли прямо з винбокса).

1 Імпорт сертифікатів

1.1 Кладемо в мікротик файл сертифіката CA та файл сертифіката та файл ключа клієнта будь-яким зручним способом

1.2 Імпортуємо сертифікат CA

/certificate import file-name=cert_export_CA.crt passphrase=""

1.3 Імпортуємо сертифікат та ключ клієнта

/certificate import file-name=cert_export_client-ovpn-1.crt passphrase=""

/certificate import file-name=cert_export_client-ovpn-1.key passphrase=private-key-password1

2. Налаштовуємо клієнт

/interface ovpn-client add name=OVPN_client connect-to= port=443 mode= user=isp-user-1 password= 8WeHJOiNDnIY26 profile=default certificate= client-ovpn-1 auth=sha1 cipher=blowfish128 add- -route=disabled=no

Значення <> вказуєте відповідно до попередніх налаштувань та ваших потреб.

1. Отримуємо OVPN-дистрибутив із openvpn.net.

2. Встановлюємо, всі опції залишаємо за замовчуванням, у тому числі tap-інтерфейс, який знадобиться для будь-якого режиму налаштування.

3. Ідемо в OpenVPN\config (за замовчуванням C:\Program Files\OpenVPN\config) і створюємо там файл client.ovpn (або копіюємо з OpenVPN\sample-config).

4. Створюємо конфігурацію клієнта, або вносимо редагування з sample-config.

# Режим, у якому працює OVPN сервіс client

# Увага! Вказуємо лише один параметр із двох # Для режиму tup вказуємо параметр dev tun # Для режиму tap вказуємо параметр dev tap

# Цей параметр вказуємо тільки у разі використання режиму tap, а замість MyTap підставляємо ім'я tap інтерфейсу у windows (ipconfig /all, або мережеві підключення в панелі керування) dev-node MyTap

# Використовуваний протокол.ROS'овський OVPN-сервер працює тільки в режимі tcp proto tcp

# Цей параметр потрібен лише у разі використання більше одного сервера; При вказівці цього параметра при підключенні клієнт випадково вибирає один із зазначених серверів; remote-random

# Якщо вказано цей параметр, клієнт буде використовувати динамічний вихідний порт для підключення nobind

# Дозволяють клієнту зберігати налаштування тунелю при перепідключенні, а також не перечитувати файли ключів persist-key persist-tun

# Налаштування проксі ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #]

# Вимикає повідомлення про пакети, що повторюються ;mute-replay-warnings

# Шляхи до файлів сертифікатів # ca - сертифікат CA, яким видано сертифікат клієнта І сертифікат сервера # cert - сертифікат клієнта # key - закритий ключ сертифіката клієнта ca cert_export_CA.crt cert cert_export_client-ovpn-1.crt key cert_export_client-ovpn-1.key

# auth-user-pass повідомляє клієнту, що він повинен використовувати ім'я користувача та пароль для аутентифікації (але не замість сертифікатів, а разом із сертифікатами) # auth-user-pass говорить OVPN-клієнту використовувати логін та пароль (але не замість сертифікатів, а разом із сертифікатами) # user-pwd.txt вказує на файл, у якому зберігаються логін та пароль; перший рядок у файлі – логін, другий – пароль; за відсутності цього аргументу логін і пароль будуть запитуватися щоразу при підключенні # Примітка: У разі використання сертифіката із закритим ключем, до якого і так потрібно вводити ключ при кожному підключенні, я не вважаю за необхідне змушувати користувача пам'ятати ще й логін із паролем --auth-user-pass user-pwd.txt

# Повідомляє клієнту, що вінповинен перевіряти сертифікат сервера на предмет правильності використовуваних key-usage remote-cert-tls server

# Ключ для шифрування початку процесу аутентифікації (handshake), додатковий захід безпеки. Має сенс при використанні тільки логіна/паролю, без сертифікатів. ;tls-auth ta.key 1

# Завдання особливого методу шифрування, за замовчуванням використовується blowfish128. ;cipher x

# Використання lzo-стискання. OVPN не підтримується на ROS. ;comp-lzo

Рівень лога. Чим більше значення - тим докладніше.

# Блокування повідомлень, що повторюються, в лозі ;mute 20

# Вище були наведені параметри, які є в "рідному" прикладі конфіга для клієнта + 1 необхідний нам параметр # Нижче я наведу ще кілька, на мій погляд, корисних параметрів.

# Маршрут, що встановлюється під час запуску підключення # Маршрут вказує не на шлюз, а безпосередньо на підключення route 192.168.88.0 255.255.255.0

# Пауза перед встановленням маршрутів після встановлення підключення (в секундах) route-delay 5

# Якщо ми хочемо задати OVPN-підключення як основний шлюз route-gateway 192.168.100.1

Примітка: для застосування параметрів маршрутизації, прописаних у конфізі, сам сервіс OVPN, або OVPN GUI повинні бути запущені з правами адміністратора.