Привет, Хабр!

В статье расскажу как в гостевой Wi-Fi сети блокировал сайты с контентом 18+ (для взрослых) на межсетевых экранах Zyxel моделей VPN / ATP / USG Flex (все со встроенным контроллером точек доступа), чтобы гости в публичных сетях или персонал в пользовательской сети не могли загрузить такие сайты, нередко оказывающиеся вредоносными.

Мои предыдущие статьи:

В конце текста информация обо мне.

Вообще, у межсетевых экранов Zyxel VPN / ATP / USG Flex есть свой функционал блокировки сайтов для взрослых, называется "Контентная фильтрация". Познакомиться с ним можно тут и тут.

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

Поэтому альтернативным путём заблокируем сайты для взрослых с минимумом затраченного времени, не затрагивая гостевые и пользовательские устройства. Всё делаем только на одном межсетевом экране.

Пример настройки блокировки взрослого контента производился на межсетевом экране (МСЭ) Zyxel VPN100 с дефолтной конфигурацией. Настройки подойдут и другим межсетевым экранам как ATP и USG Flex. Отличий между ними в настройках нет.

Примечание: в статье гостевая Wi-Fi сеть или пользовательская подключена к порту P4 (зона lan1). Интернет-кабель подключён к порту P2 (зона WAN). Порт P2 в некоторых местах веб-интерфейса и в консоли обозначен как ge2.

С веб-интерфейсом вышеуказанных МСЭ можно познакомиться в виртуальной лаборатории Zyxel:

Приступаем к настройке.

1) Заходим на сайт https://dns.yandex.ru, переписываем IP адреса режима "Семейный", это 77.88.8.7 и 77.88.8.3 (рис.1).

Рис.1 - Режимы работы Яндекс.DNS.
Рис.1 - Режимы работы Яндекс.DNS.

На момент публикации статьи технические подробности Яндекс.DNS были такими (рис.2).

Рис.2 - Технические подробности Яндекс.DNS.
Рис.2 - Технические подробности Яндекс.DNS.

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

2) Заходим на веб-страницу МСЭ и добавим адреса Яндекс.DNS в "КОНФИГУРАЦИЯ -> Система -> DNS" (рис.3).

Рис.3 - Добавление IP адреса DNS сервера.
Рис.3 - Добавление IP адреса DNS сервера.

После добавления DNS адресов, должно быть вот так, как на рис.4.

Рис.4 - Добавленные IP адреса DNS серверов Яндекс.DNS.
Рис.4 - Добавленные IP адреса DNS серверов Яндекс.DNS.

Либо в консоли пропишем (рис.5).

Рис.5 - Добавление IP адресов DNS серверов.
Рис.5 - Добавление IP адресов DNS серверов.
Набранный текст команд для копипаста:
  1. configure terminal

  2. ip dns server zone-forwarder insert 1 * user-defined 77.88.8.7 interface ge2

  3. ip dns server zone-forwarder insert 2 * user-defined 77.88.8.3 interface ge2

  4. write

  5. exit

    Проверка записей добавленных DNS серверов:

  6. show ip dns server database

Примечание: адреса других DNS не рекомендуется оставлять или добавлять.

3) "КОНФИГУРАЦИЯ -> Сеть -> Интерфейс -> Вкладка Ethernet -> Строка #4 lan1" (рис.6).

Примечание: lan1 по умолчанию назначен физическому порту P4 МСЭ VPN100.

Рис.6 - Выбор порта (интерфейса) P4 для изменения параметров.
Рис.6 - Выбор порта (интерфейса) P4 для изменения параметров.

Далее прокручиваем страницу до "Настройки DHCP -> Первый DNS-сервер:". В выпадающем списке выберите "ZyWALL" (рис.7).

Рис.7 - Выбор первого DNS-сервера.
Рис.7 - Выбор первого DNS-сервера.

Для второго и третьего DNS-серверов оставляем "None" (рис.8).

Рис.8 - None выставляем у второго и третьего DNS-серверов.
Рис.8 - None выставляем у второго и третьего DNS-серверов.

Или в консоли (рис.9)

Рис.9 - Установка DNS сервера "ZyWALL" первым DNS сервером (first dns server).
Рис.9 - Установка DNS сервера "ZyWALL" первым DNS сервером (first dns server).
Набранный текст команд для копипаста:
  1. configure terminal

  2. ip dhcp pool LAN_POOL

  3. first-dns-server ZyWALL

  4. exit

  5. write

  6. exit

    Проверка внесённых изменений:

  7. show ip dhcp pool LAN_POOL

