Pfsense firewall rules настройка

Обновлено: 06.07.2024

Маршрутизатор pfSense - этот роутер основан на FreeBSD, а появился он как ответвление от проекта m0n0wall в 2006-м году. Если m0n0wall представляет собой простой программный маршрутизатор с базовым набором функций, то pfSense вобрал в себя почти весь функционал обычного BSD или linux дистрибутива, заточенного под сетевые нужды.

  1. Фаервол
  2. Правила для ограничения количества подключений
  3. Фильтрация трафика на основе данных об ОС пользователя
  4. Возможность логирования событий, когда трафик удовлетворяет каким-либо правилам фаервола
  5. Гибкая политика роутинга в случае использования нескольких каналов: балансировка нагрузки, основной-резервный и пр.
  6. Любым IP-адресам и диапазонам можно назначать имена для более удобного составления правил
  7. Прозрачная фильтрация трафика.
  8. Нормализация пакетов — проверка фрагментированных пакетов (применяется для предотвращения специфических атак).
  9. NAT всякоразный
  10. Аппаратное резервирование. Две или более машины с установленным pfSense позволяют создать отказоустойчивый кластер
  11. VPN: IPSec, PPTP, OpenVPN, PPPoE
  12. Мониторинг всех параметров роутера
  13. Динамический DNS. Поддерживается 13 сервисов.
  14. Captive Portal
  15. DHCP-сервер

pfSense можно запустить как LiveCD с возможностью и хранить конфиг на сменном носителе, а можно честно установить на хард. В последнем случае функционал роутера можно расширять, доустанавливая нужные компоненты: веб-сервер, samba, radius-сервер, ftp-сервер и пр (более 50 различных дополнений).
Минимальные системные требования выглядят следующим образом:
Процессор — 100 MHz Pentium 1
Оперативная память — 128 Mb
Здесь самое главное понять, что чем больше возможностей pfSense вы хотите задействовать, тем мощнее нужен комп под него. Вполне логично.

Обзор о pfSense будет посвящен настройке прокси-сервера в этом программном маршрутизаторе. Дополнительно мы покажем вам, как снять статистику с прокси, т.е. как узнать кто и в каких количествах использует интернет.

Установка

Для полного счастья нам надо установить два пакета. Делается это в меню System\packets. Здесь есть две вкладки. Available Packages — доступные для установки пакеты. Installed Packges — уже установленные пакеты.

Что где находится, думаю, понятно. В Available Packages в списке найдите и установите следующие пакеты (обязательно в указанном порядке):

  1. squid — сам прокси-сервер. Там есть еще похожий пакет squid3 — его устанавливать не надо!
  2. lightsquid — модуль статистики

Настройка


Установили? Все три пакета должны отобразиться в списке в Installed packages. Идем в меню Services\Proxy server. Здесь, во вкладке General, расположены основные настройки.

Во-первых выбираем сетевой интерфейс LAN, чтобы только на нем прокси принимал запросы. Далее ставим галку Allow users on interface — разрешаем пользоваться прокси всем, кто подключается со стороны выбранного интерфейса.

Знаете как в интернете появляются анонимные прокси (в большинстве случаев)? Это когда админ забыл ограничить доступ к прокси только из своей локальной сети. Т.е. получается, что его прокси-сервером может пользоваться кто угодно из интернета в своих корыстных целях. Никогда не наступайте на эти грабли!

Следующая галка — Transparent proxy. Есть два основных режима работы сервера: обычный и прозрачный (transparent). По существу два режима отличаются тем, что в последнем варианте не нужно настраивать никакие опции прокси-сервера в броузерах на компьютерах локальной сети. Т.е. выходя в интернет со своего компа, человек думает, что подключен на прямую, а на самом деле — нет. Недостаток у прозрачного режима только один — нельзя сделать ограничения по логину и паролю на доступ в интернет. Т.е. либо все компьютеры сети выходят в интернет прозрачно либо никто не выходит. Либо пользуйтесь обычным режимом прокси-сервера с проверкой по логину и паролю для каждого человека.
На самом деле, прокси-сервер squid умеет работать в двух режимах одновременно, но в pfSense включить их одновременно через web-интерфейс нельзя. Можно попробовать вручную отредактировать конфигурационный файл. Мы проведем этот эксперимент в другой раз.
Если вы только начинаете изучать pfSense и вы раньше никогда не настраивали squid, то мы вам рекомендуем для начала попробовать режим transparent — он проще в настройке.
Давайте еще разберем несколько основных настроек, которые, кстати говоря, будут одинаково справедливы для обоих режимов работы прокси-сервера в pfSense:

И еще пара интересных опций, которые работают только в режиме Transparent:

  1. Bypass proxy for these source IPs — сюда можно вписать список компьютеров локальной сети через разделитель ; которым разрешено ходить в обход прокси-сервера.
  2. Bypass proxy for these destination IPs — сюда можно вписать список внешних ресурсов через разделитель ; до которых все компьютеры локальной сети смогут ходить напрямую (не через прокси).

:)

После выставления всех опций не забываем нажать кнопку Save внизу страницы.
Давайте рассмотрим другие закладки. В Upstream Proxy указывается вышестоящий прокси-сервер. В закладке Cache Mgmt — настраивается кеширование. В закладке Access Control — можно прописать разрешенные и запрещенные есть. Вся эта закладка не имеет смысла, если мы установили опции Allow users on interface и Transparent proxy. В закладке Traffic Mgmt можно установить ограничения на максимальный размер скачиваемых и закачиваемых файлов. Имхо одна из самых полезных вещей
Закладка Auth Settings в режиме Transparent не работает вообще. Здесь настраиваются опции аутентификации.
Последняя закладка нужна для добавления пользователей, авторизованных на прокси-сервере в случае использования обычного режима работы.

Firewall

Какой бы мы режим не выбрали, нам нужно сделать так, чтобы доступ в интернет осуществлялся только через прокси-сервер. И прежде чем мы пойдем дальше, нам необходимо внести некоторые коррективы в правила фаервола. Если вы устанавливали pfSense по нашим предыдущим обзорам, то набор правил по умолчанию в закладке LAN меню Firewall\Rules у вас будет выглядеть следующим образом:

На данном этапе нужно удалить все правила кроме первого, которое нужно только для того, чтобы бы мы сами себе не заблокировали доступ на web-интерфейс pfSense. Удалить любое правило можно нажатием кнопки с изображением крестика справа от нужного правила. После удаления список правил получился вот такой:

Теперь добавим одно довольно простое правило, которое будет разрешать доступ с компьютеров локальной сети до машины с pfSense. Это делается кнопкой, я её указал стрелкой на скриншоте выше. Такое правило нужно по двум причинам как минимум:

  1. <Чтобы компьютеры локальной сети могли разрешать DNS-имена через наш pfSense-маршрутизатор
  2. Чтобы на начальном этапе мы могли,например, пинговать роутер и выполнять любые другие необходимые диагностические действия.

По сути, можно было бы создать два отдельных правила под эти нужды, но новичкам мы рекомендуем все-таки ограничиться одним более универсальным правилом, которое дополнительно может избавить и от других проблем в процессе настройки. Итак, в процессе создания правило будет иметь следующий вид (самые важные моменты я выделил желтым):

После удаления старых правил и создания новых не забудте нажать кнопку Apply Changes вверху! Итоговый вид будет вот такой:

Теперь можно попробовать выйти в интернет с любого компьютера локальной сети. Весь трафик при этом будет проходить через прокси-сервер pfSense. Посетите несколько сайтов, попробуйте чито-нибудь скачать, кароче создайте вид бурной деятельности в интернете. Сейчас это нужно просто для того, чтобы создать некотрой объем записей в лог файле для нашей будущей статистики.

Статистика Lightsquid


Давайте посмотрим как ее настроить. Сначала пройдем в меню Status\Proxy report.

На первой закладке Settings сделаем несколько манипуляций:

  1. Language — устанавливаем Russian
  2. IP resolve method — самый универсальный способ — Demo
  3. Refresh sheduler — интервал обновления статистики. Чем меньше интервал, тем больше будет нагружен pfSense. На этапе настройки и отладки мы рекомендуем минимально возможное значение — 10 мин, но затем лучше выбрать более рациональное значение, например, 60 мин.


Нажимаем внизу страницы кнопку Save, а после этого кнопку Refresh full. Затем перейдите на саму страницу статистики — вторая закладка Lightsquid report. Сначала там может появиться страница с ошибкой. Ничего страшного, оставьте ее в покое, просто чуть позже (минут через 10-15) попробуйте обновить страницу в броузере. Должно появиться примерно вот это:

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

На этот раз рассмотрим работу прокси-сервера в роутере pfSense совместно с антивирусом, а так же затронем тему ограничения доступа к сайтам различных категорий. Естественно, что для решения этих задач, у вас уже должен работать прокси-сервер, как его настраивать в pfSense мы рассказывали в прошлом обзоре.
На всякий случай приведу быстрые ссылки на все предыдущие статьи про pfSense:

Как это работает


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

HAVP (антивирус) по сути является самостоятельным мини-прокси, который только фильтрует вирусы. Для работы ему необходим отдельный порт (по умолчанию в pfSense используется 3125). Затем отфильтрованный трафик он отдает основному прокси-серверу Squid, который работает через порт 3128. Этот трафик по необходимости фильтруется контентным фильтром SquidGuard и после этого отдается компьютерам локальной сети. Как вы понимаете, такая многоступенчатая фильтрация требует определенных ресурсов, поэтому если pfSense установлен на слабую машину, вы можете получить ощутимые тормоза при серфинге в интернете.

Настройка Антивируса

Проверка сопряжения с прокси-сервером.

Переходим в меню Services\Proxy server и в первой закладке проматываем страницу в самый низ. В поле Custom Options у нас должно появиться несколько записей про антивирус havp:

Если всё так, то нажимаем кнопку Save.
Теперь переходим в меню Status\Services:

Нам здесь нужно убедиться, что службы havp и squid работают: статус должен быть Running. Если это не так, попробуйте нажать на кнопку Start (указал стрелкой на скриншоте).
Если не поможет, перезагрузите pfSense через меню Diagnostics\Reboot. Когда я настраивал у меня по непонятным для меня причинам служба havp запустилась сама минут через 5 после перезагрузки роутера.

Проверка антивируса

Настраиваем фильтры SquidGuard

  • —— — не обрабатывать фильтром
  • whitelist — не блокировать никогда, даже если перекрывается другими правилами
  • deny — запрещать
  • allow — разрешать

В самом конце списка будет категория Default access (доступ по умолчанию). Мы рекомендуем поставить там allow, а на «нужных» категориях ставить deny. Тем самым по умолчанию мы разрешим доступ куда угодно за исключением запрещенных категорий. Каждый раз когда вы будете менять доступ до категорий не забывайте нажимать Save внизу и кнопку Apply в закладке General settings.

Важное замечание: после нажатия кнопки Apply фильтр перенастраивается несколько минут, поэтому не торопитесь сразу проверять изменения.

Типовые задачи для фильтра SquidGuard

1. Ограничить доступ по времени


Для этого сначала нужно определить временные интервалы. Это делается в закладке Times. При добавлении временного интервала его название не должно содержать пробелы. В нашем примере мы сделали сложный интервал. По будням доступ разрешен с 8 до 18, а в выходные с 9 до 15.

Вы можете создать сколько угодно временных интервалов, затем их применять в пользовательских списках доступа.

2. Индивидуальные настройки категорий для компа

Это делается в закладке Groups ACL. Сделаем одно правило для админского компа. Назовеем правило adminPC, укажем его IP-адрес, в ниспадающем списке Time при желании можно указать временной интервал из предварительно созданных на шаге 1.

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

Нажимаем Save. Созданные правила можно редактировать, выключать, удалять. Чтобы выключить какое-либо правило надо зайти в него,


установить саму первую галку — Disabled и сохранить правило.

3. Как добавить какой-либо сайт в белый список

В закладке Target Categories создаем новую категорию, куда добавляем нужные нам домены и/или нужные ссылки. Если у нас несколько адресов или доменов, то их можно вписать через пробел.

После создания категории, оно появится в общем списке категорий. Установите для нее режим доступа whitelist.

4. Как запретить загрузку файлов определенных типов


Создаем еще одну категорию, где в поле Extension вводим специальное регулярное выражение вида:
(.*\/.*\.(asf|wm|wma|wmv|zip|rar|mp3|avi|mpg|mpeg|mpv|mp3|vpu))
Список запрещаемых расширений файлов можете отредактировать сами. В итоге у вас должно получиться вот так:

Далее настраиваете режим доступа для созданной категории и дело в шляпе.

Самое главное на забывайте нажать кнопку Apply в закладке General Settings после всех манипуляций.
На этом пока всё. Удачи в освоении


pfBlockerNG? Что это? Далеко немногие используют функционал pfSense на полную - а ведь данный пакет является по сути opensource решением близким к Cisco Firepower Security Intelligence, ну а из free аналогов наиболее близок к FireHOL.

Блокировка IP по географическому признаку используя MaxMind GeoIP

Блокировка доменов по категориям использую списки Shallalist и UT1

Поддержка IP/DNSBL фидов в разных форматах - TXT, CSV, JSON, ASN, WHOIS, Regexp

Поддержка SafeSearch - переадресация поисковых запросов Google/Youtube/Yandex/Bing/DuckDuckGo на "безопасную" версию для фильтрации контента не предназначенного для детей

Детальное ведение лога, ведение статистики и построение отчётов/диаграмм

Для удобства будем считать что у нас уже установлен последний pfSense (2.5.2 на данный момент) и настроены два сетевых интерфейса - LAN и WAN. Задача - установить и настроить pfBlockerNG для защиты от всего плохого и ужасного.

Установка и первоначальная настройка


Заходим на System > Package Manager > Available Packages и выбираем (внимание!) pfBlockerNG-devel. Дело в том что т.н. стабильная версия практически не обновляется уже долгое время и если у вас свежая установка - смело ставим именно -devel. Последняя на момент статьи версия - 3.1.0.

Переходим на Firewall > pfBlockerNG и попадаем в визард начальной настройки. Делаем два next'а и выбираем WAN в качестве inbound интерфейса и LAN в качестве outbound. Оставляем значение VIP адреса и порты как есть.

После этого запуститься первоначальная синхронизация pfBlockerNG в процессе которой он скачает некоторые дефолтные фиды и перезапустит DNS Resolver.

Обратите внимание открывшуюся страницу Update - в дальнейшем для применения изменений или обновления фидов на данной странице нужно запускать Force Reload + All/IP/DNSBL для применения/обновления соответствующих настроек и скачивания свежих фидов. Рекомендуется делать это именно через "Force", т.к. вы не всегда можете знать требуют ли определённые опции перезапуска DNS и перегенерации фидов или нет.

На основной странице Firewall > pfBlockerNG > General убедимся что стоит галочка Enable и оставим остальные параметры как есть.

Основные опции блокировки по IP


IPv4 Suppression - белый список IPv4 адресов (/32 маска) и сетей (только /24 маска!) Добавляем если нужно чтобы что-то случайно не заблочилось фидами.

IP фиды


Это одна из основных, наравне с DNSBL фидами фишка для которой и устанавливают pfBlockerNG. Тут всё просто - переходим на Firewall > pfBlockerNG > Feeds и видим огромный список как IPv4/IPv6, так и DNSBL фидов. Но пока вкратце по наиболее важным категориям первого типа:

PRI1/PRI2/PRI3/PRI4 - основные фиды со злодейскими IPшниками - вирусы, malware, C&C сервера и пр. Цифра означает качество фидов, т.е. выборка PRI1 более тщательная чем PRI4, где количество false-positive срабатываний может быть намного чаще.

SCANNERS - IP адреса "легальных" сканеров сети, вроде Shodan. Пригодится для фильтрации inbound трафика в случае когда за pfSense стоят другие сервера.

SFS - Stop Forum Spam. Обычно используется для фильтрации входящего трафика для web-серверов, не имеет особого смысла для трафика исходящего из вашей локалки.

TOR - тут думаю всё понятно

MAIL - антиспам-фиды, на случай если за pfSense стоит ваш почтовик

DNS - IP адреса всех известных DNS серверов. Можно использовать для доп. блокировки исходящих DNS запросов на внешние сервера. Но осторожно, могут быть и false-positive срабатывания

Proxy, Torrent, VPN - IPшки известных прокси серверов, торрент-трекеров и VPN. Последний использовать аккуратно, могут быть заблокированы и вполне легитимные VPNы (например DrWeb Security Space)

Нажимаем на плюсик в правой колонке и попадаем на страницу добавления IP фида. Выставляем State в положение ON, чтобы активировать скачивание фида и смотрим Settings. В Action выбираем собственно действие - Inbound/Oubound Deny/Permit понятно, match просто логирует трафик, c Alias интереснее - я обычно использую Alias Deny для блокировки и Alias Permit для разрешающих фидов (бывает и такое, см. дальше). Enable Logging и States Removal аналогичны Force Global IP Logging и Kill States что рассматривались выше. Оставляем остальные опции как есть (периодичность обновления известных фидов прописывается автоматически), разве что стоит обратить внимание на IPv4 Custom_List - там можно прописать дополнительные IP или домены/ASN которые преобразуются в IP и будут добавлены к фиду.

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

Иногда нужный фид отсутствует в списке и вы можете просто добавить его вручную - Firewall > pfBlockerNG > IP > IPv4 > кнопка Add. Основные опции мы разобрали, стоит остановиться на форматах:

Auto - это может быть txt, csv или json файл по указанному URL

GeoIP - при настроенном GeoIP можно просто указать двухбуквенный код страны

Whois - преобразует указанное доменное имя в IP адрес(а)

ASN - можно указать номер или имя ASN (при наборе отобразятся варианты / автодополнение)

В поле State также может быть полезен вариант HOLD - в этом случает фид скачивается только один раз.

Кстати, а в когда это может понадобится IP фид для разрешающего правила? Например чтобы используя фиды роскомсвободы логировать нужный трафик. Корпоративный пример - это bypass правило для адресов Office365.

Важное про IP фиды - если те стали слишком уж большие, вы можете увидеть в логах pfSense "Cannot allocate memory" ошибку, вроде:

Значит под таблицы файрвола (т.е. алиасы) выделено недостаточно памяти. Лечится увеличением Firewall Maximum Table Entries (лучше сразу раза в 2-3) на странице System > Advanced > Firewall & NAT.

Основные опции DNS блокировки


pfBlockerNG использует DNS Resolver (unbound) для фильтрации DNS имён, TLD, IDN и.. обо всё по порядку.

DNSBL Webserver Configuration - если в локальной сети используется IPv6 то активируем IPv6 DNSBL. Web Server Interface - убеждаемся что выбран Localhost, иначе могут быть проблемы с другими сервисами, в частности с OSPF на том же интерфейсе.

DNSBL Whitelist - тут думаю всё понятно. Стоит отметить что как здесь, так и в остальных полях где нужно вводить домены, можно вводить кириллические домены (в смысле IDN).

TOP1M Whitelist - позволяет отфильтровать популярные домены из фидов, дабы не заблокировать те ненароком. Лучше включить и потюнить Domain count по ходу дела если будет нужно. Не забудьте выбрать те TLD домены что нужно фильтровать.

TLD Exclusion List / Blacklist / Whitelist - используются опцией Wildcard Blocking (TLD).

DNSBL IPs - предпочитаю выставлять List Action в Alias Deny, так, если в DNSBL фидах обнаруживаются чистые IP адреса, то все они будут находиться в алиасе pfB_DNSBLIP_v4, который уже можно ставить куда угодно.

DNSBL фиды


Основной принцип работы с DNSBL фидами тот же что и с IPшными, с небольшими отличиями. Но сначала посмотрим основные виды DNSBL фидов:

EasyList, ADs, ADs_Basic - рекламные домены. Must have.

Email - почтовые сервера, может заблочить (без предварительной фильтрации) полезные домены

Malicious, Phishing - тут всё понятно

Cryptojackers - домены для скрытого майнинга. лучше добавить

Compilation - по сути агрегаторы более мелких фидов, могут быть довольно большие и неаккуратные (просто активируйте Top 1M на них)

STUN - список STUN доменов используемых (в основном) IP телефонами за NAT'ом

Нажимаем на плюсик в правой колонке и видим страницу очень похожую на ту что мы видели при добавлении IP фида. Но есть некоторые отличия:

В качестве Action выбираем Unbound

Group Order - если выставить Primary, то данный фид будет обрабатываться первым в группе. Другими словами если вам нужно чтобы домены из данного фида обрабатывались немного по-другому (напр. иной Logging / Blocking mode) и эти же самые домены могут находиться другом фиде группы.

DNSBL Custom_List - можно вручную добавить ещё доменов. Как было сказано ранее можно напрямую вводить IDN домены.

Думаю по DNSBL фидам всё понятно. Но остались ещё две вкладки - DNSBL Category и DNSBL SafeSearch

DNSBL Category


В двух словах это блокировка по категориям сайтов наподобие Firepower Security Intelligence. Включаем Blacklist Category, выбираем понравившийся нам блэклист (или оба!), частоту обновлений, логирование и вперёд!

DNSBL SafeSearch


