Вопрос или проблема
Введение:
В настоящее время я разрабатываю программное обеспечение, которое требует возможности динамически фильтровать DNS-запросы (возможно, в будущем фильтрация другого сетевого трафика на основе IP-адресов, связанных с этими доменами).
Одна из основных причин для этого заключается в том, что мы идеальным образом хотели бы использовать только белый список, но из-за природы бизнеса нам регулярно приходится посещать сайты за пределами этого списка. Если слишком легко просто добавлять сайты в белый список, это снимает многие преимущества такого подхода.
Конкретно я смотрю на фильтрацию DNS-запросов на основе некоторых статистических свойств, включая содержание страниц и историю сетевого трафика к связанным IP-адресам. В настоящее время у меня есть программа на Python, которая вычисляет вероятности того, что сайт попадает в определенные категории (например, сайт с вредоносным ПО, сайт XYZ и т.д.). Это анализирует некоторые ключевые слова на странице и также учитывает недавнюю историю трафика. Это означает, что правила фильтрации могут изменяться с каждой минуты. Я знаю, что есть множество различных решений, которые хорошо работают с фиксированными списками и статическими правилами, но я хочу генерировать черные списки динамически на основе трафика, который проходит через сеть от различных пользователей.
Вопрос:
Существуют ли уже решения, которые могут создавать черные и белые списки на основе динамического набора правил, которые генерируются из другого процесса?
Если нет программного обеспечения с простым в использовании API, то какое прокси-программное обеспечение было бы самым простым для меня:
- написать плагин? или
- модифицировать исходный код напрямую?
Наличие открытой лицензии было бы огромным преимуществом (потому что я планирую сделать большую часть этого кода открытым, если лицензии это позволят).
Но также приветствуются и другие предложения.
WinGate имеет встроенный DNS-сервер, а также SDK для расширения, позволяющий писать фильтры, которые могут анализировать веб- и другой трафик (а также расширять WinGate во многих других областях).
SDK задокументирован здесь
Встроенная система событий/политик позволяет создавать собственные DNS-ответы (в настоящее время только A-записи), основанные на данных из: внутренних (глобальных, счетчиков и т.д.), запросе или внешних (файл или база данных) источниках.
Трафик DNS не ограничен лицензией, поэтому если вы просто анализируете DNS, вам даже не нужно будет приобретать лицензию. Однако мы предлагаем бесплатную лицензию на 3 параллельных пользователя (скоро будет расширена до 10 пользователей). Мы также предлагаем бесплатную поддержку и готовы расширить наш SDK / API специально для фильтрации DNS.
Отказ от ответственности: я работаю в Qbik, которая является автором WinGate.
Ответ или решение
Платформы прокси-сервера для разработки плагина фильтрации
Введение
В условиях, когда компании нуждаются в гибком подходе к фильтрации сетевых запросов, выбор правильной платформы для реализации динамической фильтрации DNS-запросов становится ключевым моментом. Ваша задача разработать программное обеспечение, способное адаптироваться к изменяющимся условиям сети и обеспечивать эффективную фильтрацию трафика на основе индивидуальныхуровней риска.
Постановка задачи
Вы ищете решение, которое позволит динамически формировать черные и белые списки на основе анализа трафика и контента веб-страниц. Это подразумевает необходимость интеграции с системой, которая поддерживает динамическое обновление правил фильтрации.
Существующие решения
На сегодняшний день существует несколько решений, позволяющих осуществлять динамическую фильтрацию DNS-запросов, но для достижения ваших целей важно выбрать платформу, которая поддерживает:
- Плагинную архитектуру: Это позволит вам разработать фильтры, соответствующие конкретным потребностям вашего бизнеса.
- Источники данных: Возможность интеграции и работы с внешними источниками данных для обновления правил фильтрации в реальном времени.
- Открытые лицензии: Это дает возможность модифицировать и делиться вашим кодом с сообществом.
Рекомендации по платформам
-
WinGate
WinGate предлагает встроенный DNS-сервер и расширяемый SDK, который позволяет разрабатывать фильтры для анализа веб-трафика. SDK хорошо документирован и предоставляет возможность создавать пользовательские DNS-ответы на основе множества источников данных, включая внутренние и внешние базы данных.- Плюсы:
- Поддержка динамического изменении правил фильтрации.
- Бесплатная лицензия для до 10 пользователей, что идеально подходит для тестирования и малых компаний.
- Отличная поддержка от разработчиков.
- Документация: WinGate SDK
- Ссылка на продукт: WinGate
- Плюсы:
-
Squid Proxy
Хотя Squid исторически используется для кэширования и фильтрации веб-трафика, его гибкость делает его подходящим вариантом для вашей задачи. Squid позволяет использовать различные методы фильтрации и правил, которые могут быть динамически изменены, хотя за этим может потребоваться больше ручной работы по сравнению с WinGate.- Плюсы:
- Высокая степень настройки и возможностям расширения.
- Обширное сообщество и множество существующих плагинов.
- Документация: Squid Documentation
- Плюсы:
-
Nginx с модулями
Nginx, благодаря своей высокой производительности и гибкой архитектуре, может быть настроен для работы в качестве обратного прокси-сервера с фильтрами, написанными на Lua. Это также позволяет модифицировать логику обработки запросов.- Плюсы:
- Высокая производительность и большой потенциал для модификаций.
- Поддержка скриптов на Lua для разработчиков.
- Документация: Nginx Module Developer’s Guide
- Плюсы:
Заключение
Для решения вашей задачи по организации динамической фильтрации DNS-запросов рекомендую рассмотреть WinGate как одно из наиболее удобных и многофункциональных решений. Его возможности для написания плагинов и расширяемость делают его подходящим выбором для ваших требований. Тем не менее, если вы предпочитаете открытые решения, стоит обратить внимание на Squid или Nginx, которые также предлагают значительный потенциал для настройки и интеграции.
Корректно выбранная платформа, соответствующая вашим требованиям к динамическому обновлению фильтров и легкости разработки, будет способствовать успешной реализации вашего проекта.