Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 20

PfSense 2.3. Настройка Site-to-Site VPN

Рассмотрим настройку pfSense.

Для начал, думаю, стоит объяснить что такое pfSense и Site-to-Site VPN и в чем преимущества. Затем перейдем к реализации.

pfSense — это дистрибутив межсетевого экрана основанный на операционной системе FreeBSD. Дистрибутив позволяет реализовать такие механизмы, как NAT, CARP, VPN (в т.ч. PPTP, IPsec, OpenVPN), Captive portal. Кроме этого выполняет функционал классического файрволла, динамического DNS, DHCP и прокси сервера. Прост в развертывании.

Почему Site-to-Site?

Site-to-Site позволяет сконфигурировать только шлюзы в удаленных подсетях, при этом отпадает необходимость конфигурирования самих узлов сети. Говоря простым языком, способ Site-to-Site соединяет два офиса в единую сеть, а Point-to-Site — удаленных сотрудников с офисом. В статье рассмотрим пример соединения двух уже существующих сетей — физической и виртуальной.

Процесс настройки условно разделим на два этапа:

1. Настройка pfSense и конфигурирование частных сетей;

2. Реализация Site-to-Site.

Приступаем.

spacemancar_970x250.jpg

Сперва настроим внутреннюю локальную сеть и интерфейс шлюза. Для этого, в браузере, переходим по IP-адресу сервера или доменному имени, если такое имеется. Вводим логин и пароль и попадаем на Главный экран (Dashboard). В меню программы переходим в раздел интерфейсов (Interfaces) -> Назначение (Assignments). В нашем примере только два интерфейса и уже распределены — оставляем как есть. Если у Вас несколько интерфейсов, следует выбрать необходимый интерфейс по mac-адресу и нажать кнопку добавить (Add).

1.png

Назначаем IP-адрес интерфейсу “смотрящему” в локальную сеть. В меню программы переходим в раздел интерфейсов (Interfaces) -> LAN. По окончании настройки нажимаем кнопку Сохранить (Save).

2.png

Для всех серверов в локальной сети, в качестве шлюза по умолчанию, устанавливаем IP-адрес, указанный в LAN.

Важно! Если вы используете облачные сервисы, то объединять узлы сети необходимо из панели администрирования облачного сервиса через “Виртуальные сети”.

Настраиваем Firewall для локальных соединений.

В меню программы выбираем Firewall -> Правила (Rules) -> LAN. Наживаем кнопку Добавить (Add).

На новой странице проверяем параметры:

настраиваемый интерфейс (Interface) — LAN;

Протокол (Protocol) — TCP, но можно и Any;

Источник (Source) — Any;

Назначение (Destination)- Any.

Настройки сохраняем кликнув по клавише Сохранить (Save).

3.png

Следует обратить внимание, что эти же настройки надо сделать на всех удаленных серверах pfSense, соединяемых в единую сеть.

Приступаем к настройке туннеля Site-to-Site.

В начале настраиваем OpenVPN. В главном меню выбираем VPN -> OpenVPN и кликаем по кнопке Добавить (Add).

На новой странице выбираем:

Режим работы сервера (Server mode) — Peer to Peer (Shared Key);

Протокол (Protocol) — UDP on IPv4 only;

Device mode — tun — Layer 3 Tunnel Mode;

Интерфейс (Interface) — WAN;

Порт (Local port) — 1194;

Shared key — Устанавливаем галку напротив Automatically generate a shared key;

Алгоритм шифрования (Encryption algorithm) — оставляем по умолчанию;

Аппаратное шифрование (Hardware Crypto) — No hardware crypto acceleration;

IPv4 Tunnel Network: 10.0.10.0/24 — указываем адреса используемые в туннеле;

IPv4 Remote networks: 10.0.1.0/24 — указываем адрес сети находящийся за удаленным шлюзом pfSense.

Сохраняем настройки и не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes).

4.png

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

В главном меню выбираем Firewall -> Правила (Rules). Выбираем пункт OpenVPN и кликаем по кнопке Добавить (Add).

На обновленной странице проверяем параметры:

Интерфейс (Interface) — OpenVPN;

Протокол — TCP, но лучше Any;