На этой странице можно настроить две вещи - собственно SafeSearch, или как его ещё называют "Семейный поиск" и блокировку DoH серверов.

Просто выбираем SafeSearch Redirection - Enable и теперь наши поисковые запросы перенаправляются на "безопасные" поисковые домены, например поиск через www.duckduckgo.com будет перенаправлен на safe.duckduckgo.com. Но это касается только поиска через Google, Yandex, DuckDuckGo, Bing и поисковик по картинкам Pixabay. Причём только Google поддерживает такой безопасный поиск для IPv6. YouTube Restrictions работает аналогично (в т.ч. через IPv6), но только для поиска через youtube. Можно даже выбрать "силу" семейного поиска - Moderate (фильтровать мрачную жесть) и Strict (фильтровать любую жесть).

Пожалуй всё - и если тут было рассказано про возможности и настройку pfBlockerNG в целом, то в последующем будут step-by-step туториалы под конкретные случаи.





Теперь давайте добавим правила для интерфейсов. Я хочу получать доступ к нашему маршрутизатору через WAN (в работающий среде такого делать не стоит, по умолчанию извне запрещены все подключения)


Добавим правило разрешающее подключение извне с любого IP и порта на 443 порт нашего маршрутизатора.

Block private network и block bogon networks означает, что по умолчанию блокируются диапазоны приватных частных сетей, и адреса из диапазонов еще не распределенных или зарезервированных.

Не забывайте, что правила обрабатываются по очереди, и если первое правило у вас разрешающее, а идущее за ним такое же правило запрещающее (или просто попадающее под такие же условия) то сработает первое правило и обработка остановится.


Теперь в меню services нам доступна наша IDS.


В меню interfaces нажимаем add, и добавляет WAN интерфейс, настройки можем оставить по умолчанию.



Чуть ниже на странице выставляем интервал обновления правил, а еще ниже время удаления заблокированных IP адресов из списка.




Если suricata ошибочно заблокировал хост или сайт, переходим на вкладку blocks, и удаляем IP из таблицы.

Если же правило срабатывает постоянно, заходим на вкладку alerts, находим правило, и нажимаем красный крестик. Этим мы отключим данное правило.



Отлично, мы создали и защитили наш шлюз в интернет. Настало время подумать об удаленном доступе внутрь сети для пользователей. В этом нам поможет сервер OpenVPN.



Теперь можно выбрать его в настройках




В Advanced Configuration есть возможность прописать маршрут. Например мы хотим, что бы при запросе какого-то адреса мы заворачивали трафик на него в туннель. Это можно сделать с помощью команды push route, как на скриншоте.


Теперь сохраняем наш сервер, и устанавливаем через менеджер пакетов openvpn-client-export

Отлично. Теперь у нас есть маршрутизатор, выход в интернет, опубликованы сервисы, настроена безопасность, и есть удалённый доступ. Уже неплохо.

Давайте теперь настроим прокси сервер squid с антивирусом. Так мы сможем контролировать трафик пользователей и проверять его на шлюзе антивирусом.
Для начала установим пакет squid.






На вкладке ACLs мы можем задавать разрешения для IP адресов и подсетей, а на вкладке Traffic Mgmt устанавливать ограничения на полосу пропускания. Вкладка Authentication отвечает за выбор способов аутентификации пользователей.


На 443 порт вам нужно создать правило разрешающее доступ, проброс портов настраивать на 443 порт не нужно.Сервер, на который будут перенаправляться запросы будет указан ниже. А также сервисы, которые вы хотите что бы работали через reverse proxy.

В качестве примера, рассмотрим еще reverse proxy для сервере обновлений NOD32. Работает он на порту 2221.


На вкладке web servers укажем порт и IP внутри сети сервера обновлений.



Здесь мы увидим паттерны:

Вот сколько всего можно сделать при помощи pfsense, причём довольно быстро и эффективно. Охвачена лишь небольшая часть функционала, и очень неглубоко.

Если у Вас есть вопросы, задавайте их на форуме, или ниже в комментариях.

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

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

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

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

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

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

Виртуальный VPS сервер

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

pfsense

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

pfsense

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

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

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

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

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

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

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

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

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

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

pfsense

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

pfsense

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

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

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

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

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

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

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

pfsense

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

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

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

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

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

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

pfsense

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

pfsense

Осталось настроить удаленный 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).

Читайте также: