Архитектура

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

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

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

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

_images/waf_host.png

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

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

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

_images/waf_host_agents_v2.png

Модуль HAProxy распределяет трафик на несколько фильтрующих нод Weblock.Agent. Брокер сообщений Kafka поддерживает распределение трафика по фильтрующим нодам. Ноды Weblock.Agent могут располагаться на одном сервере или для повышения отказоустойчивости – на нескольких серверах. Также для повышения отказоустойчивости лучше Систему и балансировщик нагрузки устанавливать на разные серверы.

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

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

_images/garda_waf_scheme3.png

Режим 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.

_images/waf_host.png _images/Weblock_Logos_small.png