• Home
  • How to
  • IP-фильтрация с помощью pfSense

Как настроить IP-фильтрацию и блокирование DNS на pfSense с использованием pfBlockerNG

Marc Dahan

By Marc Dahan . 22 февраля 2024

Cybersecurity Journalist

Miklos Zoltan

Fact-Checked this

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

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

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

Связанное руководство: Как заблокировать рекламу на всех ваших устройствах с помощью pfSense, Squid и SquidGuard

Краткое резюме статьи:
pfSense — это надежное решение для брандмауэра и маршрутизатора с открытым исходным кодом, основанное на FreeBSD, которое обеспечивает более высокий уровень безопасности по сравнению с готовыми купить маршрутизаторами.
Помимо стандартных инструментов, pfSense предлагает дополнительные пакеты, такие как pfBlockerNG, который улучшает функциональность брандмауэра, позволяя настраивать входящие и исходящие соединения с использованием списков блокировки IP и DNS.

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

Путем проверки DNS-запросов по спискам блокировки, pfBlockerNG предотвращает доступ к вредоносному контенту и служит эффективным средством блокировки рекламы без необходимости использования прокси-сервера.

Как настроить IP-фильтрацию

Что такое pfBlockerNG?

У pfBlockerNG есть два основных варианта использования:

Фильтрация входящего и исходящего трафика

pfBlockerNG может фильтровать входящий и исходящий трафик с использованием списков IP и применять ограничения GeoIP, разрешая или блокируя трафик в/из конкретных стран. Вторая функциональность может быть очень полезной, если вы открываете порты на вашей WAN.

Блокирование рекламы и вредоносных сайтов через блокирование DNS

pfBlockerNG может блокировать рекламу и доступ к вредоносным сайтам с помощью фильтрации DNS. При просмотре веб-страниц, ваши DNS-запросы проверяются по блок-листу. Если найдется совпадение, запрос будет заблокирован. Это отличный способ блокировать рекламу без использования прокси-сервера.

Мы рассмотрим оба варианта использования и подробно расскажем о каждом из них.

Это руководство предполагает, что вы уже настроили pfSense с функциональными интерфейсами WAN и LAN.

pfSense с функциональными интерфейсами WAN и LAN

Давайте начнем.

Установка pfBlockerNG-devel

Первое, что нам нужно сделать, это установить pfBlockerNG.

  1. В верхнем меню выберите Система > Менеджер пакетов. Вы попадете на вкладку Установленные пакеты в Менеджере пакетов.
    Установка pfBlockerNG.
  2. Выберите Доступные пакеты. Отобразится список доступных пакетов.
    Шаг 2. Установка pfBlockerNG
  3. Прокрутите вниз до тех пор, пока не увидите pfBlockerNG. Есть две записи для pfBlockerNG: pfBlockerNG и pfBlockerNG-devel. Мы установим pfBlockerNG-devel. Суффикс «devel» обозначает версию в разработке (т.е. бета-версию), она полностью функциональна и активно разрабатывается. Она будет оставаться в постоянной бета-версии, так как разработчик пакета считает ее более безопасной для использования, поскольку он постоянно добавляет новые функции в пакет.
    Установка pfBlockerNG-devel
  4. Нажмите Установить рядом с pfBlockerNG-devel. Откроется окно Установщика пакетов.
  5. Нажмите Подтвердить. Установка начнется.
    pfBlockerNG-devel
  6. Как только установка будет завершена, внизу окна Установщика пакетов вы увидите сообщение Успешно. Теперь pfBlockerNG-devel установлен.

    pfBlockerNG-devel

Основная настройка

Теперь, когда у нас установлен pfBlockerNG-devel, нам нужно настроить наш пакет. И мы начнем с фильтрации IP и GeoIP.

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

  1. В верхнем меню выберите Брандмауэр > pfBlockerNG. Откроется мастер настройки pfBlocker.
    Базовая настройка pfBlockerNG
  2. Вы можете либо запустить мастер настройки, либо настроить pfBlockerNG вручную. Мы будем настраивать его вручную, поэтому нажмите на красную надпись HERE, чтобы закрыть мастер. После этого вы попадете на страницу Общие настроек pfBlocker.
    Страница настройки pfBlockerNG

Общие / Общие настройки

  1. Установите флажок Включить, который находится справа от pfBlockerNG. Это активирует сервис.
  2. Нажмите Сохранить внизу страницы.
  3. Остальные настройки на этой странице мы оставим по умолчанию.

Включить pfBlockerNG

Фильтрация IPv4

IP / Настройка IP

  1. Выберите вкладку IP, чтобы получить доступ к странице настроек IP. Пока не трогайте подменю, которые появляются ниже.
  2. Включите Устранение дубликатов. Это позволит объединять дублирующиеся записи, если вы используете несколько IP-источников.
  3. Включите Агрегация CIDR.
  4. Включите Подавление. Подавление обеспечивает то, чтобы вашим локальным подсетям не был закрыт доступ.

IP / Настройка IP

IP / Настройка MaxMind GeoIP

Как я упомянул ранее, функция GeoIP в pfBlockerNG позволяет фильтровать трафик входящий и исходящий из целых стран или континентов. Для этого pfBlocker использует базу данных MaxMind GeoIP, которая требует лицензионный ключ. Ссылка в описании поля MaxMind License Key перенесет вас на страницу регистрации MaxMind. Лицензионный ключ MaxMind бесплатный.

Заполните регистрационную форму, чтобы получить ваш лицензионный ключ. Как только у вас будет ключ, вставьте его в поле MaxMind License Key.

Настройка MaxMind GeoIP

И:

Регистрация в MaxMind

IP / Настройка интерфейса/правил IP

Этот раздел определяет, к какому входящему и исходящему интерфейсу(ам) применяется фильтрация IPv4, IPv6 и GeoIP pfBlockerNG.

  1. Выберите WAN в поле Правила брандмауэра для входящего трафика (и любые другие WAN-интерфейсы, которые у вас есть и вы хотите их фильтровать).
  2. Выберите LAN в поле Правила брандмауэра для исходящего трафика (и любые другие LAN-подобные интерфейсы, которые у вас есть и вы хотите их фильтровать).
  3. Включите Плавающие правила. Плавающие правила — это специальные правила брандмауэра, применяемые перед обычными правилами брандмауэра. Это обеспечивает фильтрацию pfBlockerNG сразу после попадания трафика на брандмауэр. Другое преимущество заключается в том, что pfBlockerNG автоматически создаст плавающие правила для вас.
  4. Нажмите Сохранить внизу страницы.

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

Добавление IPv4-листов

Пришло время добавить некоторые блок-листы в pfBlockerNG. Хотя вы можете добавить свои собственные ленты, у pfBlockerNG есть встроенные ленты, которые мы можем активировать (термины «список» и «лента» в данном контексте взаимозаменяемы).

Это очень удобно, потому что поиск блок-листов в Интернете требует времени, и многие из них не работают или больше не поддерживаются. Ленты внутри pfBlocker — это актуальные списки, которые регулярно обновляются, поэтому мы будем использовать их.

  1. Выберите вкладку Ленты.
  2. Щелкните синюю кнопку + рядом с PRI1. Это первая запись. PRI1 — это набор лент, поэтому он включает несколько лент, как мы увидим через мгновение. После щелчка по синей кнопке + вы перейдете на страницу IP / IPv4, где перечислены выбранные вами ленты. Почти все соответствующие поля автоматически заполняются.

Вкладка Ленты pfBlockerNG

IP / IPv4

Наименование набора лент заполняется вместе с его описанием. Также заполняются URL-адреса лент, включенных в набор, и их соответствующие описания. Однако наши ленты по умолчанию установлены в OFF. Мы должны включить их.

Списки IPv4 pfBlockerNG

Но перед этим нам нужно удалить одну из лент из набора PRI1. Pulsedive, седьмая лента сверху, является премиум-списком, который требует платного API-ключа. Мы не будем получать API-ключ для этого урока. Щелкните кнопку Удалить.

Удаление ленты

  1. После того как вы удалите Pulsedive, установите все ленты в положение ВКЛ.
    Ленты включены
  2. Прокрутите вниз к разделу Настройки на странице.
  3. В меню «Действие» выберите Запретить оба. Это заблокирует трафик к и от IP-адресов в списках/лентах. Вы можете выбрать запретить только входящие или исходящие соединения, если хотите. Просто помните, что если вы запретите только входящий трафик и хост в вашей сети инициирует исходящее соединение к одному из этих IP, входящий ответ от этого IP будет разрешен. Это может быть нормально в зависимости от вашей среды — просто будьте внимательны. В этом примере я выберу Запретить оба.
  4. Нажмите Сохранить настройки IPv4 внизу страницы.

Вы можете повторить те же шаги для IPv6, если ваш интернет-провайдер назначает вашему WAN и IPv4, и IPv6 IP-адрес. Большинство из нас все еще используют только IPv4.

Фильтрация по GeoIP

Прежде чем настроить фильтрацию по GeoIP, нам нужно сначала принудительно обновить pfBlockerNG. pfBlocker автоматически обновляется через фиксированные интервалы. Но для настройки фильтрации по GeoIP, сначала pfBlocker должен загрузить базу данных MaxMind, и принудительное обновление именно это сделает.

  1. Выберите вкладку Обновление в настройках pfBlockerNG.
  2. Нажмите Запустить. Обновление начнется.
    Настройки обновления GeoIP
  3. После завершения обновления, внизу окна Журнал под Настройками обновления должно появиться ПРОЦЕСС ОБНОВЛЕНИЯ ЗАВЕРШЕН.
    Процесс обновления GeoIP завершен
  4. Просмотрев окно журнала, мы видим, что обновились как мои IPv4-ленты, так и база данных GeoIP.
    Журнал IPv4

    Журнал IPv4

    Журнал GeoIP

    Журнал GeoIP

  5. На вкладке IP в настройках pfBlockerNG выберите подменю GeoIP. Отображается обзор GeoIP.
    Меню GeoIP

Обзор GeoIP состоит из лент IP-адресов, организованных по континентам, а также двух дополнительных категорий: Топ Спамеров и Прокси и Спутниковые. Топ Спамеров — это список стран, известных как частые источники онлайн-атак. И Прокси и Спутниковые — это известные анонимные прокси и поставщики спутникового интернета.

Вы можете фильтровать трафик к/от всего континента, либо настроить ленту, выбрав только те страны, которые хотите отфильтровать.

Настройка пользовательских списков стран

  1. Нажмите на иконку карандаша справа от ленты, которую хотите изменить.
    Обзор GeoIP
  2. Выберите страны, которые вы хотите, чтобы pfBlockerNG фильтровал.
  3. Нажмите Сохранить внизу страницы.
    Страница обзора GeoIP

Настройка блокировок по странам

  1. Вернитесь в меню GeoIP настроек pfBlocker.
  2. Как мы сделали с IPv4 списками, из выпадающего меню Действие справа от каждого поля, выберите либо Заблокировать входящее, Заблокировать исходящее или Заблокировать оба.
    Действие GeoIP

Теперь здесь есть некоторые моменты, о которых следует подумать. Если вы хотите блокировать исходящие соединения к стране или континенту, дерзайте. Однако, если вы задумываетесь о блокировке входящих ссылок от правительства или континента, имейте в виду, что по умолчанию pfSense блокирует всек несанкционированный входящий трафик на WAN.

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

Псевдонимы — это списки IP-адресов, которые являются внутренними для pfSense. Используя псевдонимы, вы можете разрешить только те страны, которые вы выбрали, чтобы получить доступ к вашим открытым портам. Однако есть способ создать пользовательские псевдонимы из базы данных MaxMind GeoIP прямо внутри pfBlockerNG, которые можно использовать напрямую как источник в правилах брандмауэра для переадресации портов.

Создание псевдонима GeoIP в pfBlockerNG

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

  1. Перейдите в подменю IPv4 и нажмите Добавить.
    Добавить пользовательский псевдоним
  2. Дайте псевдониму имя и описание.
  3. Установите значение поля Формат на GeoIP.
  4. Установите значение поля Состояние на Включено.
  5. Установите действие на Псевдоним Нативный.
  6. Начните вводить первые буквы страны, которую хотите добавить в псевдоним. Выберите страны, которые вы хотите добавить в псевдоним. Список стран появится.
    Пользовательский псевдоним - начало ввода
  7. Вы можете добавить больше стран в свой псевдоним, нажав зеленую кнопку Добавить.
    Добавить страны
  8. Установите значение поля Частота обновления на Раз в день.
  9. Нажмите Сохранить настройки IPv4 внизу страницы. После принудительного обновления pfBlockerNG ваш псевдоним будет доступен для включения в правила брандмауэра.
    Настройки пользовательского псевдонима

Если у вас есть открытые порты, но вы хотите упростить, вы можете блокировать входящие соединения от Топ Спамеров и Прокси и Спутниковые без создания пользовательского псевдонима. Помните, что это полезно только если у вас есть открытые порты на WAN.

Заблокировать спамеров и сателлиты

Если у вас нет открытых портов на WAN, заблокируйте только исходящий трафик или оставьте фильтрацию GeoIP отключенной.

Тестирование фильтрации IPv4

Чтобы убедиться, что наш трафик фильтруется, мы можем попробовать подключиться к известному IP-адресу в блок-листе. Если я попытаюсь зайти на 1.13.9.177 (IP-адрес из моих лент pfBlockerNG IPv4) в браузере, IP-адрес не будет преобразован в доменное имя, и я не смогу подключиться. Это то, что нам нужно.

Тестирование IPv4

Перейдем к настройке DNSBL в pfBlocker.

DNSBL

Ладно. Мы настроили фильтрацию IPv4 и фильтрацию GeoIP, а также псевдонимы. Теперь пришло время перейти к использованию pfBlockerNG для блокировки рекламы. В pfBlockerNG блокировка рекламы осуществляется с помощью блокировки DNS. Это означает, что ваши запросы DNS проверяются на совпадение с известными рекламными сетями и трекерами и блокируются на уровне DNS при совпадении, что приводит к отсутствию рекламы в интернете. Ура!

Чтобы использовать функцию DNSBL в pfBlockerNG, вы должны использовать Резольвер DNS в pfSense для разрешения DNS. Это означает, что вы не можете назначить DNS вашим хостам через DHCP или использовать DNS-пересыльщик (dnsmasq), если вы хотите использовать функцию DNSBL.

По умолчанию pfSense использует DNS-резольвер на всех интерфейсах. Так что если вы не вносили никаких изменений в настройки DNS-резольвера, у вас все хорошо. Если вы вносили изменения, настройте Резольвер на привязку к вашей локальной сети (исходящий) и к входящему интерфейсу WAN. И выберите любые другие интерфейсы типа LAN (OPT интерфейсы) и WAN (множественные WAN, VPN-шлюзы), для которых вы хотите, чтобы DNSBL выполнял фильтрацию.

DNS-резольвер

Настройка DNSBL

  1. Выберите вкладку DNSBL.
  2. Включите DNSBL.
  3. Рядом с Режимом DNSBL выберите Режим Unbound Python.
    DNSBL
  4. Прокрутите вниз до раздела Конфигурация DNSBL.
  5. Включите Разрешать правила брандмауэра и выберите вашу локальную сеть и любые другие интерфейсы типа LAN, для которых вы хотите выполнять фильтрацию с помощью DNSBL. Это автоматически создаст плавающие правила брандмауэра (как мы сделали с фильтрацией IPv4), чтобы фильтрация DNSBL начиналась сразу после прохождения трафика через брандмауэр.
  6. Нажмите Сохранить настройки DNSBL внизу страницы.
    Сохранить настройки DNSBL

Теперь нам нужно добавить некоторые ленты DNSBL.

Добавление лент DNSBL

  1. Выберите вкладку Ленты.
  2. Прокрутите вниз, пока не увидите Категория DNSBL слева. Первая такая запись — EasyList.
  3. Нажмите синюю кнопку + слева от EasyList. Вы перейдете на страницу Группы DNSBL, где перечислены выбранные вами ленты, как при фильтрации IPv4. И практически все соответствующие поля заполняются автоматически.

    Ленты DNSBL

  4. Удалите все ленты, кроме первой и последней: EasyList и EasyList Privacy.
  5. Установите оставшиеся ленты в состояние ВКЛ.
    Ленты DNSBL включены
  6. Прокрутите вниз до раздела Настройки.
  7. Установите Действие на Unbound.
  8. Нажмите на + справа от DNSBL Custom_List. Откроется окно DNSBL Custom_List.
  9. Введите vungle.com в окне DNSBL Custom_List. Мы добавляем этот домен, чтобы убедиться, что фильтрация DNSBL работает, попытавшись получить доступ к известно заблокированному домену.
  10. Нажмите Сохранить настройки DNSBL внизу страницы.
    Ленты DNSBL включены

Принудительное обновление pfBlockerNG

Теперь нам нужно принудительно обновить pfBlockerNG, как мы делали выше.

  1. Выберите вкладку Обновить. Вы перейдете на страницу обновления pfBlockerNG.
  2. Нажмите Запустить. Обновление начнется.
    Настройки обновления

После завершения обновления, мы можем видеть, что наши ленты DNSBL были обновлены.

Журнал обновления DNSBL

Тестирование DNSBL

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

Примечание: DNSBL pfBlocker включает мини-веб-сервер, который может обслуживать эту страницу блокировки. Фильтрация IPv4, IPv6 и GeoIP расширяет существующую функциональность брандмауэра pfSense и блокирует или разрешает IP-адреса без отображения страницы блокировки.

Тестирование DNSBL

Заключение

Итак, вот и все! Вы успешно установили и настроили pfBlockerNG-devel в pfSense. Мы настроили фильтрацию IPv4, фильтрацию по GeoIP и фильтрацию DNSBL. Все три эти компонента делают вашу сеть более безопасной и приватной, не замедляя ваше соединение.

По мере роста вашей сети вам может понадобиться открывать определенные порты на вашем WAN, если вы хотите запустить VPN-сервер или хостить веб-сервер, доступный из интернета. Когда вы это делаете, pfBlockerNG будет полезным инструментом в вашем арсенале безопасности, помогая вам укрепить защиту вашей сети и детально контролировать доступ снаружи.

Связано: Как выбрать лучшие VPN

Leave a Comment