Архитектура

Отказоустойчивость

Отказоустойчивость обеспечивается балансировкой сетевой нагрузки. «Weblock.» использует прокси-сервер, выступающий в роли балансировщика сетевой нагрузки. Также балансировка нагрузки осуществляется встроенными механизмами в решениях брокера сообщений и технологией оркестрации и кластеризации контейнеров.

Отказоустойчивость гарантируется за счет возможности масштабирования, реализованного в «Weblock.», при котором добавляются дополнительные экземпляры сервисов и веб-серверов, позволяя распределять трафик между ними. Масштабирование достигается за счет увеличения количества инстансов либо выделенных ресурсов.

Конфигурация single-install предполагает установку «Weblock.» без балансировщика нагрузки и без репликации сервисов с помощью оркестрации и кластеризации контейнеров.

_images/garda_waf_scheme2.png

Отказоустойчивость посредством масштабирования репликацией защищаемых веб-серверов реализована в «Weblock.» с помощью веб-сервера Nginx. Трафик автоматически распределяется между работающими прокси-серверами. Прокси-сервера размещаются на виртуальных серверах. Для повышения отказоустойчивости прокси-сервера могут размещаться на нескольких серверах.

Режим bypass включается при отказе прокси-сервера или оборудования, тогда трафик перераспределяется между работающими прокси-серверами.

В конфигурации agents-use отказоустойчивость реализована посредством масштабирования, добавлением дополнительных экземпляров сервисов, с помощью модуля-балансировщика нагрузки HAProxy. Модуль HAProxy распределяет трафик на несколько фильтрующих нод Weblock.Agent. Брокер сообщений Kafka поддерживает распределение трафика по фильтрующим нодам. Ноды Weblock.Agent могут располагаться на одном сервере или для повышения отказоустойчивости – на нескольких серверах. Также для повышения отказоустойчивости лучше «Weblock.» и балансировщик нагрузки устанавливать на разные серверы.

Режим bypass включается при недоступности фильтрующей ноды, тогда трафик поступает на доступный инстанс модуля Weblock.Agent. Режим bypass страхует от недоступности сервера и недоступности фильтрующей ноды.

_images/garda_waf_scheme1.png

Конфигурация k8s обеспечивает резервирование компонентов с помощью оркестрации и кластеризации контейнеров Kubernetes. Например, можно использовать кластер из нескольких single-install реплик.

_images/garda_waf_scheme3.png

Режим bypass включается при отказе кластера Kubernetes, тогда трафик перераспределяется между работающими кластерами Kubernetes.

Для полной отказоустойчивости можно сочетать конфигурации agents-use и k8s.

Процедура включения режима bypass зависит от выбранной концепции архитектурного решения «Weblock.» и состоит из следующих этапов:

  • при недоступности фильтрующей ноды модуль HAProxy перераспределяет трафик на доступные инстансы модуля Weblock.Agent. Брокер сообщений Kafka направляет трафик на соответствующий инстанс.

  • при отказе прокси-сервера веб-сервер Nginx перераспределяет трафик на доступные прокси-серверы.

  • при отказе кластера Kubernetes, экземпляра базы данных и реплики «Weblock.» в целом платформа Kubernetes автоматически подключает функционирующий контейнер или переключает трафик на работающую реплику «Weblock.».

Структура Weblock.

Weblock.Agent – фильтрующая нода, базовый модуль защиты веб-приложений, выполняющий проверку трафика пользователя на наличие вредоносного кода, а также производящий блокировку в случае обнаружения атак. Модуль служит динамической библиотекой Веб-сервера.

Weblock.Controller – сервис, реализующий оркестрацию сервисов через брокер сообщений. Оркестрация обеспечивает автоматическое размещение, координацию и управление системами и службами, а также описывает взаимодействие сервисов между собой. Weblock.Controller осуществляет хранение и передачу настроек модуля Weblock.Agent. Предоставляется API для интеграции «Weblock.» с другими системами, позволяя получать информацию о текущем состоянии сервисов, передавать изменение настроек. Weblock.Controller снабжен механизмом предотвращения потери сообщений в случае перезапуска сервиса.

Weblock.NginxConnector – сервис управления конфигурацией Веб-сервера, предназначенный для установки под защиту веб-ресурсов.

Weblock.Front – веб-интерфейс, Личный кабинет для удобной работы с «Weblock.», предназначенный для визуализации атак, проведения аналитики, получения отчетов, а также настройки «Weblock.».

Weblock.ML-ADS (опционально) – сервис, применяющий алгоритмы машинного обучения, позволяющие автоматически настроить защитные механизмы «Weblock.».

Weblock.Scanner (опционально) — автоматизированный сканер для выявления уязвимостей защищаемых веб-приложений и автоматического формирования правил ModSecurity, устраняющих уязвимости.

Weblock.Reporter – сервис управления отчетами.

Weblock.OIDC – сервис, реализующий аутентификацию, авторизацию и учет доступа.

Weblock.Audit – сервис логов.

Weblock.Geocoder – сервис сопоставления IP-адреса и страны источника трафика.

Weblock.ILogger – сервис визуализации результатов, формирует таблицу атак и дашборд. Использует базу данных на выбор: PostgreSQL или ClickHouse.

Weblock.LocationAnalyzer – сервис анализатора задач, использует базу данных ClickHouse.

Weblock.Health – инспектор состояния сервисов.

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

HAProxy – модуль-балансировщик нагрузки, обеспечивающий масштабирование фильтрующих нод Weblock.Agent. Серверное программное обеспечение.

Kafka – брокер сообщений, механизм взаимодействия компонентов «Weblock.», который используется в качестве транспорта и временного хранилища.

PostgreSQL – база данных.

ClickHouse – база данных.

_images/waf_scheme.png _images/Weblock_Logos_small.png