КДПВ. Ежедневный пророк через контент-фильтр
КДПВ. Ежедневный пророк через контент-фильтр

Привет, Хабр! Я Ёлкин Тимофей, инженер отдела разработки Интернет контроль сервера. Это статья в помощь людям, которые решают задачу по фильтрации контента из сети Интернет.

Цель - дать минимум информации, чтобы ориентироваться в теме и выбрать продукт. Себя тоже не забудем и представим своё решение.

Этическая сторона вопроса

Модуль фильтрации контента в программных продуктах это инструмент. Результат работы которого определяется настройками.

Отношение в сети к фильтрации контента и цензуре неоднозначное и рождает много споров. Каким целям служит контент-фильтр, решает системый администратор.

Интернет создавался для обмена знаниями и информацией. Следом пришли людские слабости, появились мусор и хаос.

Лучший фильтр среди этого потока информации - наш мозг, знания, критическое мышление и умение работать с информацией. Это приобретаемые навыки, человек с ними не рождается.

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

Всё начинается с поиска. Ценность информации в сети определяет сам искатель - его цели и задачи. Обходные пути найдутся, если сознательно искать запрещённые ресурсы или контент.

Цель нашего контент-фильтра прежде всего защитить пользователей от случайного контента, который специально не искали.

Отдельно придумываем механизмы борьбы с направленным поиском запретных ресурсов. В этом "помогают" школьные хулиганы. Иногда всем отделом вспоминаем былые школьные шалости.

Что такое контент-фильтр?

Контент-фильтр мы определяем как программу, которая блокирует доступ к веб-сайтам с содержимым запрещённым для просмотра. У других производителей программных продуктов определение отличается.

Стандарт, который описывает технические аспекты блокировки и фильтрации интернет-услуг называется RFC7754.

Подробно рассматривать сетевой (IP-адреса) и транспортный уровень (порты) блокирования не будем. Это темы для отдельных статей. Продукты, где эти уровни в составе контент-фильтра, предлагают единое меню настроек. Это вводит в заблуждение пользователя продукта. Дело в том, что проверка контента работает на прикладном уровне: URI или содержание страниц.

Блокировка типа Deep Packet Inspection основана на доступе к данным на уровне приложения. Такие системы рассматриваются как менее нежелательные. Влияет детализация и отсутствие ущерба контенту или услугам, не связанным с целью блокировки.

Получить доступ к контенту и проверить его можно только при наличии SSL-сертификатов на конечных узлах сети. Обычно системы фильтрации предоставляют собственные динамически генерируемые сертификаты HTTPS. Так контент-фильтр действует по принципу  «человек посередине» (MITM).

Фильтрация организуется двумя способами:

  1. работа по "чёрному" списку: РАЗРЕШИТЬ всё кроме;

  2. работа по "белому" списку: ЗАПРЕТИТЬ всё кроме.

Ведение черного списка требует его постоянного обновления. Нужно добавлять новые записи и убирать записи, при удалении нежелательного контента.

При использовании белого списка нужно следить за актуальностью разрешенных ресурсов и добавлять новые. Часто обновление белого списка не успевает за потребностями пользователей сети в новых ресурсах.

Распространённый вид контент-фильтра - веб-фильтр. Он проверяет HTTP-запросы, чтобы определить запрашиваемый URI. Дальше происходит сравнение его с URI записей черного или белого списка. Запроса выполняется, только если это разрешено правилами веб-фильтра.

Анализа URI в веб-фильтре не происходит. У него есть только списки для с равнения с готовым решением по ресурсу. Поэтому веб-фильтр это не контент-фильтр, а только один из инструментов системы фильтрации.

Примеры решений контентной фильтрации

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

UserGate

Модуль фильтрации в составе UTM решения имеет гибридный состав. Заявлено:

  1. безопасный поиск (через замену DNS и подмену запросов к поисковым системам с включением параметров безопасного поиска в URL);

  2. блокировка рекламы;

  3. может внедрять скрипт непосредственно в проверяемую страницу;

  4. журнал поисковых запросов пользователей;

  5. блокировка приложений популярных социальных сетей.