Источник (Source) и назначение (Destination) — Any.

По окончании кликаем по кнопке Сохранить (Save). Не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes)

5.png

Настроим Firewall для интерфейса WAN.

В главном меню выбираем Firewall -> Правила (Rules). Выбираем пункт OpenVPN и кликаем по кнопке Добавить (Add).

Интерфейс (Interface) — WAN;

Протокол (Protocol) — UDP;

Диапазон портов назначения (Destination port range) в обоих выпажающих списках (From и To) выбираем OpenVPN (1194).

Сохраняем настройки. Не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes).

6.png

Теперь копируем сгенерированный ключ, для передачи его на удаленный маршрутизатор. В главном меню выбираем VPN -> OpenVPN. Кликаем по значку “Карандаш” (редактировать). На обновленной странице из пункта Shared Key копируем всё содержимое поля в текстовый редактор, например, Блокнот.

7.png

Осталось настроить удаленный pfSense-шлюз в качестве клиента.

В главном меню выбираем VPN -> OpenVPN и кликаем по пункту Clients, затем по кнопке Добавить (Add).

На открывшейся странице проверяем параметры:

Режим работы сервера (Server mode) — Peer to Peer (Shared Key);

Протокол (Protocol) — UDP on IPv4 only;

Device mode — tun — Layer 3 Tunnel Mode;

Интерфейс (Interface) — WAN;

Адрес сервера (Server host address) — указывается именно WAN интерфейс сервера, который настраивали ранее;

Порт (Local port) — 1194;

Shared key — Снимаем галку напротив Automatically generate a shared key;

Алгоритм шифрования (Encryption algorithm) — оставляем по умолчанию;

Аппаратное шифрование (Hardware Crypto) — No hardware crypto acceleration;

IPv4 Tunnel Network: 10.0.10.0/24 — указываем адреса используемые в туннеле;

IPv4 Remote networks: указываем адрес сети находящийся за удаленным сервером — шлюзом pfSense.

Кликаем Сохранить (Save). Затем по зеленой кнопке Применить изменения (Apply Changes).

8.png

На этом настройка окончена.

Облачные VPS/VDS

Создайте сервер всего за 1 минуту!

от8 руб/месяц6a1a518591b94e868595f4dc8e18807f.png В статье будет рассмотрен пример настроек касс вендора Dreamkas и маршрутизатора pfSense для работы с сервером 1С через OpenVPN быстро и зашифровано (с использованием TLS/SSL), по любым публичным каналам. Задача: есть много касс во многих магазинах, есть сервер 1С в офисе. Нужно настроить взаимодействие. Вдаваться в настройку 1С не буду, акцент сделан на OpenVPN в маршрутизаторе pfSense и построении сети. Подробное описание касс в моей статье отсутствует.

Пункт 1. Обновляем ПО до актуальных версий

Версию pfSense можно посмотреть на главной странице, там же обновить буквально в 3 клика + 1 перезагрузка. Версию кассы можно обновить в автоматическом режиме через меню «настройки» на самой кассе. Есть ещё куча вариантов обновления, они перечислены на сайте производителя. В основном обновлять ПО нужно для минимизации проблем с OpenVPN. У меня были «нюансы» для работы с openVPN на разных версиях pfSense. Оградите себя от излишних проблем. Так же и пакет OpenVPN появился в кассах относительно недавно.

Пункт 2. Выписываем CA сертификат

Идём в System->Cert.Manager->Ca, нажимаем кнопочку Add и заполняем поля.32d96affac6c467eb771480de26d82fc.png Обращаю внимание на поля: — выбираем Create an internal, если у вас нет уже готового сертификата — Lifetime (days) — срок жизни сертификата CA — Common Name — именно так он будет отображаться дальше в настройке. Вводите данные обдуманно, изменить не получится.

Пункт 3. Выписываем серверный сертификат

Идём System → Certificate Manager → Certificates, нажимаем Add и заполняем поля. c3f3ac66f0934757a067adaa804785d1.png Обращаю внимание на следующие пункты: — Create an internal, если у нас нет готового сертификата — Certificate authority — выбираем наш сертификат CA, созданный в п.1 — Certificate Type выбираем ServerLifetime (days) — срок жизни сертификата сервера — Common Name — именно так он будет отображаться дальше в настройке.

