OpenVPN server. Пример настройки.



  • Итак.

    У нас есть головной офис. (верхняя часть картинки).

    в головном офисе есть pfsense gateway.
    "сервер" 192.168.10.2  отдающий html страничку
    workstation 192.168.10.33 - рабочее место

    У нас есть удаленный офис.
    workstation 192.168.20.32 - рабочее место

    У нас есть "мобильные пользователи с ноутбуками."

    Задача, обеспечить как мобильным пользователям так и с любого компа в удаленном офисе доступ к серверу.

    Тестовый мир выглядит примерно так:




  • 1 Первым делом создаем корневой СА сертификат.

    System-> Cert Manager

    1.1 Создаем корневой сертификат.

    http://192.168.10.1/system_camanager.php

    Нажимаем "Плюс", [[i]add ot import ca]






  • Имея СА выпустим сертификаты для службы впн сервера.






  • для pfsense в удаленном офисе




  • для мобильного пользователя.

    _в нашем примере это будет комп windows xp sp3 x86 32b с установленным актуальным на сегодня openvpn клиентом. однако для айфона, андроида  линукса или др. процедура не отличается.

    главное правило: один сертификат = один клиент.
    каждому устройству один персональный сертификат.
    один человек два устройства - два разных сертификата._




  • получилось так:




  • Настал момент, когда пора уже настроить OpenVPN server.












  • Настроим клиентов.

    из уважения, первым удаленный офис.

    Указывая параметр Tunnel Network: 10.0.0.4/30  мы закрепляем за этим клиентом IP адрес, для нашего удобства.

    В разделе Advanced дополнительно прописываем маршрутизацию.
    Эти параметры применятся когда "поднимется" связь с удаленным офисом, тогда оба маршрутизатора узнают что с этой стороны находится локальная сеть с адресами 192.168.10.0/24, а с той стороны локальная сеть с адресами 192.168.20.0/24.  маршрутизаторы построят правильные маршруты и начнут правильно отправлять пакеты.






  • мобильный клиент.

    как видно, добавляется точно так же.

    В разделе Advanced дополнительно прописываем маршрутизацию.

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






  • Если еще нету, устанавливаем пакет "OpenVPN Client Export Utility"




  • Экспортируем настройки

    Если у клиента уже установлен OpenVPN, можно скачать только конфиг.

    Я предпочитаю Inline Configurations: Others

    Вся конфигурация VPN клиента и необходимые сертификаты в одном файле.

    Для использования этой конфигурации с windows openvpn клиентом его достаточно перенести в папку "C:\Program Files\OpenVPN\config"

    Экспортируем - это значит что, мы взяли одну usb флешку, и сохранили на неё конфиг впн одного клиента.
    взяли вторую флешку. сохранили на нее конфиг впн другого клиента.
    одна флешка - один клиент.
    и еще в архиве под паролем
    чтобы случайно не потерять в бесконтрольное путешествие весьма и весьма секретную информацию.






  • Не забываем разрешить трфик. Firewall.

    1. на wan интерфейсе  разрешить входящие соединения к службе OpenVPN server.

    2. собственно трафик внутри впн тунеля.
    2.1 трафик  TCP/UDP - для полезных данных.
    2.2 трафик ICMP - для пингов.






  • все выше написанное было проделано "сидя" за компом в головном офисе.
    на плане он обозначен как 192.168.10.33.

    пользуясь случаем заглянем на сервер 192.168.10.2.




  • Настраиваем удаленный доступ на ноутбуке.
    на ноутбуке у нас windows xp. sp3  32 bit.
    скачиваем соответствующий openvpn
    устанавливаем.

    Теперь мы берем соответствующую usb флешку, подключаем к мобильному клиенту.
    достаем из запароленного архива и переносим конфиг клиента, инлайн, (файл с настройками) в
    "C:\Program Files\OpenVPN\config"

    на слайде 203 видно что после установки впн соединения добавилось два маршрута.
    на слайде 204 видно что появилась связь с сервером 192.168.10.2










  • Немного о безопасности.

    предположим у нас был сотрудник с ноутбуком, в поездке ноутбук украли. Сотрудник ответственно отнесся и не забыл нас известить.  У нас конечно всем сертификатам даются разумные имена, по которым мы легко опознаем кому какой выдан. Или ведется тетрадочка-табличка реестр соответствия.
    Мы заглянули в такую тетрадочку и видим что утерянный сертификат выпущен нашим СА и называется epic-fail.

    Мы "идем" в pfsense System: Certificate Manager

    Внимание! НЕ УДАЛЯЕМ этот скомпрометированный сертификат. он должен остаться у нас.

    Открываем раздел "отзыв плохих сертификатов", System: Certificate Revocation List Manager

    Создаем список отзыва. (у каждого корневого СА сертификата свой список отзыва.)
    Создаем, открываем. добавляем в него сертификат, и указываем причину отзыва.

    Далее идем в настройки впн сервера, и проверяем что он, впн сервер. сверяется с этим списком отозванных сертификатов.
    при необходимости сохраняем настройко впн сервера и перезапускаем службу
















  • Еще о безопасности.

    Предположим сотрудник с ноутбуком пошел в отпуск. И нам нужно временно заблокировать доступ.

    Можно отозвать сертификат, добавить его в сertificate Revocation List,  а потом убрать. но идеологически более правильно временные запреты реализовать всего одной галкой в настройках впн - Client Specific Override.
    Block this client connection based on its common name. .




  • Настройка соединения pfsense-pfsense такая же простая как и pfsense-openvpn хотя и несколько отличается от.

    Эти действия делаются на pfsense  в удаленном офисе.

    Мы воспользовались "OpenVPN Client Export Utility" и выгрузили себе  Inline Configurations
    из него нам нужно извлечь.

    1. открытый ключ СА
    2. открытый ключ именного сертификата
    3. закрытый, приватный, ключ именного сертификата.

    для этого любым текстовым редактором открываем его на просмотр.
    находим текст между тэгами <ca><cert>и <key>Открываем на 192.168.20.1 (pfsense удаленного офиса)  Certificate Authority Manager  и добавляем новый СА сертификат.
    во избежание путаницы, названием задаем такое же как у CA сертификата в головном офисе - "My-root-CA".
    метод - импорт.  из текстового редактора переносим и вставляем только открытую часть.  (между <ca></ca>)

    Открываем Certificate Manager и импортируем сертификат.
    во избежание путаницы, названием задаем такое же как у сертификата в головном офисе - "remote-network".
    метод - импорт.  из текстового редактора по одной переносим и вставляем, обе части.  <cert>и <key>соответственно.










    </key></cert></key></cert></ca>



  • Настраиваем OpenVPN клиента.

    В головном офисе сервер, подключаемся из удаленного в режиме клиента. Его и настраиваем.
    прописываем IP и порт сервера.
    TLS Authentication  копируем с VPN сервера.

    Выбираем Peer Certificate Authority, Client Certificate,
    Выбираем такой же как на сервере Encryption algorithm
    Так же как и на сервере ставим галочку Compression.
    Остальные настройки по умолчанию, не заполняем.
    При установлении соединения клиент получит их с сервера.








  • После нажатия кнопки save параметры применяются и сразу же устанавливается соединение.
    OpenVPN клиент получает настройки от сервера. ip адрес тунеля и маршрут в сеть головного офиса.

    Создаем разрешающее правило firewall
    Проверяем что есть связь с сервером в головном офисе. Открываем страничку, пингуем.












  • Повторюсь еще раз.

    Для доступа из сети за сервером в сеть за клиентом на сервере в fw на LAN необходимо создать явное разрешающее правило вида :

    * LAN net * remote_net * * *

    Поставить его самым первым (в зав-ти от условий, конечно). Можно и во Floating rules впихнуть вместо lan.

    Это особенность 2.1.х и новее.



  • @werter:

    Повторюсь еще раз.

    Для доступа из сети за сервером в сеть за клиентом на сервере в fw

    Я же делал скрины с firewall.  Маленькие?



  • Скрины правил fw на WAN, OpenVPN присутствуют.
    Скрина правил fw на LAN - нет.



  • Как правильно настроить firewall и Client чтобы при подключении удалённый рабочий получил доступ к нужному vlan.



  • @cartel:

    Как правильно настроить firewall и Client чтобы при подключении удалённый рабочий получил доступ к нужному vlan.

    Молча.
    Телепаты в отпуске.



  • @werter:

    @cartel:

    Как правильно настроить firewall и Client чтобы при подключении удалённый рабочий получил доступ к нужному vlan.

    Молча.
    Телепаты в отпуске.

    Ок. Мой косяк. Описываю ситуацию.
    Настроил сервак и клиента по данной инструкции. Клиент при подключии получает ИП из Tunnelnetwork, там я указал 10.0.0.0/24
    В Local ipv4 network указал нужный vlan 192.168.90.0/24, но клиент не может пингануть ни один сервак из vlan90. т.к.  это тестовая сеть, то всем всё разрешено



  • В Local ipv4 network указал нужный vlan 192.168.90.0/24, но клиент не может пингануть ни один сервак из vlan90. т.к.  это тестовая сеть, то всем всё разрешено

    1. Поставьте шлюзом на всех машинах во vlan90  адрес pf.
    2. Скрин правил fw на OpenVPN
    3. route print с клиента при поднятом туннеле.



  • @werter:

    В Local ipv4 network указал нужный vlan 192.168.90.0/24, но клиент не может пингануть ни один сервак из vlan90. т.к.  это тестовая сеть, то всем всё разрешено

    1. Поставьте шлюзом на всех машинах во vlan90  адрес pf.
    2. Скрин правил fw на OpenVPN
    3. route print с клиента при поднятом туннеле.

    сделал новый vlan…соединение без проблем пошло.


Log in to reply