К проверке контента относятся пункты 2 и 3. Причём, если блокировка рекламы идёт через анализ URL, то это получается веб-фильтр и проверка содержимого страниц не происходит. 

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

Остальные пункты это добавление модулей прокси и межсетевого экрана к настройке ограничений запросов пользователей. Они работают до этапа анализа содержимого страниц, либо на основании присвоенной ресурсу категории. Примеры списков доменов включают варианты с использованием глобов - шаблонов поиска.

На сайте компании упоминаются морфологические словари. В обзорном видео заявляется, что будут искаться и блокироваться все производные словоформы от заданных слов или словосочетаний в словаре. Можно составлять и добавлять свои словари. Этот функционал непосредственно работает с содержанием (контентом) проверяемой страницы.

Имеется список категорий с указанием риска, то есть веса при оценке опасности контента. Можно проверить категорию ресурса в программе, перед тем как добавить в списки блокировки. Если пользователь не согласен с категорией ресурса, то может направить заявку на корректировку категории.

Для фильтрации требуется установка SSL-сертификата на конечных узлах. Проверка ресурса происходит по набору правил для блокировки сверху вниз. Правила могут включать необходимые проверки, которые описаны выше.

SkyDNS

Для клиента выступает как облачный сервис по фильтрации URL-запросов по категориям. 

Имеет собственную систему классификации SkyDNS OctoDB на базе машинного обучения для выявления вредоносных узлов и классификации интернет-ресурсов. Содержит 180 млн. доменов в базе индекса.

Решение SkyDNS DB может быть интегрировано в сторонние продукты.

Категоризация ресурсов происходит через ручной и машинный анализ контента. Далее каждому доменному имени и IP-адресу записываются соответствия к категориям. Ресурс может относиться к нескольким категориям по принципу весов.

Решение использует проверку контента ресурсов только на этапе категоризации. Проверка содержимого веб-страниц при использовании продукта не происходит.

Ideco UTM

Контентная фильтрация на сервере Ideco UTM реализована на основе данных о веб-трафике, получаемых от модуля проксирования веб-трафика. То есть работает как веб-фильтр без проверки содержимого ресурсов.

В настройках контентной фильтрации есть дополнительные параметры: 

  • Блокировать протоколы QUIC и HTTP/3 (в основном для сервисов Google);

  • Безопасный поиск (через замену DNS и подмену запросов к поисковым системам с включением параметров безопасного поиска в URL).

Для категоризации сайтов используют интегрированное решение SkyDNS DB. Есть форма обратной связи для корректировки категории ресурса.

Фильтрация работает через проверки правил, которые применяются сверху вниз по таблице до первого совпадения. Правила, расположенные ниже, в таком случае проверяться не будут.

Кроме категорий веб-ресурсов есть проверка файлов, блокируемых по расширениям и MIME-типам:

  • исполняемые файлы;

  • архивы;

  • видеофайлы;

  • аудиофайлы;

  • flash-видео;

  • active-X;

  • torrent-файлы;

  • документы.

Эти предустановленные группы файлов редактировать нельзя.

Требуется установка SSL-сертификата на конечные устройства пользователей для полной расшифровки https-запросов.

Есть сервис проверки настроек контентной фильтрации по блокировке опасных ресурсов и файлов. То есть проверить состояние фильтрации до установки Ideco UTM.

NetPolice

Программа для установки на персональные компьютеры пользователей. Работает на операционных системах:

  • NetPolice PRO:

    • Microsoft Windows XP Professional & Home (SP2);

    • Microsoft Windows 7 SP2 / 8.1 / 10 (32/64 бит).

  • NetPolice Child:

    • Microsoft Windows 10 сборка 1809 и выше;

  • NetPolice Linux (управление через веб-интерфейс):

    • ALT Linux 10 (64 бит);

    • ASTRA Linux (x64).

Возможности фильтрации:

  • анализ URL и по ключевым словам (русский и английский языки);

  • удаление запрещённых слов из поисковых запросов и на страницах сайтов (предустановленные списки терминов);

  • блокировка рекламных баннеров на сайтах;

  • можно редактировать списки фильтрации;

  • собственные категории фильтрации (до 74);

  • блокирование скачиваемых файлов по расширениям (можно редактировать);

  • разные профили фильтрации для разных пользователей;

  • установка времени работы и включения/выключения фильтра;

  • блокировка сервисов бесплатной почты и передачи почтовых сообщений;

  • отмена блокировки ресурса на определённый промежуток времени (30 мин/1 час).

Получается, что к контентной фильтрации относится блокировка баннеров и работа по ключевым словам. Работа с категориями - это уже веб-фильтр.

Для версии NetPolice Child указано, что фильтрация не будет работать при подключении к сети Интернет через прокси-сервер.

Traffic Inspector Next Generation

Система фильтрации работает через прокси-сервер (Squid). Требуется установка SSL-сертификата на конечные устройства пользователей для полной расшифровки https-запросов.

Доступны следующие типы фильтрации:

  • по IP-адресам (допускается указание одиночных IP-адресов и IP-сетей);

  • по портам назначения (можно использовать диапазоны и комментарии);

  • по User Agent (по типу браузера, включая использование регулярных выражений);

  • по MIME-типам (можно использовать регулярные выражения);

  • по URL (белые, чёрные и внешние списки, включая использование регулярных выражений);

  • по скачиваемым спискам (простой текстовый файл, загруженный в систему из внешнего источника).

Внешними источниками для скачиваемых списков и категорий могут быть:

  • Pgl.yoyo.org - блокировка рекламы;

  • Shallalist.de - бесплатный для личного использования и частично-платный для коммерческого использования;

  • URLBlacklist.com - платный;

  • Squidblacklist.org - платный.

Система фильтрации также работает со списками адресов IP и URL от Роскомнадзора. В систему можно добавить свои списки и использовать списки Netpolice (требуется отдельная лицензия).

Доступна установка дополнительных плагинов в продукт. Добавление плагина сервиса ICAP позволяет делать выборочную фильтрацию контента и проверку антивирусом. С его помощью можно блокировать категории видео Youtube.

Lidrekon.ru контент-фильтр

Бесплатное расширение для браузера. Есть черный и белый список. Открытую страницу сайта можно сразу добавить в нужный список.

В списки можно добавлять ссылки, домены, ключевые слова, включая регулярные выражения.

Сначала идет проверка ресурса по белому списку, потом по черному списку. Последним проверяется список ключевых слов по контенту страницы.

Решение не требует установки SSL-сертификатов. Нужно только установить и настроить расширение на всех конечных устройствах пользователей. Есть установщики, состоящие из браузер+расширение.

Устройство фильтрации ресурсов в ИКС

Прежде чем рассказывать о контент-фильтре в ИКС, разберём устройство нашей системы проверки и фильтрации сетевого трафика (далее - система).

Система настраивается через меню отдельных сервисов. Так абстракции сервисов продукта не смешиваются и позволяют задать нужный уровень проверки трафика.

Основными узлами системы являются прокси-сервер Squid и сервер ICAP. Для полной расшифровки https-запросов на конечные устройства пользователей требуется установка SSL-сертификата. Он создается отдельно в меню настроек сертификатов ИКС.

Прокси-сервер отвечает за сетевой (IP-адреса) и транспортный уровень (порты) блокирования. Он расшифровывает https-запрос в Интернет и передаёт серверу ICAP. Тот проверяет запрос через сервисы защиты (если включены):

  • Категории трафика (IP, URL, домены, расширения файлов, MIME-типы и регулярные выражения). Применяются в РазрешающихЗапрещающих правилах прокси и Исключениях. Можно добавлять свои;

  • веб-фильтр Garnet (собственная разработка);

  • веб-фильтр SkyDNS (интегрированный продукт).

Разрешающие правила выше по приоритету. Проверки по Запрещающим правилам идут до первого совпадения (блокировки).

