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
из него нам нужно извлечь.- открытый ключ СА
- открытый ключ именного сертификата
- закрытый, приватный, ключ именного сертификата.
для этого любым текстовым редактором открываем его на просмотр.
находим текст между тэгами <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.х и новее.