Кратко опишу возможности этого сервера:
◽️обслуживание dns запросов из локальной сети;
◽️аутентификация пользователей на основе ip адресов, паролей, учётных записей из Active Directory (в том числе прозрачная);
◽️использование готовых списков для запрета доступа к каким-то сайтам, а также создание своих списков;
◽️логирование всех dns запросов;
◽️создание гибких политик доступа к сайтам на основе пользователей, групп пользователей, времени суток;
◽️отчёты и оповещения о событиях фильтрации.
Сам продукт бесплатен, монетизируется за счёт подписок на регулярно обновляемые списки сайтов, разбитых на категории. На них, соответственно, можно не подписываться и использовать программу бесплатно без ограничения. Коммерческое использование допускается. Программа написана на Java, поэтому кроссплатформенна. Можно запускать как на Linux, так и на Windows.
Показываю процесс установки на Debian 12. Устанавливаем Java и sudo (нужен установщику):
# apt install openjdk-17-jdk-headless sudoСкачиваем пакет и устанавливаем:
# wget https://pub.nxfilter.org/nxfilter-4.7.0.5.deb# dpkg -i nxfilter-4.7.0.5.debЗапускаем службу. 80-й порт на сервере должен быть свободен, так как веб интерфейс по умолчанию запускается на этом порту:
# systemctl enable --now nxfilterСлужба какое-то время будет создавать свою базу данных и индексы. Наблюдать за процессом можно в логе:
# tail -f /nxfilter/log/nxfilter.logКак только процесс завершится, можно идти в веб интерфейс по адресу сервера: http://10.20.1.36/admin/ Учётка: admin / admin. Мне почему-то после логина показывалась страница с блокировкой, хотя аутентификация проходила нормально. Я просто открыл страницу http://10.20.1.36/dashboard.jsp и оказался в панели управления. После этого всегда успешно заходил в админку.
Кратко покажу, как тут всё устроено. Для примера добавим пользователя, который будет проходить аутентификацию на основе своего IP адреса, то есть автоматом. Создадим политику, которая будет блокировать доступ к доменам vk.com и ok.com и назначим эту политику этому пользователю.
1️⃣ Идём в раздел DNS ⇨ Setup и указываем DNS серверы, на которые будем перенаправлять запросы. В разделе DNS ⇨ ACCESS CONTROL указываем подсети, для которых будет разрешен доступ к dns серверу. У меня это подсеть 10.20.1.0/24.
2️⃣ Идём в раздел CATEGORY ⇨ CUSTOM и добавляем новую категорию. Я назвал её VK_OK. После создания нажимаем на редактирование и добавляем в список домены для блокировки.
3️⃣ Идём в раздел POLICY ⇨ POLICY и создаём новую политику. Нажимаем на редактирование, переходим на вкладку BLOCKED CATEGORIES и выбираем там созданную ранее категорию.
4️⃣ Идём в раздел USER ⇨ USER и создаём там новый список, открываем на редактирование. В параметре Work-time Policy выбираем созданную ранее политику. Во вкладке ADD IP указываем IP адреса или подсети, которые будут входить в создаваемый список.
5️⃣ Идём в раздел SYSTEM ⇨ SETUP и включаем там параметр Enable User Authentication. Я про него забыл и в итоге ничего не работало.
Вот и всё. Я довольно быстро разобрался, просто потыкав веб интерфейс. Там всё интуитивно понятно, плюс многие параметры описаны. Теперь пользователь из списка при открытии заблокированных сайтов будет перенаправлен на внутреннюю страницу. Она может быть настроена. Он увидит предупреждение о недоверенном TLS сертификате, так как по умолчанию используется самподписанный. На самой странице с редиректом будет указано, что данный сайт заблокирован, так как входит в соответствующий список.
Такой вот относительно простой и эффективный способ блокировки доступа к сайтам на основе фильтрации DNS запросов. Помимо этого nxfilter всё логирует, собирает статистику, выводит её на дашборд, формирует отчёты. В общем, функциональная и удобная программа.
⇨ Сайт
#dns
