Наличие функционала Statefull Firewall с поддержкой до L7 включительно (FWaaS)¶
При реализации значительного количества задач OpenStack и AccentOS по взаимодействию с сетью — проксирование, межсетевое экранирование, балансировка нагрузки, высокая доступность сети — необходимо соответствующее программное обеспечение.
Роль HAProxy в сетевой инфраструктуре¶
HAProxy — это высокопроизводительный, открытый прокси-сервер и балансировщик нагрузки для TCP и HTTP-приложений. Он распределяет входящий трафик между несколькими серверами (бэкендами), обеспечивая высокую доступность, масштабируемость и отказоустойчивость.
Примечание
HAProxy используется крупными IT-компаниями, подходит для веб-серверов с очень высокой нагрузкой и часто развертывается по умолчанию на облачных платформах.
HAProxy является stateless firewall, поддерживая различные алгоритмы балансировки (Round Robin, Least Connections) для уровня L4 (TCP) и L7 (HTTP), реализуя при этом значительное количество statefull функций.
Statefull возможности HAProxy¶
HAProxy выступает в роли высокопроизводительного statefull прокси-сервера с отслеживанием состояния, который контролирует активные соединения и состояние сессий на уровне приложений. Хотя его часто используют для балансировки нагрузки, он обеспечивает безопасность приложений, фильтруя трафик на основе сложных условий уровня 7 (HTTP), списков контроля доступа (ACL) и отслеживания информации о состоянии для блокировки вредоносного поведения.
Ключевые аспекты HAProxy как средства обеспечения безопасности с сохранением состояния:
Списки контроля доступа (ACL)
HAProxy использует ACL для анализа запросов и ответов, что позволяет блокировать IP-адреса, ограничивать пути URL или проверять заголовки HTTP, обеспечивая фильтрацию приложений с сохранением состояния.
Проверка состояния (уровень 7)
В отличие от стандартных межсетевых экранов, которые отслеживают только IP-адрес/порт, HAProxy отслеживает состояние сессий, что позволяет ему управлять протоколом HTTP keep-alive, таблицами stick-tables и сложной маршрутизацией на основе данных приложения.
Stick-Tables
Эти инструменты позволяют отслеживать поведение клиентов во времени, что дает возможность блокировать пользователей, превышающих заданные показатели запросов (например, путем ограничения скорости запросов).
PacketShield (только для ALOHA)
На оборудовании HAProxy ALOHA выделенный модуль на уровне ядра, называемый PacketShield, действует как высокопроизводительный межсетевой экран с отслеживанием состояния, защищая от объемных DDoS-атак и TCP-флудов.
Предупреждение
Для стандартных развертываний Linux HAProxy следует использовать в паре с межсетевым экраном уровня ядра, например iptables, nftables или ufw.
Применение на периметре и внутри инфраструктуры¶
HAProxy может применяться как:
- На периметре облачной инфраструктуры — для фильтрации входящего трафика, балансировки нагрузки и защиты от DDoS-атак
- Внутри инфраструктуры (на уровне vNIC) — для маршрутизации трафика между виртуальными машинами и контейнерами, обеспечения безопасности на уровне приложений
Достоинства HAProxy¶
Производительность
HAProxy хорошо масштабируется с помощью потоков. Это стало возможным благодаря:
- Событийно-ориентированной архитектуре, позволяющей чрезвычайно быстро реагировать на события ввода-вывода
- Параллелизму на SMP-машинах, обеспечиваемому облегченной многопоточностью
- Планировщику задач, постоянно переключающемуся между низкой задержкой и высокой пропускной способностью
- Постоянному стремлению к экономии ресурсов на каждом уровне архитектуры
Надежность
Обеспечение бесперебойной работы веб-серверов благодаря:
- Надежности и обзору происходящего
- Проверке средств защиты от некорректного поведения
- Встроенным проверкам на недопустимые ситуации (невозможные условия, бесконечные циклы и т.д.), которые в других продуктах могут привести к сбоям, но в HAProxy немедленно вызовут сбой с дампом проблемы
Безопасность
Является очень важным аспектом балансировщика нагрузки, поскольку он работает на периферии сети и принимает весь некорректный трафик. HAProxy задействует ряд защитных мер:
- Chroot
- Снижение привилегий
- Предотвращение создания форков
- Строгая проверка протокола
- Проверка на наличие невозможных состояний
- Подробная трассировка в случае обнаружения нарушений
Примечание
Можно усилить защиту операционной системы, ограничить количество открытых портов и доступных сервисов, но сам балансировщик нагрузки остается уязвимым. Поэтому принцип «нулевого количества ошибок» нецелесообразен, и HAProxy использует многоуровневую защиту.
Интеграция с OpenStack¶
В экосистеме OpenStack функционал statefull firewall реализуется через:
- FWaaS (Firewall as a Service) — расширение Neutron для управления межсетевыми экранами
- Octavia — сервис балансировки нагрузки, который может использовать HAProxy в качестве драйвера
- Neutron — базовая сетевая служба с поддержкой security groups