DNS-Блокировка сайтов с помощью pfBlocker-NG
Иногда возникает необходимость заблокировать некоторые сайты у себя в локальной сети. Можно для этого использовать разные решения, но сегодня мы рассмотрим pfBlocker-NG.
Перейду сразу к его настройке, часть с установкой пропущу, потому что и так понятно, что для начала его надо установить. Единственное, что я бы сказал, так это то, что надо устанавливать пакет «pfblockerng-devel», потому что обычный pfblocker достаточно тухлый в репозиториях pfSense.
Замечу, что у вас на клиентских устройствах ip адрес DNS сервера должен быть адрес вашего pfSense.
Часть 1. Блокировка сайтов.
Переходим в настройки pfBlockerNG, после чего заходим в раздел «DNSBL»
Меняем следующие параметры так:
DNSBL Mode: unbound python mode
DNSBL Blocking: enable
HSTS mode: enable
Спускаемся чуть ниже до DNSBL Confuguration и меняем параметр «Global Logging/Blocking mode» на «DNSBL WebServer/VIP
Применяем настройки, после чего переходим к разделу «DNSBL Groups»:
Нажимаем кнопку «Add», после чего в поле «Name / Description» вводим любое понравившееся нам имя, но без пробелов, спецсимволов и вообще на латинице.
В разделе «Settings» меняем параметр «Action» на «Unbound», а всё остальное не трогаем.
Листаем вниз до «DNSBL Custom List» и вводим домены, которые хотим заблокировать:
Сохраняем настройки, после чего переходим в «Update», выбираем «Reload» и «DNSBL»:
И после того как мы это сделали, наши сайты превратились в это:
Хотя раньше они были этим:
Ну и nslookup соответственно ведет туда, куда надо нам:
Если после Reload DNSBL некоторые сайты не блокируются, перейдите в «Services -> DNS Resolver», после чего перезапустите сервис.
После блокировки некоторые сайты могут выдавать ошибку SSL. Всё потому что страница блокировки pfBlockerNG висит на HTTPS. Так же если на сайты ранее переходили, а сейчас они заблокированы, то браузер тоже выдаст ошибку SSL, но перейти на страницу не даст, потому что думает, что страницу пытаются подменить мошенники. В обоих случаях сайт заблокирован, так что не вижу в этом проблемы.
Часть 2. Блокировка DNS.
Здесь всё просто:
Переходим в pfBlockerNG -> DNSBL -> DNSBL SafeSearch и в разделе «DNS over HTTPS/TLS/QUIC Blocking» ставим параметр «DoH/DoT/DoQ Blocking» на «Enable», а чуть ниже выбираем все доступные сервера и нажимаем «Save». На всякий случай перезагрузите списки DNSBL, как мы это делали чуть выше. После чего идём в «Firewall -> Rules -> [ваша локальная сеть]» и там создаем следующие правила:
Правило 1:
Action: Reject
Interface: [ваша локальная сеть]
Protocol: TCP/UDP
Source: any
Destination: any
Destination port range: DNS(53)
Правило 2:
Action: Reject
Interface: [ваша локальная сеть]
Protocol: TCP/UDP
Source: any
Destination: any
Destination port range: DNS Over TLS(853)
Правило 3:
Action: Pass
Interface: [ваша локальная сеть]
Protocol: TCP/UDP
Source: any
Destination: LAN address
Destination port range: DNS(53)
Все правила надо разместить в самом верху, а правило которое разрешает порт 53 на LAN адреса надо поставить выше запрещающих правил. После чего сохраняете настройки, применяете и при использовании сторонних DNS у вас должно быть это:
На этом всё, если статья вам понравилась или помогла, то поделитесь ею или поддержите меня материально. Можно и то и то 🙂