pfBlockerNG в pfSense - блокировка IP и DNS

pfBlockerNG - пакет для pfSense, обеспечивающий комплексную фильтрацию сетевого трафика на основе репутационных списков IP-адресов и доменных имён. Пакет объединяет две ключевые функции: блокировку IP-адресов из списков угроз (включая GeoIP-фильтрацию по странам) и DNSBL (DNS Blackhole List) - перехват DNS-запросов к вредоносным, рекламным и нежелательным доменам. В отличие от IDS/IPS, который анализирует содержимое трафика, pfBlockerNG работает на уровне IP-адресов и DNS-запросов, обеспечивая первый уровень защиты с минимальным влиянием на производительность.

pfBlockerNG интегрируется с файрволом pfSense через создание автоматических алиасов и правил, которые блокируют или разрешают трафик на основе регулярно обновляемых списков из внешних источников.

Установка pfBlockerNG

Установка выполняется через менеджер пакетов:

  1. Перейти в System > Package Manager > Available Packages
  2. Найти pfBlockerNG-devel в строке поиска (рекомендуется версия -devel как активно развиваемая)
  3. Нажать Install и подтвердить установку
  4. Дождаться завершения установки

После установки конфигурация доступна через Firewall > pfBlockerNG.

Внимание:

Версия pfBlockerNG-devel является рекомендуемой разработчиком для использования в рабочих средах, несмотря на название. Базовая версия pfBlockerNG больше не поддерживается активно.

Системные требования

ПараметрМинимумРекомендуется
RAM1 ГБ2 ГБ и более
Диск5 ГБ свободного пространства10 ГБ
DNS ResolverUnbound (обязательно для DNSBL)Unbound в режиме Resolver

DNSBL требует использования Unbound DNS Resolver в качестве основного DNS-сервиса pfSense. При использовании DNS Forwarder (dnsmasq) функция DNSBL недоступна.

Первоначальная настройка

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

Общие параметры

Настройка выполняется на вкладке General (Firewall > pfBlockerNG > General).

ПараметрОписаниеРекомендация
Enable pfBlockerNGАктивация пакетаВключить
Keep SettingsСохранение настроек при переустановкеВключить
CRON SettingsРасписание обновления списковEvery hour или Every 6 hours
Global LoggingВедение журнала событийВключить
MaxMind License KeyКлюч для загрузки базы GeoIPТребуется для GeoIP

Получение ключа MaxMind

Для использования GeoIP-блокировки необходимо получить бесплатный ключ лицензии MaxMind:

  1. Зарегистрировать аккаунт на maxmind.com
  2. В личном кабинете создать License Key
  3. Скопировать ключ в поле MaxMind License Key в настройках pfBlockerNG
  4. Выполнить обновление через Update для загрузки базы GeoIP

Блокировка IP-адресов

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

Настройка IP-блокировки

Конфигурация выполняется на вкладке IP (Firewall > pfBlockerNG > IP).

Группы IPv4 и IPv6

Для каждого списка создаётся группа с индивидуальными параметрами:

ПараметрОписание
Alias NameИмя алиаса (используется в правилах файрвола)
List ActionДействие при совпадении
Update FrequencyЧастота обновления списка
SourceURL-адрес списка и его формат
Header/LabelОписание списка

Действия при совпадении

ДействиеОписание
Deny BothБлокировка трафика в обоих направлениях
Deny InboundБлокировка только входящего трафика от адресов из списка
Deny OutboundБлокировка только исходящего трафика к адресам из списка
Permit InboundРазрешение входящего трафика (белый список)
Permit OutboundРазрешение исходящего трафика (белый список)
Alias OnlyСоздание алиаса без автоматического правила

Для большинства списков угроз рекомендуется действие Deny Both для полной блокировки взаимодействия с вредоносными адресами.

Популярные источники IP-списков

