Status: In Review
💡 ПО Liberty Firewall является NGFW-системой и предназначена для комплексного обеспечения безопасности сети предприятия. Продукт включает в себя традиционные функции файервола, а также расширенные возможности, такие как глубокая проверка трафика и проактивная система обнаружения угроз. Liberty Firewall позволяет компаниям эффективно защищать сети, устройства и приложения от множества опасных атак, таких как уязвимости нулевого дня, программы-вымогатели, вредоносное ПО и другие. Помимо этого система исполняет функции предотвращения и обнаружения вторжений, содержит средства глубокой проверки пакетов (DPI) и распознавания контента (DLP).- Межсетевые экраны позволяют настраивать политики сети;
- Система обнаружения и предотвращения вторжений (IDS/IPS) блокирует использование уязвимостей сети;
- Система DLP предотвращает утечку ценной/чувствительной информации;
- Система DPI проводит глубокий анализ пакетов на основе заданных сигнатур;
- Спам-фильтр обнаруживает и блокирует нежелательные электронные письма, спам и фишинговые атаки;
- Прокси позволяет скрыть внутреннюю структуру сети;
- Контент и DNS фильтры позволяют управлять доступом к сайтам и данным с помощью единой панели управления;
- ПО поддерживает развертывание на кластере для работы в распределенном режиме;
| Название | Модуль | Функция | Статус | Текущая версия |
|---|---|---|---|---|
| fw-web-face | Web Application | Пользовательский интерфейс в веб-среде. Доступ к функционалу ПО через UI. | Разработка | 0.0.1 |
| firewall-api | Backend API | Функционал эндпоинтов системы. Бизнес-логика приложения. Обеспечивает взаимодействие между высокоуровневыми (Web Application) и низкоуровневыми (Core Controller, Suricata) модулями. | Разработка | 0.0.1 |
| fw-core-modules | Core Controller | Обеспечение общения между Backend API и Suricata. Управление жизненным циклом Suricata. | Разработка | 0.0.1 |
| suricata-extended | Suricata | Доработанное open-source ПО Suricata. | Разработка | 0.0.1 |
Технологический стек: Java Script, React JS.
Модуль Web App отвечает за визуальное отображение информации пользователю и предоставляет возможность конфигурации и управления Liberty Firewall через взаимодействие с интерфейсом (GUI). Web App является основным средством взаимодействия пользователя с системой.
💡 Любой браузер (Yandex, Firefox, Opera, Safari, Chrome) с поддержкой HTML5.Технологический стек: Java, Spring Boot, Apache Tomcat, H2, Redis.
Модуль является реализацией REST API, и предоставляет доступ к функциям бизнес-логики приложения. Backend API содержит эндпоинты для добавления новых правил и получения информации от ядра. Общение с Web Application происходит по HTTP/HTTPs. Общение с Core Controller происходит через шину данных (message bus) Redis по протоколу TCP/IP. Модуль содержит H2 базу данных для stateless хранения состояний.
Технологический стек: Kotlin, Bash.
Модуль принимает команды от Backend API и управляет жизненным циклом Suricata: запуск, перезагрузка, обновление правил. Считывание команд происходит через Redis Listener по заранее заданному channel.
Технологический стек: C, Rust, Lua;
Модуль является расширением над open source продуктом Suricata. В версии Liberty Firewall добавлены новые модули распознавания (detectors) для определения нахождения критической (sensitive) информации в потоке сетевых пакетов. Suricata получает траффик напрямую, в обход ядра Linux, благодаря технологии DPDK.
| Story 🎯 | Описание 🤔 | Статус 🔥 |
|---|---|---|
| Архитектурная схема One Node | Архитектурная схема ПО при работе на одной ноде с учетом возможности дальнейшего масштабирования. | Done |
| Запуск Suricata в режиме DPDK | Запуск и настройка Suricata. Работа в режиме DPDK для ускоренной обработки трафика в user space. | Done |
| Модель данных backend | Разработка и реализация схемы данных в Backend API. | Done |
| Модель данных общения | Разработка и реализация модели данных для общения между модулями Backend API и Core Controller. | Done |
| Redis Pub/Sub Backend API | Реализация паблишера и листенера в Backend API. | Done |
| Redis Sub в Сore Сontroller | Реализация паблишера и листенера в Core Controller. | Done |
| Модель API | Разработка модели API. | Done |
| Реализация эндпоинтов backend | Реализация эндпоинтов для управления группами, правилами файервола и правилами DLP. | Done |
| Конвертация правил | Конвертация правил, полученных из Web App в модель общения. | Done |
| Реализация UI страницы Firewall | Реализовано добавление правил файервола через форму ввода. Реализовано динамическое отображение добавленных правил. Функционал реализован не полностью, дизайн не утвержден и не принят. | Done |
| Реализация UI страницы DLP | Реализовано добавление правил файервола через форму ввода. Функционал реализован не полностью, дизайн не утвержден и не принят. | Done |
| Реализация самописного модуля Suricata | Реализован самописный DLP модуль и встроен в ядро сурикаты. Модуль работает без ошибок. Функционал реализован не полностью. | Done |
| Реализация управление Suricata в Core Controller | Реализовано управление жизненным циклом Suricata. | Done |
Для реализации MVP необходимо закрыть следующие пункты:
- Реализация детекции sensitive-аттрибутов в DLP модуле.
- Активация Hyperscan.
- Время на поднятие OvS-DPDK на K8S на текущий момент не поддается оценке (RND);
- Время обновления правил при добавлении не соответсвует ожиданиям заказчика. Одно из решений по ускорению добавления правил влияет на текущую архитектуру.
- Проект имеет зависимость от Suricata open-source version.
- Проект на этапе начальной разработки имеет большое количество несмежных технологий и областей знаний. Из-за этого процесс разработки текущим количеством инженеров (2 человека) имеет непоследовательный характер.
Для запуска системы необходимо выполнить следующие шаги:
- Установить DPDK (sudo apt install dpdk)
- Включить поддержку iommu в ядре Linux
- Подключить HugePages (минимум 1 Гб)
- Скачать репозитории: а) firewall-api б) fw-web-face в) fw-core-modules г) suricata-extended (скачать в репозиторий fw-core-modules)
- Подключить модуль ядра igb_uio
- Переключить сетевые интерфейсы в режим DPDK (igb_uio)
- Запустить контейнеры указанные в пункте 4
Характеристики тестовой среды:
- Генератор нагрузки: виртуальная машина 4 ядра, 6Гб ОЗУ;
- NGFW: виртуальная машина, 6 ядер, 16Гб ОЗУ, 2 сетевых карты, 1 worker сурикаты на сетевую карту.
- Сетевой канал: 82545 EM Gigabit Ethernet Controller (виртуализация), 1 Гбит.
- UDP: 71.5 Mbps, нагрузка 140 Kpps, в две стороны
- UDP: 71.5 Mbps, нагрузка 91 Kpps, в одну сторону
- Потоковая передача: 800 Mbps, 91 Kpps
- Добавление правила к 10 000 существующим: ~ 5с
- Добавление правила к 100 000 существующим: ~ 20с
- Добавление правила к 1 000 000 существующим: ~ 100с