После проверки запроса, прокси-сервер отправляет его по назначению в Интернет. Когда приходит ответ, прокси-сервер передает его содержимое серверу ICAP для дальнейшей проверки. Её выполняет контент-фильтр ИКС.

Результатом выполнения запроса будет страница веб-ресурса или страница блокировки.

Рис. 1 Система фильтрации ресурсов ИКС
Рис. 1 Система фильтрации ресурсов ИКС

Контент-фильтр в ИКС

Контент-фильтр - отдельный модуль в ИКС, который проверяет текстовое содержимое веб-ресурсов. Содержимое видео-потока или картинок фильтр "не видит". В отдельных случаях фильтр проверяет текст описания и даже теги к видео, аудио или картинке, что оставляет шанс их заблокировать.

Для работы требуется настроенный модуль прокси (Squid) с расшифровкой трафика и установка SSL-сертификата на конечных узлах сети.

Проверка контента происходит по спискам:

  • ключевые слова - слова или набор символов (проверяется один к одному);

  • регуляные выражения - записи на языке регулярных выражений.

В платной версии модуля доступны списки МинЮста, ГосНаркоКонтроля и рекомендательный список для школ. Отдельные записи или целый список можно отключить. Обновление по кнопке или расписанию.

Можно использовать собственные списки, включая регулярные выражения.

Состав и принцип работы

Контент-фильтр ИКС состоит из контроллера (на Golang) и подчинённых скриптов-воркеров (на Perl). Воркеры работают изолировано и ничего не знают друг о друге. Контроллер выполняет роль посредника и балансировщика между сервером ICAP и воркерами. Всю полезную работу по проверке выполняют воркеры.

Рис. 2 Общая схема состава и принципа работы контент-фильтра ИКС
Рис. 2 Общая схема состава и принципа работы контент-фильтра ИКС

Контроллер запускает по четыре воркера на каждое физическое ядро процессора в системе. Если на сервере с ИКС двухядерный процессор, то запустятся восемь воркеров. 

Язык Perl выбрали потому, что он создан для работы с текстами и даёт полную поддержку регулярных выражений - PRCE. Язык Golang позволил быстро и просто реализовать распределение запросов по воркерам.

На вход контроллера приходит запрос и данные для проверки:

  1. URL - адрес запрашиваемого ресурса;

  2. Путь к упакованному контенту;

  3. MIME-тип данных: text/htmlapplication/jsontext/javascriptapplication/javascriptapplication/x-javascript;

  4. Тип сжатия: gzipdeflatebr или без сжатия.

Этот запрос передаётся свободному воркеру, который возвращает результат проверки.

В ответе серверу ICAP контроллер отправляет решение о пропуске или блокировке запроса. Если результат проверки блокировка, то передаётся и запись базы контент-фильтра, которая найдена в тексте.

Принцип работы контроллера:

  1. запускаются сканирующие процессы (горутины) воркеров;

  2. подключение к stdin/stdout/stderr воркера;

  3. запускается постоянный цикл обработки запросов от сервера ICAP;

  4. приём и отправка входных данных запроса на stdin первого свободного воркера;

  5. ожидание ответа на stdout от воркера;

  6. передача ответа серверу ICAP;

  7. ожидание нового запроса от сервера ICAP.

Принцип работы воркера:

  1. загружается база контент-фильтра (ключевые слова и регулярные выражения); 

  2. начинается постоянный цикл приема входных запросов;

  3. устанавливается таймер для проверки запроса;  

  4. входные данные отправляются на проверку; 

  5. происходит проверка URL на содержание слов из базы (например в URL поисковых запросов);

  6. если в URL ничего не найдено, происходит распаковка контента;  

  7. происходит извлечение текста из контента в зависимости от MIME-типа контента; 

  8. происходит сканирование текста на совпадение с записями базы;  

  9. возвращается результат сканирования в stdout воркера;

  10. ожидание следующих входных данных на stdin.

Возможности:

  • Проверка текста запросов URL;

  • Проверка описаний и текста любых элементов веб-ресурса;

  • Внутренний кэш воркера часто блокируемых записей базы;

  • Замена одним регулярным выражением сразу несколько записей базы из слов;

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

Планы на будущее

  • Добавить собственные списки по категориям в базу контент-фильтра;

  • Написать примеры по составлению записей регулярных выражений для блокирования отдельных категорий ресурсов;

  • Добавить возможность задавать пользователям разные списки для проверки;

  • Добавить возможность задавать параметр времени проверки и ответ по умолчанию;

  • Оптимизировать скорость работы проверки текста (бесконечно);

  • Переписать всё на Rust (шутка, но интересно).

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


  1. tvr
    15.11.2022 20:40
    +4

    Цель — дать минимум информации, чтобы ориентироваться в теме и выбрать продукт.

    Звучит, как минимум, неоднозначненько/s.


  1. saipr
    16.11.2022 10:40
    +1

    Уязвимая группа пользователей сети — дети. Они только учатся отличать котиков от наркотиков.

    И взрослые тоже, когда не могут отличить, например, аналитику от анала. Был случай когда неудачная настройка котент-фильтра лишила доступа пользователей к сайтам с аналитической информацией по финансовым рынкам.


    1. Konvergent Автор
      16.11.2022 11:52

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


  1. gosox
    16.11.2022 11:53

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


    1. Konvergent Автор
      16.11.2022 11:56

      Когда я ещё работал админов в школе, то у нас был Интернет Цензор. Но уже в 2017 мы от него отказались. Сейчас проект не развивается.


      1. mrkaban
        17.11.2022 05:35
        +2

        Для фильтрации сайтов с эротическим контентом можно взять яндекс ДНС, семейный или как называется, забыл. Это не 100%, но это бесплатно и довольно эффективно. В виде отдельного приложения плюс ко всему фильтруют то, что пользователь пишет в браузере =) Тоже где-то в 2009 с этом сталкивался.


  1. a_metelkina
    16.11.2022 16:39

    Сейчас школы и средние учебные заведения массово подключают к ЕСПД (единая сеть передачи данных). Это очередная попытка причесать всех под одну гребенку? Как когда-то было с бесплатным Интернет Цензором, который в итоге затух. Как думаете, насколько успешен будет этот проект?


    1. Konvergent Автор
      16.11.2022 16:54

      Моё мнение:идея выгодна школам. Но только при условии, что исполнение будет помогать школам решать проблемы, а не добавлять их.
      То есть, общая система фильтрации для школ в идеале:

      • позволит обменивать знаниями по её настройками;

      • обслуживать эту систему в школах может выделенный отдел ИРО;

      • не надо заморачиваться с контрактами и покупкой, выбирать;

      • будет много обратной связи и данных по работе системы для исправления и улучшений.

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


  1. D1abloRUS
    17.11.2022 11:39

    Белые списки1!! Только белые списки11!!!! А то насрут в мозг

    Правда ведь?


    1. mrkaban
      17.11.2022 11:51
      +1

      Да они применяются в первую очередь в школах, или вы хотите, чтобы ваш ребенок в школе эротику смотрел?


      1. D1abloRUS
        17.11.2022 11:52
        -1

        Я не против, что плохого в эротике?


        1. AdnreiZubr
          18.11.2022 04:53

          Значит детей еще нет, следовательно и рассуждать можешь только с точки зрения потерпевшего


          1. D1abloRUS
            18.11.2022 08:49

            Могу рассуждать, как мне угодно. В следующий раз, обязательно спрошу Вашего мнения, что лучше для моих детей.


    1. Konvergent Автор
      17.11.2022 12:32

      Да, белые списки есть. Есть и другие варианты списков.

      А ещё есть вариант, когда люди сами себе фильтр от внешнего информационного шума настраивают. Например блокировщики рекламы.


  1. Toshykan
    18.11.2022 05:30

    Что ж, запрещать всегда проще, чем обучать. НУ и да - запретный плод всегда сладок какбэ...