Пункт 4. Выписываем клиентский сертификат

ВАЖНО! Для каждого клиента — свой индивидуальный сертификат! Идём System → Certificate Manager → Certificates, нажимаем Add и заполняем поля. Всё аналогично п.3, за исключением Certificate Type, где выбираем Client Обращаю внимание на следующие пункты: — Certificate authority — выбираем наш сертификат CA, созданный в п.1 — Certificate Type выбираем ClientLifetime (days) — срок жизни сертификата сервера — Common Name — именно так он будет отображаться дальше в настройке. — можно задействовать поле Alternative Names, но если вы не знаете что это, то оно вам не нужно(оставьте пустым). А вообще — по этому полю можно задавать доп настройки и привязки для openVPN клиентов. — Поделюсь своим опытом — я даю осознанное название в Common Name, вида mag.address.kassanomer — это позволит визуально отличать сертификаты друг от друга.

Пункт 5. Настраиваем OpenVPN

Тут всё просто. Всё в pfSense настраивается мышкой через user-friendly интерфейс. Спасибо разработчикам и всем участникам сообщества. Идём VPN → OpenVPN → Servers, добавляем сервер.66cd7a1b92a447e7bcd7c105d7234ef0.png Сделаю некоторые замечания: — я работаю с tap туннелем, мне так удобнее, он имитирует L2 уровень. С ним работают всякие мультикасты, бродкасты и т.п.; — протокол UDP быстрее чем TCP, и ширина канала в одинаковых условиях больше. Это древняя проблема OpenVPN; — выбираем в разделе Server mode режим RemoteAccess; — выбираем в разделе Peer Certificate Authority из списка наш сертификат CA; — выбираем в разделе Server certificate наш серверный сертификат; — выбираем в разделе DH Parameter length (bits) нужную длину; — выбираем в разделе Certificate Depth режим One(Client+Server), это схема без удостоверяющих посредников; — в разделе IPv4 Tunnel Network прописываем нашу туннельную сетку, например 192.168.202.0/24; — в разделе IPv4 Local network(s) прописываем ресурсы, роутинг до которых должны получить кассы. У меня это например 192.168.100.2/32, 192.168.1.0/24; — остальное можно не трогать, либо заполнять на своё усмотрение. Не забудьте открыть на фаерволе порт, на который повешается ваш OpenVPN сервер.ВАЖНО! Кассы будут цепляться на сервер, и получать адреса из диапазона IPv4 Tunnel Network, адреса будут выдаваться в порядке очередности подключения. Но сервер 1С всегда должен знать, что «такая то касса» находится на «таком то адресе». Поэтому настраиваем дальше. Идём в VPN → OpenVPN → Client Specific Overrides, кнопка Add. Нужно создать настройки для конкретных клиентов. Привяжем каждому клиенту свой IP адресe64d61f7dd48499191d1c469e6e97685.png Дальше алгоритм такой: — выбираем в Server List наш сервер — Common name прописываем имя нашего клиентского сертификата из п.4 — в разделе Advanced прописываем команду присвоения IP адреса

ifconfig-push 192.168.202.12 255.255.255.0

Пункт 6. Выгрузка с pfSense сертификатов

Нужно выгрузить следующие файлы: 1) CA-сетификат 2) клиентский сертификат + ключ 3) если у нас SSL/TLS, то сохраним ключ 4) dh параметры Пункты 1) и 2) экспортируются через веб-интерфейс:c11decbb7d0b48f6845219d287c6a3a7.png Файл для 3) экспортируется из настроек OpenVPN сервера. Если вы его уже создали — зайдите, там будет прописан ключ. Копируем, вставляем в файл, сохраняем например в файл client.tls-auth. DH параметры сохраняются через команды:

/usr/bin/openssl dhparam 1024 > /etc/dh1024.pem /usr/bin/openssl dhparam 2048 > /etc/dh2048.pem /usr/bin/openssl dhparam 4096 > /etc/dh4096.pem

