Межсетевой экран pfSense Community Edition
Межсетевой экран pfSense Community Edition
Категория: Железо Теги: Межсетевые экраны Опубликовано: 27 марта 2024

pfSense Community Edition

Пришло время посмотреть на свободный межсетевой экран pfSense Community Edition. Именно на базе него был создан OPNsense в 2015 году. 

В общем, среди свободных межсетевых экранов выбор небольшой, и pfSense наверное единственный более-менее адекватный конкурент OPNsense. Именно среди свободных, а не бесплатных - это разное! Говоря о свободных, я предполагаю свободное программное обеспечение, которое даёт пользователю свободу использования, включая использование с целью коммерческой прибыли. Да, есть исключения и целые лицензии с запретами на это, но на самом деле они уже не относятся к свободным. Бесплатные, как правило, бесплатны только для домашнего использования, и в них указывается прямой запрет использования с целью коммерческой прибыли.

pfSense распространяется по лицензии Apache 2.0, а OPNsense по лицензии BSD.

Этап установки

Для установки необходимо использовать учетные данные installer/pfsense.

Консоль в pfsense

Если у WAN-интерфейс не получит IP-адрес по DHCP, тогда сначала следует попробовать назначить интерфейсы при помощи пункта Assign Interfaces. После её нажатия он попросит вас указать, какой интерфейс WAN, а какой LAN. Честно говоря, много раз встречал ситуацию, что WAN не получал настройки по DHCP, и лечилось это только установкой с нуля, предварительно переткнув витую пару между портами сетевых карт. В чем прикол - не понятно, но именно в pfSense я встретил такой косяк на разном железе в разных сетях.

Он должен спросить, какой протокол использовать для веб-интерфейса - http или https. В зависимости от этого выбора в веб интерфейс нужно заходить по адресу http://АДРЕС_МЭ или https://АДРЕС_МЭ.

Для первого входа в веб-интерфейс необходимо использовать логин admin и пароль pfsense.

Аутентификация в веб-интерфейсе pfsense

После входа в веб-интерфейс нас встречает мастер настройки.

Мастер настройки pfsense

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

На 6 шаге мастер настройки попросит нас изменить пароль.

Изменение пароля в мастере настройки

По завершению работы мастера настройки должно отобразиться всплывающее уведомление с условиями использования, в которых и указана лицензия. Принимаем, что нам остается? Кнопки отказаться все равно нет.

Условия использования pfSense

И после этого мы наконец-то видим дашборд!

Дашбоард в pfsense

Система

В разделе System \ General setup можно переключить веб-интерфейс на русский язык.

Смена языка в pfSense

Остальные настройки в данной вкладке мы уже видели в мастере настройки.

Во вкладке Система первой теперь отображается High Availability, которая позволяет настроить зеркальный межсетевой экран.

High Availability в pfsense

Во вкладке Система есть пункт Register, который позволяет перейти от бесплатной версии Community Edition к платной версии plus.

По сути они отличаются только поддержкой.

Далее идёт пункт Маршрутизация раздела Система. И сразу видим страницу с настройками шлюзов.

Настройка шлюзов в pfsense

Тут у нас указан IP адрес DHCP сервера, который раздал по WAN интерфейсу нашему межсетевому экрану настройки сети и сам адрес шлюза.

Далее идет пункт Мастер настройки, который мы уже видели при первой авторизации в веб-интерфейсе.

Теперь вкладка менеджер пакетов, и там доступны пункты Установленные пакеты и Доступные пакеты.

Доступные для установки плагины в pfsense

Из интересного pfBlockerNG, который позволяет управлять списками IP-адресов и подключить блокировку по GeoIP, DNSBL, а также блокировка источников угроз по репутации IP Proofpoint и IQRisk. Установим его.

Установка плагина pfBlockerNG в pfsense

Есть еще Nmap (сетевой сканер), Snort (система обнаружения вторжений), squid (прокси-сервер), squidGuard (url-фильтр к прокси-серверу), suricata (система обнаружения вторжений), Zeek NSM (система анализа трафика на наличие вредоносной активности). Поставлю пожалуй и их.

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

Менеджер пользователей в pfSense

Потом идет вкладка Обновить, которая позволяет проверить наличие обновлений и обновить систему.

С вкладкой Основная настройка мы уже знакомились - она же general setup.

Далее вкладка Расширенные.

Расширенные настройки во вкладке Система

Первый пункт Доступ администратора, и тут можно настроить ВебКонфигуратор, SSH и защиту аутентификации. Тут много интересных настроек, на которые стоит обратить внимание. 

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

Далее в этой же вкладке есть Брандмауэр и NAT.

Настройки системы \ Расширенные \ Брандмауэр и NAT

Кстати тут очень много прям интересных настроек, например, "Удаление неверных DF битов вместо удаления пакетов" - это на самом деле полезная история. Те, кто работает с огромными сетями, сталкивались с такими пакетами, и порой решить проблему крайне сложно, пакет просто блокируется, а тут при помощи простой галочки можно убрать бит DF и фрагментировать.

Дальше идет вкладка Сети.

Система \ Расширенные \ Сети

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

Из интересного - возможность заблокировать весь трафик IPv6. 

Далее пункт Разное, в котором объединены вообще очень разнородные настройки.

Система \ Расширенные \ Разное

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

Системные настройки

Далее идет пункт Уведомления.

Уведомления \ система

Тут можно настроить уведомления по E-Mail, точнее, тут можно указать настройки SMTP сервера для этих уведомлений.

Ух, тут даже можно отправку сообщений в Telegram сделать.

Уведомления через Telegram

Далее очень интересная вкладка Сертификаты. И в первой вкладке отображается пункт Authorities, в котором можно добавить Центр Сертификации.

Authorities в pfsense

Далее пункт Сертификаты.

Сертификаты в pfsense

Сертификат можно скачать, и это главное. Если его установить в список доверенных на машине (в саму систему и отдельно в браузер), то тогда pfSense сможет расшифровывать пакеты и обнаруживать угрозы, фактически работая на уровнях L3 и L7.

Далее идет пункт Отзыв сертификата, но его показывать не вижу смысла.

Интерфейсы

Перейдем к вкладке Интерфейсы, в котором всего три пункта. Первый пункт Назначение, который позволяет назначать интерфейсы, например, в уже настроенный межсетевой экран решили добавить сетевую карту или wi-fi, тогда её нужно добавить тут и в пункте про беспроводные сети.

Назначение интерфейсов

Вообще про добавление wi-fi можно отдельную статью писать, и особенно про проблемы и про танцы с бубном. Теория такая: добавляем во вкладке Беспроводное, а потом в Назначение интерфейсов, и далее мучаемся уже с настройками самого интерфейса. В идеале, не делать wi-fi на МЭ OPNsense или pfSense - проблемы с подключением с телефонов.

Далее идут настройки WAN-интерфейса.

Настройки WAN в pfsense

Потом настройки LAN-интерфейса.

Настройки LAN-интерфейса

Межсетевой экран

Теперь вкладка межсетевой экран, и тут уже отображается установленный плагин pfBlockerNG.

Приветствие в pfBlockerNG

При нажатии на кнопку Next будет запущен Мастер настройки pfBlockerNG. Каждое окно смысла не вижу снимать. После завершения работы мастера настройки pfBlockerNG попытается обновиться.

После обновление можно начать знакомство с плагином с вкладки Общее.

pfBlockerNG вкладка общее

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

GeoIP

Честно говоря, я разочарован, так как ожидал возможность блокировать траффик из конкретных стран, а не Asia или Europe, хотя GeoIP это позволяет делать. От топовых спамеров и списка прокси через GeoIP толку мало.

Еще одна потенциально интересная вкладка - Reputation.

Reputation в pfsense

Она позволяет выявлять рецидивистов - если из одного диапазона в черные списки попало сразу множество IP-адресов, тогда будет заблокирован весь диапазон.

Следующая вкладка заявляет весьма интересную функциональность - DNSBL. Блокировка списка доменов, которые были замечены во вредоносной активности и нежелательной рекламе. Для её работы необходимо, чтобы DNS Resolver из вкладки Сервисы был включен.

Черные списки DNS имен

Вкладка DNSBL Category подтверждает вкусность данного плагина. В ней можно выбрать списки по категориям доменных имен для блокировки.

Категории доменных имен для блокировки

И тогда ниже мы увидим очень вкусные списки блокировки по категориям!

Черные списки доменов по категориям

Однако действительно опасных категорий тут штук 5 - имею в виду мошенничество, фишинг и тому подобное.

Функция безопасного поиска настраивается во вкладке DNSBL SafeSearch. 

Далее идет вкладка Обновить, позволяющая проверить наличие обновления плагина.

Обновление pfBlockerNG

Далее идет вкладка Reports, в которой можно видеть различные отчеты.

Отчеты в pfBlockerNG

Далее идет интереснейший раздел Фиды!

Фиды в pfBloeckerNG

Это черные списки адресов IPv4, адресов IPv6 и доменных имен по категориям. Сказать, что этих списков очень много - ничего не сказать! Их огромное количество, и это очень крутая фича!

Дальше идут вкладки Логи и Sync этого плагина.

Также во вкладке Межсетевой экран есть возможность настройки Алиасов.

Алиасы

После Алиасов идет вкладка Виртуальные IPs.

Виртуальные IPs в pfsense

И далее идет вкладка Правила, в которой можно добавлять правила межсетевого экрана для wan, lan и loopback.

Правила МЭ для LAN-интерфейса

И тут я немного загрустил... Правило для блокировки списков по Фидам работает только для исходящих соединений на интерфейсе LAN. Это конечно правильно, но я по своей наивности думал, что это будет работать и для блокировки любых запросов с подозрительных IP и доменов на внешний интерфейс межсетевого экрана... Скорее всего это можно настроить руками, но все-таки когда ставишь такой продукт, ожидаешь серьезный подход, а не полумеры.

Да, настроить такое же правило в обратную сторону на интерфейсе WAN труда не составит, но я же сравниваю pfSense с OPNsense, на борту которого стоит Zenarmor. Zenarmor из коробки блочит запросы по спискам и на WAN-интерфейс.

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

Потом вкладка NAT (сетевая трансляция адресов).

NAT в pfSense

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

Трафик шейпер в pfSense

Сервисы и VPN

Решил объединить две вкладки в один раздел, но это скорее для моего личного удобства.

Первой вкладкой тут является Captive Portal, который позволяет настроить портал авторизации для абонентов сети.

Портал авторизации в pfSense

Полезная история, но расписывать не хочу, так как статья и так слишком большая.

Далее идут вкладки DHCP Сервер и DHCPv6 Сервер с настройками соответствующего сервиса на межсетевом экране.

Далее идет DNS Resolver и DNS форвардер. Первый по умолчанию включен и используется в качестве DNS-сервера на межсетевом экране.

Потом вкладки IGMP Прокси и NTP (сервер синхронизации времени) с соответствующими настройками.

Затем вкладка SNMP, позволяющая настроить соответствующую службу. Стоит отметить, что это только служба, а не сервер.

Теперь начинается самое интересное - вкладка Snort. Snort - это система обнаружения и противодействия вторжениям, которая в pfSense устанавливается в виде плагина, то есть, по умолчанию не установлена.

IDS/IPS Snort в pfSense

И тут первым делом нужно произвести обновление правил Snort через вкладку Обновления! Это нужно для получения перечня доступных списков правил.

Обновление правил Snort

Далее во вкладке Global Settings необходимо выбрать списки правил и после этого опять произвести обновление правил для уже непосредственно скачивания выбранных списков правил.

Глобальные списки правил для Snort

Большинство списков для Snort из России получить не получится, поэтому лично я сделал выбор в пользу Suricata.

И только после обновления нужно опять открыть настройки WAN из вкладки Snort Interfaces, и в WAN Categories выбрать категории правил для применения на этом интерфейсе и по идее всё, правила должны работать.

У обоих систем обнаружения вторжений фактически одинаковый интерфейс, и подход к перехвату и блокировке пакетов тоже. В настройках интерфейса можно найти блок Block Settings, в которой необходимо включить галочку Block Offenders и после станет доступен пункт IPS Mode. 

В пункте IPS Mode всего два вариант - Inline mode и Legacy mode.

Legacy это устаревший способ перехвата, при котором создается копия пакета и именно она анализируется.

Inline анализирует реальный пакет.

При inline mode нет возможности выставить централизованно для всех правил блокировку, а их может быть десятки тысяч, поэтому для блокировки нужно менять действие для каждого отдельного правила.

При режиме Legacy пакет должен блокироваться, даже если у правила стоит действие Alert.

Далее вкладка Suricata - еще одна система обнаружения и противодействия вторжениям.

IPS Suricata в pfSense

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

Чем приятен pfSense, так это тем, что Suricata и Snort имеют абсолютно одинаковый интерфейс настройки! Всё то же самое, те же вкладки и та же последовательность действий!

Теперь Squid - proxy-сервер. После установки дополнительных плагинов аж три вкладки посвящено ему.

Squid в pfSense

Тут есть и проверка SSL трафика, и настройки центра сертификации, и некоторые интересные настройки http заголовков, и это только на первой вкладке.

Отдельно хочу выделить вкладку Antivirus.

Антивирус ClamAV в SQUID

Конечно же тут доступен только ClamAV. И сразу хочу отметить, что с настройками по умолчанию из России обновляться базы антивируса не будут. Тут конечно есть пункт "Regional ClamAV Database Update Mirror", в котором можно выбрать Russia, но он не помогает.

Однако, тут можно указать свой сервер обновлений при помощи пункта "Optional ClamAV Database Update Servers". Достаточно набрать в поиске "Зеркало обновлений ClamAV" и его укажите в этот пункт без указания протокола, то есть без https.

В целом, даже не переходя к плагинам, тут больше настроек прокси сервера, чем в OPNsense.

Есть возможность настроить Reverse Proxy Server через соответствующую вкладку после установки плагина для squid.

Еще один интересный плагин для Squid - это Proxy filter SquidGuard.

Proxy filter SquidGuard

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

Далее идут вкладки UPnP & NAT-PMP и Автоматическая конфигурация резервного копирования.

Далее идет вкладка Zeek NSM.

Zeek NSM в pfSense

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

Потом идет затёртая до дыр функциональность Динамический DNS, которая сейчас есть в каждой микроволновке (фигурально выражаясь).

Далее идет вкладка Пробуждение по сигналу из Локальной сети, которая позволяет будить компьютеры по сети.

Wake on Lan для компьютеров в pfSense

Далее идет вкладка Сервер PPPoE, которая позволяет настроить свой PPPoE сервер .

Сервер PPPoE

Далее идут вкладки Трансляция DHCP и Трансляция DHCPv6 для настройки DHCP-ретрансляции.

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

Первая вкладка IPsec.

IPsec в pfSense

Далее вкладка L2TP.

L2TP в pfsense

Далее вкладка OpenVPN.

OpenVPN в pfsense

Есть еще вкладки Статус и Диагностика, но их описывать нет смысла. Что там, и так понятно.

Вывод

В целом, когда используешь pfSense не в боевом режиме, а на виртуалке, он оставляет очень сильное впечатление! И всё в нем выглядит как очень качественный продукт. Значительно больше галочек в тех же программных продуктах, которые есть и в OPNsense. Если не настраивать в боевую эти продукты и не тестировать их работу, а просто поставить галочку Enable и еще пару настроек тыкнуть, то выглядит это невероятно мощно. Однако при попытке использовать в боевую ситуация - не такая красивая.

Некоторые функции работают из коробки, но когда ты хочешь их изменить, например, изменить диапазон адресов ipv4, то он начинает ругаться на ipv6, мол, там надо поменять опцию или указать значение. Вопрос, как это работало до попытки изменить значение вообще другого не связанного с этим поля? Хорошо, пытаешься отключить и фиг тебе, для отключения нужно сначала изменить настройки маршрутизации. Замкнутый круг. И так множество модулей в pfSense - с виду красиво, удобно и качественно, а уже когда настраиваешь в боевую, начинаешь понимать, что в OPNsense этот функционал работал лучше, хотя и не выглядил так красочно и качественно.

У pfSense и OPNsense оказывается проблемы с Wi-Fi сетями. Речь о настройке своей точки доступа. Лично столкнулся с тем, что разные ноутбуки без проблем подключались к беспроводной сети при использовании wep, wpa, wpa2, freeradius, но телефоны при этих же настройках не подключаются, ругаясь на неправильный пароль. При этом, если сделать открытую сеть, то телефоны начинают подключаться без проблем. Начал читать и спрашивать на официальных форумах, оказывается, у обоих межсетевых экранов проблемы с wi-fi.

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

Часто сталкиваюсь, что pfSense при установке не может почему-то получить сетевые настройки по dhcp для WAN-интерфейса. Один раз дошло до смешного, решил перезагрузить межсетевой экран и только после этого понял, что пропал интернет. Оказывается отказал WAN - не хочет получать сетевые настройки по DHCP. В этих случаях оказалось проще установить межсетевой экран заново. OPNsense без проблем определяет где wan и где lan при установке, а вот pfSense тут постоянно косячит. Если вы установили pfSense и у вас WAN не получил настройки по DHCP - поменяйте местами провода и установите заново. Можно конечно попробовать решить проблему при помощи Assign Interfaces, но мне это ни в одном из случаев не помогло.

Из больших плюсов в pfSense однозначно можно выделить IPS/IDS Snort и Suricata - настраиваются они значительно проще, а учитывая, что в OPNsense еще нужно создать политику и все списки там протыкать (про настройку IPS в OPNsense писал тут), то это очень серьезное преимущество. Если межсетевой экран используется в России, тогда лучше выбирать Suricata, так как большая часть правил для Snort не получится скачать.

Также большим преимуществом в pfSense является pfBlockerNG, а именно фиды! Они позволяют получить списки IP-адресов и доменов по категориям. Там конечно нужно правила сетевого экрана подкрутить (для блокировок в обе стороны, по умолчанию только исходящий трафик блокируется), но по факту это очень мощно. Подобное есть в Zenarmor из OPNsense (про Zenarmor в OPNsense писал тут), там категорий меньше, но там и в целом всё нацелено на большую простоту для пользователя.

Если вам хватает опыта, чтобы разобрать вектор атаки, тогда pfSense идеально для вас подходит! Однако, если вам нужно что-то более простое, но при этом не менее эффективное, тогда смело выбирайте OPNsense с Zenarmor на борту.

Алексей Черемных
385