ИсточникОписаниеURL
Spamhaus DROPАдреса, захваченные для спама и атакhttps://www.spamhaus.org/drop/drop.txt
Spamhaus EDROPРасширенный список Spamhaushttps://www.spamhaus.org/drop/edrop.txt
DShieldТоп-20 атакующих IP за последние суткиhttps://feeds.dshield.org/block.txt
Feodo TrackerIP-адреса C2-серверов банковских трояновhttps://feodotracker.abuse.ch/downloads/ipblocklist.txt
Emerging ThreatsIP-адреса активных угрозhttps://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt
CINS ArmyРаспределённый список атакующихhttps://cinsscore.com/list/ci-badguys.txt
Abuse.ch SSLBLIP-адреса вредоносных SSL-серверовhttps://sslbl.abuse.ch/blacklist/sslipblacklist.txt

GeoIP-блокировка

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

Настройка GeoIP выполняется на вкладке IP в разделе GeoIP:

  1. Убедиться, что ключ MaxMind введён в общих настройках
  2. Перейти на вкладку IP > GeoIP
  3. Выбрать континенты или страны для блокировки
  4. Установить действие (Deny Inbound, Deny Both и т.д.)
  5. Сохранить и выполнить обновление

Стратегии GeoIP-фильтрации

СтратегияОписаниеПрименение
Блокировка по странамЗапрет трафика из выбранных странСерверы с аудиторией из определённого региона
Разрешение по странамРазрешение трафика только из выбранных стран, остальные блокируютсяЛокальные сервисы без международного доступа
Только входящийБлокировка входящих соединений из стран, исходящий разрешёнСтандартная защита без ограничения исходящего доступа

Внимание:

GeoIP-базы не обеспечивают абсолютную точность определения местоположения. Некоторые IP-адреса (VPN, CDN, облачные провайдеры) могут быть привязаны к неверной стране. Тестируйте GeoIP-правила перед развёртыванием в рабочей среде.

DNSBL - блокировка DNS-запросов

DNSBL (DNS Blackhole List) - механизм блокировки доступа к нежелательным доменам через перехват DNS-запросов. Когда клиент запрашивает разрешение заблокированного домена, pfBlockerNG возвращает фиктивный IP-адрес (обычно 10.10.10.1) вместо реального адреса сервера. Это предотвращает подключение к вредоносным, рекламным и трекинговым ресурсам на уровне DNS.

Принцип работы DNSBL

Клиент                 Unbound DNS              pfBlockerNG
   |                      |                         |
   |-- DNS-запрос ------->|                         |
   |   malware.example.com|                         |
   |                      |-- Проверка DNSBL ------>|
   |                      |                         |
   |                      |<-- Домен в чёрном ------|
   |                      |   списке: 10.10.10.1    |
   |                      |                         |
   |<-- Ответ: 10.10.10.1|                         |
   |                      |                         |
   |-- Соединение к 10.10.10.1 (виртуальный IP pfBlockerNG)
   |-- Получает страницу блокировки или RST

Настройка DNSBL

Конфигурация выполняется на вкладке DNSBL (Firewall > pfBlockerNG > DNSBL).

Основные параметры

ПараметрОписаниеРекомендация
Enable DNSBLАктивация DNS-фильтрацииВключить
DNSBL Virtual IPВиртуальный IP для заблокированных доменов10.10.10.1 (по умолчанию)
DNSBL Listening PortПорт веб-сервера страницы блокировки8081 (по умолчанию)
DNSBL SSL Listening PortПорт HTTPS для страницы блокировки8443
DNSBL WhitelistДомены, исключённые из блокировкиПо необходимости
TLD ExclusionИсключение доменов верхнего уровняПо необходимости

DNSBL-группы

Для каждого списка блокировки создаётся группа с настройками:

ПараметрОписание
Group NameИмя группы списков
DNSBL SourcesURL-адреса списков доменов
List ActionДействие: Unbound (рекомендуется)
Update FrequencyЧастота обновления
Header/LabelОписание источника

Популярные DNSBL-источники

Блокировка рекламы и трекеров

ИсточникОписание
EasyListОсновной список блокировки рекламы (Adblock Plus)
EasyPrivacyБлокировка трекинговых скриптов и пикселей
AdGuard DNSФильтры рекламы от AdGuard
Peter Lowe’s Ad ListКомпактный список рекламных и трекинговых доменов
Steven Black’s HostsОбъединённый список вредоносных и рекламных доменов

Блокировка вредоносных доменов

ИсточникОписание
Abuse.ch URLhausДомены, распространяющие вредоносное ПО
Malware Domain ListДомены, связанные с вредоносным ПО
Phishing ArmyФишинговые домены
SANS ISC SuspiciousПодозрительные домены из SANS Internet Storm Center
Disconnect MalwareДомены вредоносного ПО от Disconnect

Блокировка телеметрии

ИсточникОписание
Windows TelemetryДомены телеметрии Microsoft Windows
Smart TV TrackingДомены отслеживания Smart TV

Страница блокировки DNSBL

При обращении к заблокированному домену пользователь видит страницу блокировки pfBlockerNG. Страница отображает:

  • Заблокированный домен
  • Группу DNSBL, содержащую домен
  • Время блокировки
  • Кнопку для добавления домена в белый список (при наличии прав)

Настройка внешнего вида страницы блокировки выполняется на вкладке DNSBL > DNSBL Customization.

Белые списки

Белые списки (whitelists) позволяют исключить определённые IP-адреса или домены из блокировки.

Белый список IP-адресов

Для исключения IP-адресов из блокировки используется группа с действием Permit Inbound или Permit Outbound на вкладке IP. Адреса из разрешающих групп имеют приоритет над блокирующими.

Белый список DNSBL

Белый список доменов настраивается в нескольких местах:

МетодРасположениеОписание
DNSBL WhitelistDNSBL > DNSBL ConfigurationГлобальный белый список доменов
Custom WhitelistDNSBL > DNSBL GroupsБелый список для конкретной группы
TLD WhitelistDNSBL > DNSBL TLDИсключение доменов верхнего уровня
Wildcard WhitelistDNSBL > DNSBL WhitelistПоддерживает маски *.domain.com

Формат записей белого списка

# Точное совпадение домена
example.com

# Домен и все поддомены
.example.com

# Комментарий с описанием
example.com # Корпоративный портал

Рекомендации по белым спискам

При первоначальном развёртывании pfBlockerNG рекомендуется:

  1. Включить DNSBL с минимальным набором списков
  2. Мониторить журнал блокировок в течение нескольких дней
  3. Добавить в белый список домены, необходимые для работы бизнес-приложений
  4. Постепенно расширять количество активных списков

Типичные домены для белого списка:

  • Домены корпоративных сервисов (Microsoft 365, Google Workspace)
  • CDN-провайдеры (Akamai, CloudFront, Cloudflare)
  • Сервисы обновлений операционных систем
  • Платёжные системы и банковские сервисы

Пользовательские списки

pfBlockerNG поддерживает создание пользовательских списков IP-адресов и доменов для адаптации фильтрации под конкретные потребности.

Пользовательские IP-списки

На вкладке IP нажать Add и заполнить:

  1. Alias Name - имя списка
  2. List Action - действие (Deny/Permit)
  3. Source - выбрать Custom и ввести IP-адреса или подсети построчно
  4. Сохранить и выполнить Force Update

Пользовательские DNSBL-списки

На вкладке DNSBL нажать Add и заполнить:

  1. Group Name - имя группы
  2. DNSBL Source - выбрать Custom и ввести домены построчно
  3. List Action - Unbound
  4. Сохранить и выполнить Force Update

Логирование и мониторинг

Журналы pfBlockerNG

Журналы доступны через Firewall > pfBlockerNG > Logs:

ЖурналСодержание
DNSBLЗаблокированные DNS-запросы с указанием клиента и домена
IP BlockЗаблокированные IP-адреса с указанием списка-источника
GeoIPЗаблокированные соединения по географическому признаку
ErrorОшибки обновления списков и работы пакета

Статистика

Вкладка Reports предоставляет статистику работы pfBlockerNG:

  • Количество заблокированных запросов по категориям
  • Топ заблокированных доменов и IP-адресов
  • Топ клиентов по количеству заблокированных запросов
  • Графики активности по времени

Виджет Dashboard

pfBlockerNG добавляет виджет на панель управления pfSense с краткой статистикой блокировок за текущий период.

Интеграция с файрволом

pfBlockerNG автоматически создаёт алиасы в файрволе pfSense для каждой активной группы IP-блокировки. Эти алиасы видны в Firewall > Aliases и могут использоваться в пользовательских правилах.

Автоматические правила

При выборе действия Deny Both/Inbound/Outbound pfBlockerNG автоматически создаёт правила файрвола на вкладке Floating Rules. Эти правила обрабатываются до пользовательских правил на интерфейсах.

Ручное использование алиасов

При выборе действия Alias Only создаётся только алиас без автоматического правила. Этот алиас можно использовать в собственных правилах на любом интерфейсе для более гранулярного контроля.

Диагностика проблем

DNS-фильтрация не работает

  1. Убедиться, что DNSBL включена на вкладке DNSBL
  2. Проверить, что DNS Resolver (Unbound) является основным DNS-сервисом pfSense (Services > DNS Resolver)
  3. Убедиться, что клиенты используют pfSense как DNS-сервер
  4. Проверить, что Python установлен (требуется для DNSBL в pfBlockerNG-devel)
  5. Выполнить принудительное обновление: Firewall > pfBlockerNG > Update > Force
  6. Проверить журнал ошибок: Firewall > pfBlockerNG > Logs > Error

Ложные срабатывания DNSBL

  1. Определить заблокированный домен в журнале DNSBL
  2. Добавить домен в белый список через DNSBL Whitelist или через страницу блокировки
  3. При массовых ложных срабатываниях отключить проблемный список
  4. Использовать nslookup или dig для проверки разрешения домена через pfSense

Высокое потребление памяти

  1. Проверить количество записей в активных списках: Firewall > pfBlockerNG > Logs > Summary
  2. Уменьшить количество активных IP-списков
  3. Увеличить размер таблицы файрвола: System > Advanced > Firewall & NAT > Firewall Maximum Table Entries
  4. При использовании GeoIP проверить, что загружены только необходимые базы
  5. Рассмотреть увеличение объёма RAM

Ошибки обновления списков

  1. Проверить доступность DNS: Diagnostics > DNS Lookup
  2. Проверить маршрутизацию: Diagnostics > Ping до адреса источника списка
  3. Убедиться, что исходящий HTTPS-трафик (порт 443) не блокируется
  4. Проверить, не изменился ли URL источника (источники периодически меняют адреса)
  5. Проверить формат списка - некоторые источники меняют формат без предупреждения

Пакет не работает после обновления pfSense

  1. Удалить и переустановить pfBlockerNG через System > Package Manager
  2. Повторно выполнить настройку через мастер
  3. Выполнить Force Update для загрузки всех списков
  4. Проверить совместимость версии пакета с текущей версией pfSense

Рекомендации по развёртыванию

Поэтапное внедрение

  1. Этап 1: Установить pfBlockerNG с минимальным набором IP-списков (Spamhaus DROP, DShield)
  2. Этап 2: Включить DNSBL с основными списками вредоносных доменов
  3. Этап 3: Добавить списки рекламы и трекеров
  4. Этап 4: Настроить GeoIP-фильтрацию
  5. Этап 5: Добавить пользовательские списки на основе анализа логов

Мониторинг после развёртывания

После каждого этапа внедрения необходимо:

  • Мониторить журналы блокировок минимум 48 часов
  • Проверять работоспособность бизнес-критичных приложений
  • Формировать белый список на основе обращений пользователей
  • Контролировать потребление ресурсов (RAM, CPU, размер таблиц)

Связанные разделы

Last updated on