Через меню Diagnostics ->Edit File открываем нужный нам файл, например dh1024.pem, настройки DH задаются в настройках OpenVPN сервера.

Пункт 7. Для общего развития

Когда я настраивал TLS/SSL, я слабо представлял, что должно быть написано в конфиге у клиента, у меня были весьма скромные знания по OpenVPN. Я попробовал решение в лоб — настроил на другом pfSense коннект в режиме «клиент», подгрузил сертификаты клиента, проверил как работает. Маршрутизатор настраивается через веб интерфейс, коннект не составил никакой сложности. Благодаря консоли управления pfsense я знал, что конфиги OpenVPN лежат в папке /var/etc/openvpn. Используя Edit File можно посмотреть, как включение и выключение галочек и параметров в веб интерфейсе прописывается в файл. Заодно можно подглядеть ключи. Если будете делать так же — не забываем удалить за собой OpenVPN-клиент и сертификаты с тестового сервера.

Пункт 8. Настройка кассы

У кассы по умолчанию открыта smb-папка с именем \ipaddressexchange, там есть доступ на запись. Выгружаем в неё все 4 файла из п.6. Подконнекчиваемся по SSH к кассе, стандартный дефолтный аккаунт root / 324012, переносим наши файлы в /opt/networks. Да, на борту какой то обрезанный линукс. Чтобы коннектиться к серверу нужен файл client.ovpn, его можно посмотреть в п.7 и отредактировать под свои нужды. Положить туда же — /opt/networks. У меня получилось примерно так:

client dev tap proto udp remote server_ip server_port keepalive 10 60 ping-timer-rem persist-tun persist-key cipher AES-128-CBC auth SHA1 resolv-retry infinite nobind persist-key persist-tun ca "//opt//networks//CAforOpenVPN.crt" cert "//opt//networks//mag.magaddress.kassa1.crt" key "//opt//networks//mag.magaddress.kassa1.key" dh "//opt//networks//dh1024.pem" tls-client tls-auth "//opt//networks//client.tls-auth" 1 ns-cert-type server verb 3

Файл сохраняем. Всё заработает, когда мы перезагрузим кассу, например через reboot. Не забудьте прописать правила на интерфейсе openVPN в pfSense для наших подсетей! Как визуально видеть, что кассы работают(коннектятся)? Вариант 1 — вынести виджет OpenVPN на главную страницу pfSense Вариант 2 — через меню Status->OpenVPN Вариант 3 — через кассу. Коннектимся по ssh, а дальше уже стандартный набор — ifconfig, ping etc…

Пункт 9. Как работать с 1С

Касса в smb-папке хранит свои рабочие материалы. Сервер 1С считывает их, и записывает. Имейте это ввиду эту дырку в информационной безопасности, когда будете проектировать сеть магазина.

Как итог

В статье рассмотрен пример, как имея в распоряжении бесплатный маршрутизатор pfSense и множество Linux-based касс можно сделать хороший шифрованный туннель до удалённого сервера 1С, который настраивается за несколько кликов. В описанном варианте настройки мы получаем очень масштабируемую схему подключения касс с персональным сертификатом для каждого удалённого устройства. Использование OpenVPN напрямую в кассе делает неактуальными риски информационной безопасности по части передачи данных. Если у вас маленькая торговая точка — то строить сеть возможно нет необходимости. Покупаем любой роутер с поддержкой 3G, заводим интернет — касса его получает либо по кабелю, либо через Wi-Fi, и уже сама постучится на сервер. В моих масштабах это существенная экономия на сетевой инфраструктуре. Полезные ссылки

О pfSenseOpenVPN PKI: Site-to-Site инструкция для обсужденияИнструкция от производителя, без TLS/SSL и шифрования

Всем спасибо.

Вводная информация

Point-to-Site VPN (Virtual Private Network) — технология, позволяющая организовать собственную виртуальную частную сеть и подключать к ней территориально удаленных пользователей. VPN представляет собой безопасный SSL/TLS-туннель между сервером и клиентами, предоставляет общий доступ в сетевым ресурсам, снижает расход интернет-трафика пользователей за счет использования сжатия, а также дает возможность маршрутизации всего клиентского трафика через VPN-сервер (аналогично прокси-серверу).

pic1.jpg

В данном руководстве мы рассмотрим процесс создания виртуальной частной сети с помощью свободной реализации технологии VPN — OpenVPN, поддерживаемой едва ли не всеми современными операционными системами (Windows, Mac OS, Linux, Android, iOS, ChromeOS). Настройка будет осуществляться на сервере, работающем под управлением pfSense 2.3.

PfSense представляет собой дистрибутив на базе ОС FreeBSD, предназначенный для создания межсетевых экранов/маршрутизаторов. При весьма широких возможностях, он бесплатный, нуждается лишь в минимальных аппаратных ресурсах, и имеет предустановленный понятный web-интерфейс управления. Подробнее ознакомиться с возможностями pfSense можно здесь.

Для упрощения процесса настройки и дальнейшего администрирования сервера мы будем использовать OpenVPN Remote Access Server — программное решение, включающее в себя непосредственно OpenVPN-сервер, собственный веб-интерфейс управления, а также набор автоматически настраиваемого клиентского ПО для соединения с сервером. Единственное ограничение Remote Access Server — необходимость лицензирования. Бесплатная (базовая) лицензия рассчитана на обслуживание двух VPN-клиентов. При увеличении числа пользователей потребуется приобретение дополнительных лицензий. На момент написания статьи их стоимость составляет 9.60$ в год за каждого, начиная с третьего, клиента. Подробная информация о лицензировании Access Server находится здесь.

1. Создание сервера pfSense и настройка OpenVPN Remote Access Server

Для дальнейших манипуляций нам потребуется хост pfSense. Если Вы используете сервис 1cloud.ru, то для подготовки сервера достаточно выбрать соответствующий шаблон (pfSense 2.3) при создании сервера — через несколько минут он будет готов к работе. Если же Вы планируете использовать сторонний хостинг или собственный сервер, потребуется сперва установить и настроить pfSense.

Итак, сервер готов. Переходим в его веб-интерфейс управления.

pic2.jpg

Входим, используя учетные данные, указанные в панели управления 1cloud. Затем открываем вкладку VPN > OpenVPN > Wizards.

pic3.jpg

Откроется мастер настройки OpenVPN Remote Access Server. Выбираем тип сервера (Type of Server) – Local User Access.

pic4.jpg

На следующем этапе следует указать параметры сертификата создаваемого центра сертификации (CA), который в дальнейшем, будет заверять сертификаты клиентов:

  • Descriptive name: MyCA (можно указать иное)
  • Key length: 2048 bit
  • Lifetime: 3650 (срок действия сертификата. Оставим по умолчанию)
  • Country Code: RU
  • State or Province: Saint Petersburg
  • City: Saint Petersburg
  • Organization: 1cloud (название компании, подтверждающей сертификаты пользователей)
  • E-mail: support@1cloud.ru

Кликаем “Add new CA”.

Теперь необходимо указать параметры самого сертификата CA. Можно ничего не изменять, только указать Descriptive Name – например «MyCAcrt». Кликаем «Create new Certificate».

pic5.jpg

Далее нужно настроить OpenVPN-cервер:

  • Interface: WAN (сетевой интерфейс сервера, подключенный к интернету)
  • Protocol: UDP
  • Local Port: 1194
  • Description: myVPN (любое удобное название)
  • Tunnel Network: 10.0.8.0/24
  • Redirect Gateway: Включить (Отключите эту опцию, если Вы не хотите, чтобы весь интернет-трафик клиента перенаправлялся через VPN-сервер.)
  • Local Network: Оставляем пустым (Если Вы хотите, чтобы локальная сеть, находящаяся за сервером pfSense, была доступна для удаленных клиентов VPN, укажите здесь адресное пространство этой сети.)
  • Concurrent Connections: 2 (Если Вы приобрели дополнительную лицензию OpenVPN Remote Access Server, укажите число, соответствующее количеству приобретенных лицензий)
  • Inter-Client Communications: Включить (Если Вы не хотите, чтобы VPN-клиенты видели друг друга, отключите эту опцию)
  • DNS Server 1 (2 и т.д.): указать DNS-серверы хоста pfSense. (узнать их адреса можно в разделе System > General Setup > DNS Servers)

