Архитектура¶
Отказоустойчивость¶
Отказоустойчивость обеспечивается балансировкой сетевой нагрузки. Система использует прокси-сервер, выступающий в роли балансировщика сетевой нагрузки. Также балансировка нагрузки осуществляется встроенными механизмами в решениях брокера сообщений и технологией оркестрации и кластеризации контейнеров.
Отказоустойчивость гарантируется за счет возможности масштабирования, реализованного в Системе, при котором добавляются дополнительные экземпляры сервисов и веб-серверов, позволяя распределять трафик между ними. Масштабирование достигается за счет увеличения количества инстансов (дополнительных экземпляров) либо выделенных ресурсов.
Конфигурация single-install предполагает установку Системы без балансировщика нагрузки и без репликации сервисов с помощью оркестрации и кластеризации контейнеров.

Отказоустойчивость посредством масштабирования репликацией защищаемых веб-серверов реализована в Системе с помощью веб-сервера Nginx. Трафик автоматически распределяется между работающими прокси-серверами. Прокси-сервера размещаются на виртуальных серверах. Для повышения отказоустойчивости прокси-сервера могут размещаться на нескольких серверах.
Режим bypass включается при отказе прокси-сервера или оборудования, тогда трафик перераспределяется между работающими прокси-серверами.
В конфигурации agents-use отказоустойчивость реализована посредством масштабирования, добавлением дополнительных экземпляров сервисов, с помощью модуля-балансировщика нагрузки HAProxy.

Модуль HAProxy распределяет трафик на несколько фильтрующих нод Weblock.Agent. Брокер сообщений Kafka поддерживает распределение трафика по фильтрующим нодам. Ноды Weblock.Agent могут располагаться на одном сервере или для повышения отказоустойчивости – на нескольких серверах. Также для повышения отказоустойчивости лучше Систему и балансировщик нагрузки устанавливать на разные серверы.
Режим bypass включается при недоступности фильтрующей ноды, тогда трафик поступает на доступный инстанс модуля Weblock.Agent (экземпляр модуля). Режим bypass страхует от недоступности сервера и недоступности фильтрующей ноды.
Конфигурация k8s обеспечивает резервирование компонентов с помощью оркестрации и кластеризации контейнеров Kubernetes. Например, можно использовать кластер из нескольких single-install реплик.

Режим bypass включается при отказе кластера Kubernetes, тогда трафик перераспределяется между работающими кластерами Kubernetes.
Для полной отказоустойчивости можно сочетать конфигурации agents-use и k8s.
Процедура включения режима bypass зависит от выбранной концепции архитектурного решения «Weblock.» и состоит из следующих этапов:
при недоступности фильтрующей ноды модуль HAProxy перераспределяет трафик на доступные инстансы модуля Weblock.Agent. Брокер сообщений Kafka направляет трафик на соответствующий инстанс.
при отказе прокси-сервера веб-сервер Nginx перераспределяет трафик на доступные прокси-серверы.
при отказе кластера Kubernetes, экземпляра базы данных и реплики Системы в целом платформа Kubernetes автоматически подключает функционирующий контейнер или переключает трафик на работающую реплику Системы.
Структура Системы¶
Weblock.Agent – фильтрующая нода, базовый модуль защиты веб-приложений, выполняющий проверку трафика пользователя на наличие вредоносного кода, а также производящий блокировку в случае обнаружения атак. Модуль служит динамической библиотекой Веб-сервера.
Weblock.NginxConnector – сервис управления конфигурацией Веб-сервера, предназначенный для установки под защиту веб-ресурсов.
Weblock.Controller – сервис, реализующий оркестрацию фильтрующих узлов через брокер сообщений. Оркестрация обеспечивает координацию и управление системами и службами, а также взаимодействие сервисов между собой. Сервис осуществляет хранение и передачу настроек модуля Weblock.Agent. Предоставляется API для интеграции Системы с другими системами. Сервис снабжен механизмом предотвращения потери сообщений в случае перезапуска сервиса.
Weblock.OIDC – сервис, реализующий аутентификацию, авторизацию и учет доступа.
Weblock.Reporter – сервис управления отчетами.
Weblock.Validator – сервис валидации конфигураций ModSecurity перед применением изменений на фильтрующую ноду Agent. Конфигурации ModSecurity – наборы правил сигнатурного анализа для обнаружения атак.
Weblock.Geocoder – сервис сопоставления IP-адреса и страны источника трафика.
Weblock.Audit – сервис логов.
Weblock.ML-ADS (опционально) – сервис, применяющий алгоритмы машинного обучения, позволяющие автоматически настроить защитные механизмы Системы.
Weblock.Health – инспектор состояния сервисов.
Weblock.ILogger – сервис визуализации результатов, формирует таблицу атак и дашборд. Использует базу данных на выбор: PostgreSQL или ClickHouse.
Weblock.LocationAnalyzer – сервис анализатора веб-страниц сервера кластера, использует базу данных ClickHouse.
Kafka – брокер сообщений, механизм взаимодействия компонентов Системы, который используется в качестве транспорта и временного хранилища.
Reverse Proxy (Веб-сервер) – обработчик трафика веб-приложения, работающий, как в режиме обратного прокси, так и как самостоятельный Веб-сервер. Передает легитимные запросы от пользователя конечному веб-приложению. Обеспечивает репликацию защищаемых веб-ресурсов и балансировку трафика.
Weblock.Front – веб-интерфейс, Личный кабинет для удобной работы с Системой, предназначенный для визуализации атак, проведения аналитики, получения отчетов, а также настройки Системы.
Weblock.Scanner (опционально) — автоматизированный сканер для выявления уязвимостей защищаемых веб-приложений и автоматического формирования правил ModSecurity, устраняющих уязвимости.
PSQL (PostgreSQL) – основная база данных.
ClickHouse – база данных сервисов Weblock.ILogger и Weblock.LocationAnalyzer.