Для справки, команды удаления второго и третьего DNS-серверов:

  1. no second-dns-server

  2. no third-dns-server

Теперь DNS запросы от гостей или пользователей МСЭ через себя направляет на Яндекс.ДНС Семейный. В итоге, сайты с взрослым контентом не загружаются, либо сообщает, что по их запросу ничего не нашлось.

Примечание: перед проверкой на загрузку взрослого контента обязательно чистим кэш браузера и удаляем DNS-записи в ОС (в командной строке Windows - это ipconfig /flushdns ).

Далее добавим правило в файрволл, блокирующее DNS запросы из гостевой или пользовательской зоны LAN1 к другим DNS серверам в интернете (зона WAN), чтобы гости или пользователи не могли по другим DNS серверам выходить в интернет.

4) "КОНФИГУРАЦИЯ -> Безопасность -> Политики" (рис.11)

Рис.11 - Добавление правила в файрволл на веб-странице МСЭ.
Рис.11 - Добавление правила в файрволл на веб-странице МСЭ.

Или в консоли (рис.12)

Рис.12 - Добавление нового правила в файрволл в консоли МСЭ.
Рис.12 - Добавление нового правила в файрволл в консоли МСЭ.
Готовые наборы команд для копипаста:
  1. configure terminal

  2. secure-policy insert 1

  3. name LAN1_Outgoing_Stop_DNS

  4. from LAN1

  5. to WAN

  6. service DNS

  7. action deny

  8. log

  9. exit

  10. write

  11. exit

    Проверка добавленного правила:

  12. show secure-policy 1

Правила в файрволле действуют снизу вверх, новое правило "LAN1_Outgoing_Stop_DNS" должно быть выше правила "LAN1_Outgoing". По такому алгоритму сначала действует правило "LAN1_Outgoing", затем "LAN1_Outgoing_Stop_DNS".

Следовательно, запретили отправку трафика от гостей/пользователей зоны lan1 на 53 порт DNS-серверов, находящиеся в зоне wan. Правило коснётся тех, у кого прописаны другие DNS серверы в настройках сетевой карты. Нормальной работы в интернете (сёрфинг) не будет вследствие отброса DNS запросов правилом "LAN1_Outgoing_Stop_DNS".

Поэтому гости/пользователи должны вернуть автоматические сетевые настройки для DNS адресов (рис.13), после чего DNS запросы из LAN1 будут обрабатываться по правилу "LAN1_to_Device" (рис.14), где Device, ZyWALL - это сам МСЭ VPN100.

Дальше МСЭ запросы DNS от гостей/пользователей сам направит DNS серверам, указанные на рис.4. Поэтому очень важно, чтобы первым DNS сервером был ZyWALL, а второй и третий DNS серверы были None, всё как на рис.8

Рис.13 - Автоматическое получение IP-адреса и DNS-адресов на ПК.
Рис.13 - Автоматическое получение IP-адреса и DNS-адресов на ПК.
Рис.14 - Правило, разрешающее прохождение любого трафика из LAN1 к МСЭ (зона ZyWALL).
Рис.14 - Правило, разрешающее прохождение любого трафика из LAN1 к МСЭ (зона ZyWALL).

Отмечу интересную возможность, точнее лайфхак, если DNS сервер "ZyWALL". Необходимо было запретить сайты, например, youtube.com или vk.com. Указал их поочерёдно в "КОНФИГУРАЦИЯ -> Система -> DNS" (рис.15) с направлением на любой серый IP, который нигде не установлен и никогда никому не назначал (по дефолту DHCP раздаёт адреса из диапазона 192.168.1.33-192.168.1.232).

Рис.15 - Добавление FQDN записей.
Рис.15 - Добавление FQDN записей.

Или в консоли (рис.16):

Рис.16 - Добавление FQDN записей с несуществующим IP.
Рис.16 - Добавление FQDN записей с несуществующим IP.
Готовые наборы команд для копипаста:
  1. configure terminal

  2. ip dns server a-record youtube.com 192.168.1.1

  3. ip dns server a-record vk.com 192.168.1.1

  4. write

  5. exit

    Проверка добавленных записей:

  6. show ip dns server database

В итоге, гостя/пользователя, набравшего youtube.com или vk.com, отправляло на несуществующий адрес, который указан в рис.15-16. В браузерах сообщалась ошибка загрузки страницы youtube.com или vk.com.

Рассмотрим на живом примере (рис.17). До добавления записей FQDN сайты youtube.com и vk.com пинговались и были доступны (выделены КРАСНЫМ). Затем добавил FQDN записи как на рис.15, либо рис.16 и повторно пингую. Теперь эти сайты недоступны и в браузере не открываются (выделено ЗЕЛЁНЫМ), что и хотели сделать, чтобы пользователи не отвлекались на посторонние ресурсы в рабочее время.

Рис.17 - Пример доступности сайтов ДО и ПОСЛЕ добавления FQDN записей.
Рис.17 - Пример доступности сайтов ДО и ПОСЛЕ добавления FQDN записей.

Помимо этого способа, сайты можно блокировать другими способами, как:

  • внесением FQDN имени в запрещающее правило файрволла, пример тут;

  • контент-фильтром (необходима лицензия) (рис.18).

Рис.18 - Добавление сайтов в список запрещённых.
Рис.18 - Добавление сайтов в список запрещённых.

Ещё лайфхак. Если в ранее созданном правиле (рис.11 или 12) установить log alert (рис.19) и установить галочку как на рис.20 (туда добираться по пути "КОНФИГУРАЦИЯ -> Логи и отчёты -> Настройки лога -> Строка #1 System Log"), то МСЭ будет отсылать на E-Mail log alert сообщения об отброшенном трафике с такого то IP на такой то IP на 53 порт. Очень удобно, будете уведомлены, кто сейчас подключается к посторонним DNS серверам. Лишь бы почтовый сервер не тормозил.

Рис.19 - Выбор уровня логирования в правиле файрволла.
Рис.19 - Выбор уровня логирования в правиле файрволла.
Рис.20 - Установка галочки уровня alert для получения log alert событий файрволла (Security Policy Control).
Рис.20 - Установка галочки уровня alert для получения log alert событий файрволла (Security Policy Control).

Вот и всё.

Примечание: вышеописанные способы блокировки не являются 100% гарантией блокировки контента для взрослых, но даёт возможность быстро, с минимальными вложениями ограничить контент 18+, не получив при этом половину неработающих нормальных и безобидных сайтов, необходимые для работы и сёрфинга, потратив немного времени на настройку только одного МСЭ, не затрагивая гостевые и пользовательские устройства.

Об авторе:

Кто я? Меня зовут Александр. 16 лет профессионально занимаюсь СКС и сетевым оборудованием. Больше времени провожу с СКС (монтаж, обслуживание), чем с настройкой сетевого оборудования, поэтому на настройки времени особо нет, но получил много опыта работы с сетевым оборудованием различных вендоров. Приветствую простоту и дружелюбность конфигурирования/мониторинга сетевого оборудования, ответственность вендора за качество выпускаемой продукции и готовность исправлять недостатки, чтобы не тормозили сдачу новых проектов в назначенные сроки. Меня можно встретить и лично пообщаться в Телеграме - @NSanchez13, так что, если будут вопросы, комментарии, мнения – милости прошу.

Полезные ссылки:

Комментарии (25)


  1. amarao
    01.02.2022 12:06
    +1

    DoH?


  1. AcidVenom
    01.02.2022 12:39
    +6

    как в гостевой Wi-Fi

    Кто ж в гостевой сети будет пользоваться вашим DNS? Только как транспортной сетью.


  1. PhoenixMSTU
    01.02.2022 12:46
    +11

    Хабр содержит контент для взрослых (18+), согласно пользовательскому соглашению. Его, я так понимаю, заблокировать не удалось?


  1. impexp
    01.02.2022 12:49
    +11

    В чём новшество или преимущество описанного способа блокировки именно на оборудовании Zyxel, если весь принцип сводится к использованию яндекс днс?


    1. Saymon
      01.02.2022 12:56
      +14

      ни в чем, просто копирайтеру нужно зарплату отрабатывать.


  1. avk013
    01.02.2022 13:53
    +1

    В одной из школ, провайдер блокировал выделенный канал Интернет минут через 20, после того как начинались занятия, аргументируя чрезмерной нагрузкой по UDP (ну было по 200 телефонов в сети) , мало указать "ДНС с защитой контета", нужно еще отлавливать все пакеты на 53 порт и перенаправлять на собственные кэшириющие DNS, но и не забывать про DNS-over-TLS где не только 853 порт, вобщем куча телефонного зоопарка из китая "убивает" сеть - пришлось отлавливать сервера по количеству пакетов на UDP к которым идет подключение, и блокировать эти сервера на тайм-лимит в несколько часов. В целом базовый интернет у всех есть, жалобы сейчас не частые.


    1. Saymon
      01.02.2022 14:56

      и у него прям в договоре прописано ограничение на UDP сессии?


      1. avk013
        01.02.2022 15:33
        +2

        Провайдер действительно имел право так считать, мой NAT тяжело умирал от количества запросов, просто провайдер был крайней точкой принявшей решение.

        Формулировка со стороны провайдера: вирусная активность вероятно бот-нет.
        Я наблюдал за активностью WireShark-ом, оказывается что каждый андроидный китаец сливает уйму данных, кроме того похищение данных о клиенте, треккинги тача у этих хостов это "как здрасти", не говоря о треккерах и т.п. Аналогично ведут себя и устройства Apple со своими облаками. Мне пришлось зарезать сайты и многие хосты производителей телефонов регулярками, ну а после уже по количеству запросов на хост.
        Соответвенно пользователи WiFi получают легкий интернет, администрация - полный с небольшими коррективами. Ужас с подключением в этой школе 14 точек доступа в качестве бриджей позволил сыграть с разделением сетей для каждой группы доступа.


  1. avk013
    01.02.2022 13:58
    -2

    перенаправлять запрещенки лучше на 255.255.255.255 а не на IP. Ничего лишнего в запросах не висит нигде, мгновенный отказ.


    1. ifap
      01.02.2022 22:59
      +1

      Бродкастить блокируемый хост? Ааааригинально...


      1. avk013
        02.02.2022 07:46

        ;) а какие у Вас будут предложения, при открытии страницы, если реклама формируется с определенного хоста, треккеры встроены в большинство станиц... подсеть 127.0.0.х делает задержку, любой несуществующий адрес делает время ожидания. И получается что страница уже готова для отображения но чего-то еще ждет. У нас определенные соцсети заблокированы, если в странице есть кнопка "поделиться" запрещенной соц.сети, то страница тупит, так как ждет ответ от левого адреса. "Дропать" пакеты накладно по нагрузке на маршрутизатор, посылать абы куда тоже не вариант из-за задержки отказа.


        1. oplop4k
          02.02.2022 08:53
          +1

          тесты в студию!!!


        1. AcidVenom
          02.02.2022 11:57

          Так не дропайте, а делайте tcp reject.


          1. avk013
            02.02.2022 13:53

            на 1й линии отутлуб ДНСом, те кто пробился дальше уже можно reject-ать и про UDP не забывать


        1. VXP
          02.02.2022 12:13
          +2

          0.0.0.0


          1. avk013
            02.02.2022 13:52

            Пропробуйте сравнить даже обычным пингом.


          1. avk013
            02.02.2022 14:24

            да 0.0.0.0 более культурный, теоретически оправдан!
            отличный совет!


        1. ifap
          02.02.2022 12:20

          Опередили https://habr.com/ru/company/zyxel/blog/646613/comments/#comment_24020685


  1. zemeroff
    02.02.2022 08:53
    +3

    С подключением Вас Александр, работающий 16 лет с СКС и сетевым оборудованием! Описаный Вами способ с блокировкой хостов на dns использовали ещё в начале 2000х. Он и тогда не работал и сейчас не работает. Количество порно сайтов превышает все возможные базы где их пытаются записывать и семейный Яндекс dns это не решение


  1. olegtsss
    02.02.2022 08:58

    На оборудовании MikroTik возможностей для решения подобной задачи гораздо больше.


    1. net_racoon
      02.02.2022 09:55

      Регулярками на софт-роутере?


      1. olegtsss
        02.02.2022 11:15

        Да, конечно. Именно так). А если серьезно, то ни первому, ни по второму пункту я с вами скорее не соглашусь, чем соглашусь.


  1. nnstepan
    03.02.2022 13:00

    А что мешает использовать другой днс или прокси?


    1. AcidVenom
      03.02.2022 13:47

      Далее добавим правило в файрволл, блокирующее DNS запросы из гостевой или пользовательской зоны LAN1 к другим DNS серверам в интернете (зона WAN), чтобы гости или пользователи не могли по другим DNS серверам выходить в интернет.

      Как по мне, это спорное решение. Лучше бы сделать редирикт на себя.


  1. IGR2014
    03.02.2022 21:47

    Перечитывая заголовок уже в 3-й раз, хочется всё-таки уточнить кто же такой этот Как?