pfBlockerNG в pfSense - блокировка IP и DNS
pfBlockerNG - пакет для pfSense, обеспечивающий комплексную фильтрацию сетевого трафика на основе репутационных списков IP-адресов и доменных имён. Пакет объединяет две ключевые функции: блокировку IP-адресов из списков угроз (включая GeoIP-фильтрацию по странам) и DNSBL (DNS Blackhole List) - перехват DNS-запросов к вредоносным, рекламным и нежелательным доменам. В отличие от IDS/IPS, который анализирует содержимое трафика, pfBlockerNG работает на уровне IP-адресов и DNS-запросов, обеспечивая первый уровень защиты с минимальным влиянием на производительность.
pfBlockerNG интегрируется с файрволом pfSense через создание автоматических алиасов и правил, которые блокируют или разрешают трафик на основе регулярно обновляемых списков из внешних источников.
Установка pfBlockerNG
Установка выполняется через менеджер пакетов:
- Перейти в System > Package Manager > Available Packages
- Найти pfBlockerNG-devel в строке поиска (рекомендуется версия -devel как активно развиваемая)
- Нажать Install и подтвердить установку
- Дождаться завершения установки
После установки конфигурация доступна через Firewall > pfBlockerNG.
Внимание:
Версия pfBlockerNG-devel является рекомендуемой разработчиком для использования в рабочих средах, несмотря на название. Базовая версия pfBlockerNG больше не поддерживается активно.
Системные требования
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| RAM | 1 ГБ | 2 ГБ и более |
| Диск | 5 ГБ свободного пространства | 10 ГБ |
| DNS Resolver | Unbound (обязательно для 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:
- Зарегистрировать аккаунт на maxmind.com
- В личном кабинете создать License Key
- Скопировать ключ в поле MaxMind License Key в настройках pfBlockerNG
- Выполнить обновление через Update для загрузки базы GeoIP
Блокировка IP-адресов
Блокировка IP-адресов обеспечивает фильтрацию трафика на основе репутационных списков, содержащих адреса известных источников угроз - ботнет-серверов, спам-рассылок, сканеров уязвимостей и других вредоносных ресурсов.
Настройка IP-блокировки
Конфигурация выполняется на вкладке IP (Firewall > pfBlockerNG > IP).
Группы IPv4 и IPv6
Для каждого списка создаётся группа с индивидуальными параметрами:
| Параметр | Описание |
|---|---|
| Alias Name | Имя алиаса (используется в правилах файрвола) |
| List Action | Действие при совпадении |
| Update Frequency | Частота обновления списка |
| Source | URL-адрес списка и его формат |
| 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 | Расширенный список Spamhaus | https://www.spamhaus.org/drop/edrop.txt |
| DShield | Топ-20 атакующих IP за последние сутки | https://feeds.dshield.org/block.txt |
| Feodo Tracker | IP-адреса C2-серверов банковских троянов | https://feodotracker.abuse.ch/downloads/ipblocklist.txt |
| Emerging Threats | IP-адреса активных угроз | https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt |
| CINS Army | Распределённый список атакующих | https://cinsscore.com/list/ci-badguys.txt |
| Abuse.ch SSLBL | IP-адреса вредоносных SSL-серверов | https://sslbl.abuse.ch/blacklist/sslipblacklist.txt |
GeoIP-блокировка
GeoIP-фильтрация позволяет блокировать или разрешать трафик на основе географического расположения IP-адреса. Эта функция полезна для ограничения доступа из стран, откуда легитимный трафик не ожидается.
Настройка GeoIP выполняется на вкладке IP в разделе GeoIP:
- Убедиться, что ключ MaxMind введён в общих настройках
- Перейти на вкладку IP > GeoIP
- Выбрать континенты или страны для блокировки
- Установить действие (Deny Inbound, Deny Both и т.д.)
- Сохранить и выполнить обновление
Стратегии 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 Sources | URL-адреса списков доменов |
| 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 Whitelist | DNSBL > DNSBL Configuration | Глобальный белый список доменов |
| Custom Whitelist | DNSBL > DNSBL Groups | Белый список для конкретной группы |
| TLD Whitelist | DNSBL > DNSBL TLD | Исключение доменов верхнего уровня |
| Wildcard Whitelist | DNSBL > DNSBL Whitelist | Поддерживает маски *.domain.com |
Формат записей белого списка
# Точное совпадение домена
example.com
# Домен и все поддомены
.example.com
# Комментарий с описанием
example.com # Корпоративный порталРекомендации по белым спискам
При первоначальном развёртывании pfBlockerNG рекомендуется:
- Включить DNSBL с минимальным набором списков
- Мониторить журнал блокировок в течение нескольких дней
- Добавить в белый список домены, необходимые для работы бизнес-приложений
- Постепенно расширять количество активных списков
Типичные домены для белого списка:
- Домены корпоративных сервисов (Microsoft 365, Google Workspace)
- CDN-провайдеры (Akamai, CloudFront, Cloudflare)
- Сервисы обновлений операционных систем
- Платёжные системы и банковские сервисы
Пользовательские списки
pfBlockerNG поддерживает создание пользовательских списков IP-адресов и доменов для адаптации фильтрации под конкретные потребности.
Пользовательские IP-списки
На вкладке IP нажать Add и заполнить:
- Alias Name - имя списка
- List Action - действие (Deny/Permit)
- Source - выбрать Custom и ввести IP-адреса или подсети построчно
- Сохранить и выполнить Force Update
Пользовательские DNSBL-списки
На вкладке DNSBL нажать Add и заполнить:
- Group Name - имя группы
- DNSBL Source - выбрать Custom и ввести домены построчно
- List Action - Unbound
- Сохранить и выполнить 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-фильтрация не работает
- Убедиться, что DNSBL включена на вкладке DNSBL
- Проверить, что DNS Resolver (Unbound) является основным DNS-сервисом pfSense (Services > DNS Resolver)
- Убедиться, что клиенты используют pfSense как DNS-сервер
- Проверить, что Python установлен (требуется для DNSBL в pfBlockerNG-devel)
- Выполнить принудительное обновление: Firewall > pfBlockerNG > Update > Force
- Проверить журнал ошибок: Firewall > pfBlockerNG > Logs > Error
Ложные срабатывания DNSBL
- Определить заблокированный домен в журнале DNSBL
- Добавить домен в белый список через DNSBL Whitelist или через страницу блокировки
- При массовых ложных срабатываниях отключить проблемный список
- Использовать
nslookupилиdigдля проверки разрешения домена через pfSense
Высокое потребление памяти
- Проверить количество записей в активных списках: Firewall > pfBlockerNG > Logs > Summary
- Уменьшить количество активных IP-списков
- Увеличить размер таблицы файрвола: System > Advanced > Firewall & NAT > Firewall Maximum Table Entries
- При использовании GeoIP проверить, что загружены только необходимые базы
- Рассмотреть увеличение объёма RAM
Ошибки обновления списков
- Проверить доступность DNS: Diagnostics > DNS Lookup
- Проверить маршрутизацию: Diagnostics > Ping до адреса источника списка
- Убедиться, что исходящий HTTPS-трафик (порт 443) не блокируется
- Проверить, не изменился ли URL источника (источники периодически меняют адреса)
- Проверить формат списка - некоторые источники меняют формат без предупреждения
Пакет не работает после обновления pfSense
- Удалить и переустановить pfBlockerNG через System > Package Manager
- Повторно выполнить настройку через мастер
- Выполнить Force Update для загрузки всех списков
- Проверить совместимость версии пакета с текущей версией pfSense
Рекомендации по развёртыванию
Поэтапное внедрение
- Этап 1: Установить pfBlockerNG с минимальным набором IP-списков (Spamhaus DROP, DShield)
- Этап 2: Включить DNSBL с основными списками вредоносных доменов
- Этап 3: Добавить списки рекламы и трекеров
- Этап 4: Настроить GeoIP-фильтрацию
- Этап 5: Добавить пользовательские списки на основе анализа логов
Мониторинг после развёртывания
После каждого этапа внедрения необходимо:
- Мониторить журналы блокировок минимум 48 часов
- Проверять работоспособность бизнес-критичных приложений
- Формировать белый список на основе обращений пользователей
- Контролировать потребление ресурсов (RAM, CPU, размер таблиц)
Связанные разделы
- Управление пакетами - установка и обновление пакетов pfSense
- DNS в pfSense - настройка DNS Resolver (Unbound), необходимого для работы DNSBL
- Правила файрвола - взаимодействие правил файрвола с алиасами pfBlockerNG
- Алиасы файрвола - использование алиасов pfBlockerNG в пользовательских правилах