Остальные параметры можно оставить по умолчанию. Кликаем «Next».

Теперь указываем параметры Firewall. Включаем обе опции: разрешаем внешние подключения для клиентов и трафик внутри VPN-туннеля.

pic8.jpg

Настройка серверной части завершена.

Теперь нам нужно добавить пользователей, которые в дальнейшем смогут подключаться к виртуальной частной сети. Для этого переходим в меню System > User Manager. Кликаем «Add» для добавления нового пользователя.

pic9.jpg

Вводим информацию о пользователе. Не забудьте активировать опцию “Click to create a user certificate” и указать созданный ранее центр сертификации в параметрах сертификата пользователя.

pic10.jpg

Аналогичным образом, при необходимости, добавляем второго (третьего и т.д.) пользователя.

2. Экспорт клиентских конфигураций и подключение пользователей

Для упрощения процедур конфигурации программ-клиентов, в pfSense предусмотрен дополнительный инструмент – “OpenVPN Client Export Utility”. Этот инструмент автоматически подготавливает установочные пакеты и конфигурационные файлы пользователей, что позволяет избежать ручной настройки VPN-клиента со стороны конечного пользователя.

Установим вышеописанный пакет. Для этого переходим в меню System > Package Manager > Available Packages. Находим в списке openvpn-client-export utility. Кликаем «Install» для его установки.

Сообщение со скриншота ниже говорит об успешном завершении установки.

pic12.jpg

Теперь можно экспортировать конфигурации на пользовательские устройства. Переходим во вкладку VPN > OpenVPN > Client Export.

pic13.jpg

Изменять какие-либо параметры, указанные на открывшейся странице, обычно нет необходимости. В нижней части страницы находим поле «OpenVPN Clients». Здесь размещены версии конфигураций под различные типы клиентов.

pic14.jpg

Рассмотрим процесс подключения клиента к созданной виртуальной частной сети на самом распространенном примере – подключении ПК под управлением Windows.

pic15.jpg

  • Для настройки Windows-клиента скачиваем соответствующий параметрам компьютера установочный пакет из списка (см. скриншот выше). Запускаем. Начинается инсталляция утилиты. Кликаем «Далее» (изменять стандартные параметры установки нет необходимости).
  • Открываем установленный “OpenVPN GUI”. В трее появляется соответствующая иконка. При клике на нее, происходит подключение к VPN. В процессе подключения будет запрошено имя пользователя, указанное Вами при его создании в панели управления pfSense. При успешном соединении с сетью иконка OpenVPN в трее станет зеленой и отобразится уведомление о получении адреса в пространстве 10.0.8.0/24.

Если Вы включили опцию перенаправления всего клиентского трафика через сервер OpenVPN, то имеет смысл проверить корректность ее работы. Для этого в браузере проверяем IP-адрес клиентского устройства, например через myip.ru. Он должен совпадать с IP-адресом VPN сервера.

pic16.jpg

На этом настройка Point-to-site VPN завершена.

P.S. В рамках данной инструкции мы не будем описывать настройку клиентов на других ОС. Эту информацию можно найти непосредственно в разделе VPN > OpenVPN > Client Export > Client Install Packages. Приведем только пример настройки VPN-клиента на ОС Ubuntu/Debian без установленного графического окружения (что зачастую актуально для серверов).

sudo -s apt-get update && apt-get upgrade apt-get install openvpn cp /home/user/openvpnfiles/* /etc/openvpn (копирование файлов конфигурации openvpn в рабочую директорию программы. Эта команда подразумевает, что файлы уже находятся в папке /home/user/openvpnfiles, и кроме них в ней ничего нет.)/etc/init.d/openvpn restart ifconfig

В результате выполнения последней команды, в окне терминала должен появиться список сетевых подключений, включающий в себя соедение TUN-это и есть подключенный VPN-туннель.

  Используемые источники:

  • https://serverspace.by/support/help/pfsence-site-to-site-vpn/
  • https://habr.com/post/312528/
  • https://1cloud.ru/help/network/nastrojka-point-to-site-vpn-s-pomoshchyu-openvpn-remote-access-server-na-pfsense

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации