Детальный обзор pfSense Community Edition: установка, тонкости настройки и сравнение с OPNsense
pfSense Community Edition представляет собой мощный свободный межсетевой экран корпоративного уровня. В этом обзоре мы детально рассмотрим установку pfSense Community Edition, настройку основных функций, установку плагинов pfBlockerNG, Suricata и Snort, а также проведем сравнение с главным конкурентом — OPNsense.
Пришло время подробно рассмотреть свободный сетевой экран pfSense Community Edition. Именно эта платформа послужила фундаментом для создания OPNsense еще в 2015 году.
На сегодняшний день ассортимент действительно свободных файрволов весьма ограничен, и pfSense, пожалуй, остается единственным достойным конкурентом OPNsense с установленным Zenarmor. Важно четко разделять понятия «свободное» и «бесплатное» ПО. Свободное программное обеспечение гарантирует пользователю право на использование, модификацию и даже применение в коммерческих целях. Бесплатные же решения часто имеют строгие лицензионные ограничения, прямо запрещающие использование для извлечения прибыли.
pfSense распространяется под лицензией Apache 2.0, тогда как OPNsense использует лицензию BSD.
Загружать дистрибутив рекомендуется исключительно с официального ресурса разработчика. Однако, если по каким-либо причинам это невозможно, вы можете воспользоваться этой ссылкой на образ версии 2.7.2 (amd64 iso).
Установка pfSense Community Edition
В процессе установки системы используйте стандартные учетные данные: логин installer и пароль pfsense.
Если WAN-порт не получит IP-адрес автоматически через DHCP, первым делом попробуйте переназначить интерфейсы через меню Assign Interfaces. Система запросит указать, какой физический порт будет выступать в роли WAN, а какой — LAN. Стоит отметить, что я неоднократно сталкивался с ситуацией, когда WAN не получал настройки DHCP, и проблема решалась лишь полной переустановкой системы с предварительной физической заменой патч-кордов между портами сетевых карт. Причины такого поведения неясны, но этот баг встречается в pfSense на различном оборудовании и в разных сетевых окружениях.
Далее система предложит выбрать протокол для веб-интерфейса: HTTP или HTTPS. В зависимости от вашего выбора, доступ к панели управления будет осуществляться по адресу http://АДРЕС_МЭ или https://АДРЕС_МЭ.
Для первоначального входа в веб-консоль используйте логин admin и пароль pfsense.
После успешной авторизации запустится мастер первоначальной настройки.
Этот визард практически идентичен тому, что присутствует в OPNsense, и не содержит сложных вопросов, так что с ним легко справится даже начинающий системный администратор.
На шестом шаге мастер попросит сменить пароль администратора по умолчанию.
По завершении работы визарда появится всплывающее окно с лицензионным соглашением. Поскольку кнопки «Отказаться» не предусмотрено, остается только принять условия использования.
После этого перед вами откроется главная панель управления — дашборд.
Раздел «Система»
В меню System -> General setup можно изменить язык веб-интерфейса на русский.
Остальные параметры в этой вкладке нам уже знакомы по мастеру первоначальной настройки.
В самом верху раздела «Система» теперь находится пункт High Availability, предназначенный для конфигурации отказоустойчивого (зеркального) межсетевого экрана.
Также присутствует раздел Register, предлагающий перейти с бесплатной редакции Community Edition на коммерческую версию Plus. Основное различие между ними заключается лишь в наличии официальной технической поддержки.
Следующий пункт — Маршрутизация (Routing), где сразу открывается страница конфигурации шлюзов.
Здесь отображается IP-адрес DHCP-сервера, который выдал настройки сети нашему файрволу через WAN-интерфейс, а также адрес самого шлюза по умолчанию.
Далее следует пункт Мастер настройки, который мы уже проходили при первом входе.
Затем идет Менеджер пакетов с подразделами Установленные пакеты и Доступные пакеты.
Среди доступных расширений выделяется pfBlockerNG, позволяющий управлять списками IP-адресов, настраивать блокировку по GeoIP и DNSBL, а также фильтровать источники угроз на основе репутации IP (Proofpoint и IQRisk). Установим его.
Также в репозитории присутствуют: Nmap (сканер сети), Snort (IDS/IPS), squid (прокси-сервер), squidGuard (фильтр URL для прокси), suricata (система обнаружения вторжений) и Zeek NSM (анализатор трафика на предмет аномалий). Я рекомендую установить и их.
Далее расположен Менеджер пользователей для создания учетных записей администраторов файрвола.
Вкладка Обновить отвечает за проверку и установку актуальных версий системы.
С вкладкой Основная настройка (General setup) мы уже знакомы.
Следующая — Расширенные настройки.
Первый подраздел — Доступ администратора, где конфигурируются Веб-конфигуратор, SSH и параметры защиты аутентификации. Здесь скрывается множество полезных опций, на которые стоит обратить внимание.
Детально описывать каждый подраздел не имеет смысла, иначе материал превратится в нечитаемый фолиант. Каждой вкладке можно посвятить отдельную публикацию.
В этом же разделе находятся настройки Брандмауэр и NAT.
Здесь есть крайне полезная опция: «Удаление неверных DF-битов вместо удаления пакетов». Администраторы крупных сетей хорошо знакомы с проблемами таких пакетов: обычно они просто отбрасываются, что затрудняет диагностику. Эта галочка позволяет автоматически сбрасывать DF-бит и фрагментировать пакет, элегантно решая проблему.
Далее идет вкладка Сети.
Сразу бросается в глаза возможность выбора демона, отвечающего за работу DHCP на файрволе.
Из интересных опций — возможность полного блокирования всего трафика IPv6.
Следующий пункт — Разное, объединяющий разнородные параметры конфигурации.
В разделе Системные настройки (System Tunables) скрываются глубокие параметры ядра. Заходить сюда рекомендуется только при полной уверенности в своих действиях.
Далее следует раздел Уведомления.
Здесь настраивается отправка алертов по E-Mail (требуется указать параметры SMTP-сервера).
Отдельного внимания заслуживает возможность отправки уведомлений прямо в Telegram.
Далее идет важный раздел Сертификаты. Первая вкладка Центры сертификации (Authorities) позволяет добавить собственный CA.
Следующая вкладка — Сертификаты.
Ключевой момент: сертификат можно экспортировать. Если добавить его в доверенные на клиентской машине (в ОС и браузер), pfSense получит возможность расшифровывать SSL/TLS-трафик и выявлять угрозы на уровнях L3 и L7.
Пункт Отзыв сертификата рассматривать не будем, он интуитивно понятен.
Управление интерфейсами
В разделе Интерфейсы всего три подраздела. Первый — Назначение, позволяющий добавить новые сетевые карты или Wi-Fi адаптеры в уже работающую систему.
Настройка Wi-Fi на файрволах (как OPNsense, так и pfSense) заслуживает отдельной статьи из-за множества нюансов. Общая схема такова: добавляем адаптер во вкладке Беспроводные сети, затем назначаем его в Назначении интерфейсов, после чего начинается кропотливая настройка самого интерфейса. Совет: по возможности избегайте использования Wi-Fi на межсетевых экранах, так как часто возникают проблемы с подключением мобильных устройств.
Далее следуют параметры WAN-интерфейса.
И настройки LAN-интерфейса.
Межсетевой экран в pfSense Community Edition
В этом разделе сразу отображается установленный ранее плагин pfBlockerNG.
Нажатие кнопки Next запустит мастер настройки pfBlockerNG. Детально снимать каждый шаг не имеет смысла. После завершения визарда плагин попытается обновить базы.
После обновления знакомство с модулем можно начать с вкладки Общее.
И вот она, долгожданная функция GeoIP! Как видно на скриншоте, для её работы требуется лицензионный ключ. Ситуация неоднозначная: я предполагал, что ключ можно получить бесплатно после регистрации, но у меня это не сработало.
Честно говоря, это разочаровывает. Ожидалась возможность гибкой блокировки трафика из конкретных стран, а не целых континентов (Asia или Europe), хотя технически GeoIP это позволяет. Толку от блокировки топ-спамеров или прокси через GeoIP мало, а поскольку любой пункт GeoIP требует ключ, от этой идеи лучше отказаться.
Еще одна перспективная вкладка — Reputation.
Она помогает выявлять рецидивистов: если из одной подсети в черные списки попадает множество IP-адресов, блокируется весь диапазон целиком.
Следующая вкладка предлагает мощную функциональность — DNSBL. Это блокировка доменов, замеченных в распространении вредоносного ПО или нежелательной рекламы. Для её корректной работы необходимо, чтобы в разделе Сервисы был активирован DNS Resolver.
Вкладка DNSBL Category подтверждает полезность этого плагина. Здесь можно выбрать готовые списки доменных имен для блокировки по категориям.
Ниже откроется доступ к действительно «вкусным» спискам блокировки по тематикам.
Однако по-настоящему опасных категорий здесь около пяти (мошенничество, фишинг и т.д.).
Функция безопасного поиска (SafeSearch) настраивается в одноименной вкладке DNSBL SafeSearch.
Далее идет вкладка Обновить для проверки актуальности версий плагина.
Вкладка Reports предоставляет различные статистические отчеты.
Затем следует один из самых интересных разделов — Фиды (Feeds)!
Это черные списки IPv4, IPv6 и доменных имен, разбитые по категориям. Их количество просто огромно, и это невероятно крутая возможность!
Здесь собраны списки трекеров, рекламы, фишинговых ресурсов, источников вирусов и спама. Это мощнейший компонент, способный затмить многие функции платных коммерческих решений.
Важное предупреждение: не включайте все списки сразу, так как они могут дублироваться, и 4 ГБ оперативной памяти может не хватить. Также внимательно следите за вкладками Alert и Block, поскольку некоторые фиды могут вызывать ошибки парсинга.
Завершают плагин вкладки Логи и Sync.
Также в разделе Межсетевой экран доступна настройка Алиасов.
После алиасов идет раздел Виртуальные IP-адреса (Virtual IPs).
И, наконец, вкладка Правила, где создаются правила файрвола для интерфейсов WAN, LAN и Loopback.
Здесь я немного расстроился. Правило для блокировки трафика по фидам pfBlockerNG по умолчанию работает только для исходящих соединений на интерфейсе LAN. Это логично, но я наивно полагал, что система будет блокировать любые запросы с подозрительных IP и доменов, направленные на внешний интерфейс файрвола. Вероятно, это можно настроить вручную, но от такого продукта ожидаешь более продуманного подхода «из коробки», а не полумер.
Конечно, создать зеркальное правило для интерфейса WAN несложно, но я сравниваю pfSense с OPNsense, где Zenarmor блокирует запросы по спискам на WAN-интерфейсе автоматически.
Далее следует вкладка Расписание, позволяющая активировать правила по времени или передавать управление сторонним плагинам (хотя специализированных плагинов для pfSense я не нашел).
Затем идет раздел NAT (трансляция сетевых адресов).
Завершает раздел Трафик шейпер, позволяющий ограничивать скорость канала на конкретном интерфейсе или для отдельного IP через механизм Лимитеров.
Сервисы и VPN
Для удобства я объединил эти два раздела.
Первой идет вкладка Captive Portal, позволяющая организовать портал авторизации для пользователей сети.
Функция полезная, но детально расписывать её не будем, чтобы не раздувать объем статьи.
Далее следуют DHCP Сервер и DHCPv6 Сервер для настройки соответствующих служб.
Затем идут DNS Resolver и DNS Форвардер. Первый включен по умолчанию и выступает в роли основного DNS-сервера на файрволе.
После них расположены IGMP Прокси и NTP (сервер синхронизации времени).
Далее следует вкладка SNMP. Обратите внимание: здесь настраивается только агент SNMP, а не полноценный сервер.
Теперь самое интересное — вкладка Snort. Это система обнаружения и предотвращения вторжений (IDS/IPS), которая устанавливается как плагин и отсутствует в системе по умолчанию.
Первым делом необходимо обновить правила Snort через вкладку Обновления, чтобы получить актуальный перечень доступных наборов правил.
Затем во вкладке Global Settings нужно выбрать необходимые наборы правил и снова запустить обновление для их непосредственной загрузки.
Большинство списков правил для Snort из России загрузить не получится, поэтому я сделал выбор в пользу Suricata.
Только после обновления следует открыть настройки WAN во вкладке Snort Interfaces, выбрать категории правил для применения на этом интерфейсе (WAN Categories), и система начнет работать.
Обе системы обнаружения вторжений имеют практически идентичный интерфейс и подход к перехвату пакетов. В настройках интерфейса есть блок Block Settings, где необходимо активировать галочку Block Offenders, после чего станет доступен выбор режима IPS Mode.
В IPS Mode есть два варианта: Inline mode и Legacy mode.
- Legacy — устаревший метод, при котором создается копия пакета для анализа.
- Inline — анализирует непосредственно оригинальный пакет.
В режиме Inline невозможно централизованно задать блокировку для всех правил (а их могут быть десятки тысяч), поэтому действие нужно менять для каждого правила отдельно.
В режиме Legacy пакет должен блокироваться, даже если в правиле указано действие Alert, но для этого требуется установить галочку «Block On DROP Only».
Далее идет вкладка Suricata — еще одна система IDS/IPS.
Я настоятельно рекомендую использовать именно Suricata, так как правила для неё загружаются без проблем, их много, и они демонстрируют высокую эффективность.
Приятная особенность pfSense в том, что интерфейсы настройки Suricata и Snort абсолютно идентичны! Те же вкладки, та же последовательность действий. Единственное отличие — для Suricata доступно больше правил. Например, существуют общедоступные правила от Positive Technologies (ссылка). Да, они не обновлялись пару лет, но их эффективность неоспорима. Добавить их можно через глобальные настройки, отметив галочкой «Download Extra Rules» и указав в поле «Extra rules» прямую ссылку на raw-версию файла pt.rules.tar.gz (скопируйте ссылку, нажав правой кнопкой мыши на кнопку raw).
Теперь рассмотрим Squid — прокси-сервер. После установки соответствующих плагинов ему посвящено сразу три вкладки.
Здесь присутствует проверка SSL-трафика, настройки центра сертификации, модификация HTTP-заголовков и многое другое уже на первой вкладке.
Отдельно выделю вкладку Антивирус.
Разумеется, здесь используется только ClamAV. Сразу предупрежу: с настройками по умолчанию обновление баз антивируса из России работать не будет. Пункт «Regional ClamAV Database Update Mirror» с выбором Russia не помогает.
Однако проблему можно решить, указав свой сервер обновлений в поле «Optional ClamAV Database Update Servers». Достаточно найти в поиске «Зеркало обновлений ClamAV» и указать его адрес в это поле без указания протокола (то есть без https://).
В целом, даже без учета дополнительных плагинов, здесь настроек прокси-сервера значительно больше, чем в OPNsense.
После установки плагина для Squid появляется возможность настроить Reverse Proxy Server.
Еще одно полезное расширение — Proxy filter SquidGuard.
Этот плагин предназначен для фильтрации запросов к нежелательным сайтам. Звучит впечатляюще, и описание функционала мощное, но «из коробки» здесь пусто: все списки нужно искать и добавлять вручную. Без опыта в области информационной безопасности и пентеста настроить это должным образом крайне сложно.
Далее следуют вкладки UPnP & NAT-PMP и Автоматическая конфигурация резервного копирования.
Затем идет раздел Zeek NSM.
Это система анализа сетевого трафика (NSM), выявляющая вредоносную активность. Механизм определения не описан подробно, но, судя по всему, система просто генерирует уведомления при обнаружении подозрительных событий.
Далее идет хорошо всем знакомая функция Динамический DNS (Dynamic DNS), которая сейчас есть практически в любом сетевом устройстве.
Следующая вкладка — Пробуждение по сигналу из локальной сети (Wake on LAN), позволяющая удаленно включать компьютеры.
Затем идет Сервер PPPoE для организации собственной точки доступа PPPoE.
Завершают раздел вкладки Трансляция DHCP и Трансляция DHCPv6 для настройки ретрансляции DHCP-запросов.
В разделе VPN всего три вкладки, все они служат для организации удаленного доступа к внутренней сети (например, для подключения из дома к офису).
Первая вкладка — IPsec.
Вторая — L2TP.
Третья — OpenVPN.
Разделы Статус и Диагностика описывать не имеет смысла, их назначение интуитивно понятно любому системному администратору.
Выводы по pfSense Community Edition
В целом, при использовании pfSense в тестовой среде (например, на виртуальной машине), он производит очень сильное впечатление. Все выглядит как качественный, проработанный продукт. Здесь значительно больше опций и галочек по сравнению с аналогичными функциями в OPNsense. Если не тестировать работу в реальных условиях, а просто активировать функцию и нажать пару кнопок, система выглядит невероятно мощно.
Однако при попытке внедрения в «боевую» эксплуатацию картина меняется.
Некоторые функции работают «из коробки», но при попытке их модификации (например, изменении диапазона адресов IPv4) система начинает выдавать ошибки, связанные с IPv6, требуя сначала изменить опции там. Возникает вопрос: как это вообще работало до попытки правки несвязанного поля? При попытке отключить функцию возникает замкнутый круг: для отключения требуется сначала изменить настройки маршрутизации. Подобные логические тупики встречаются во многих модулях pfSense. Со стороны все выглядит красиво и удобно, но на практике начинаешь понимать, что в OPNsense этот же функционал работает стабильнее, пусть и не так эффектно оформлен.
У обоих решений (pfSense и OPNsense) наблюдаются проблемы с Wi-Fi сетями, а именно с настройкой собственной точки доступа. Лично я столкнулся с тем, что ноутбуки без проблем подключались по WEP, WPA, WPA2 или FreeRADIUS, но смартфоны при тех же настройках отказывались подключаться, выдавая ошибку неверного пароля. При этом в открытой сети телефоны подключались мгновенно. Изучение официальных форумов подтвердило: это известная проблема обоих межсетевых экранов.
Еще один минус pfSense — неполный русский перевод. Системные сообщения об ошибках остаются на английском языке. Более того, в этих сообщениях часто упоминаются пути к другим компонентам, которые тоже нужно искать в англоязычном интерфейсе. Идентифицировать нужный компонент или галочку, которую просят отключить, бывает крайне сложно.
Также я часто сталкиваюсь с тем, что при установке pfSense не может получить сетевые настройки по DHCP для WAN-интерфейса. Однажды ситуация дошла до абсурда: после перезагрузки файрвола пропал интернет, потому что WAN-порт наотрез отказался получать настройки по DHCP. В таких случаях проще всего переустановить систему. OPNsense без проблем определяет WAN и LAN при инсталляции, а pfSense в этом плане постоянно сбоит. Если после установки pfSense WAN не получил DHCP-адрес, попробуйте поменять патч-корды местами и установить систему заново. Использование пункта Assign Interfaces в моем опыте ни разу не помогло.
Из неоспоримых плюсов pfSense однозначно выделяются IPS/IDS Snort и Suricata. Они настраиваются значительно проще. Учитывая, что в OPNsense для этого требуется создавать политики и вручную прокликивать все списки (о чем я писал тут), это серьезное преимущество. Для использования в России лучше выбирать Suricata, так как загрузка большинства правил для Snort будет заблокирована.
Также огромным преимуществом pfSense является pfBlockerNG, а точнее — его фиды. Они предоставляют обширные списки IP-адресов и доменов по категориям. Да, правила файрвола придется немного доработать вручную (для блокировки трафика в обе стороны, так как по умолчанию блокируется только исходящий), но по факту это невероятно мощный инструмент. Нечто подобное есть в Zenarmor для OPNsense (о котором я писал тут), но там категорий меньше, хотя сам продукт ориентирован на максимальную простоту для конечного пользователя.
Резюме: Если у вас достаточно опыта, чтобы самостоятельно анализировать векторы атак и настраивать сложные правила, pfSense станет для вас идеальным выбором. Однако, если вам нужно более простое в управлении, но при этом не менее эффективное решение, смело выбирайте OPNsense с установленным Zenarmor.