Назад к обновлениям
New releaseJul 27, 2026

scoringengine v2.1.1

Движок подсчёта очков для соревнований команд Red/White/Blue

Поделиться

Documentation Status CI Coverage Status

Scoring Engine

Scoring Engine — это платформа с открытым исходным кодом для проведения кибербезопасных соревнований в формате «Красная/Белая/Синяя команды». Она автоматизирует проверки сервисов в каждом раунде и предоставляет веб-интерфейс для таблицы результатов и конфигурации.

Снимок экрана Scoring Engine

Возможности

  • Автоматическое планирование и выполнение проверок сервисов
  • Распределённое параллельное выполнение через Celery workers и Redis
  • Веб-интерфейс для просмотра очков и настройки сервисов
  • JSON API для программного доступа к очкам и конфигурации
  • 28 встроенных проверок сервисов (SSH, HTTP, DNS, SMTP и другие)
  • Поддержка изолированных (offline) развёртываний
  • Режим примера с предзаполненными демонстрационными данными

Архитектура

Scoring Engine использует распределённую архитектуру со следующими компонентами:

КомпонентТехнологияНазначение
Веб-интерфейсFlaskТаблица результатов, управление командами, администрирование
Очередь задачCeleryРаспределённое планирование и выполнение заданий
Брокер сообщенийRedisБэкенд очереди задач и кэширование
База данныхMySQL/MariaDBПостоянное хранение данных команд, сервисов и результатов
Обратный проксиNginxHTTP-сервер и балансировка нагрузки

Поддерживаемые проверки сервисов

Scoring Engine включает проверки для распространённых сервисов «из коробки»:

КатегорияСервисы
СетьICMP, DNS, NFS
ВебHTTP, HTTPS, Elasticsearch, WordPress
АутентификацияSSH, Telnet, LDAP, WinRM
Передача файловFTP, SMB
Электронная почтаSMTP, SMTPS, IMAP, IMAPS, POP3, POP3S
Базы данныхMySQL, PostgreSQL, MSSQL
Удалённый рабочий столRDP, VNC
VPNOpenVPN

Пользовательские проверки можно добавить, создав класс Python в scoring_engine/checks/.

Предварительные требования

Установка через Docker (рекомендуется)

Установка из исходного кода

Для установки из исходного кода без Docker:

  • Требуется Python 3.10 или выше
  • Сервер базы данных MariaDB/MySQL
  • Сервер Redis
# Установка пакета
pip install -e .

# Или установка с зависимостями для тестирования
pip install -e .
pip install -r tests/requirements.txt

Быстрый старт

Соберите и запустите все сервисы:

docker compose build
docker compose up

Или используйте Makefile для удобства:

make build
make run

После запуска откройте приложение по адресу http://localhost.

Демонстрационные учётные данные

Войдите в систему, используя любые из следующих учётных записей:

Имя пользователяПарольРоль
whiteteamusertestpassБелая команда (Администратор)
team1user1testpassСиняя команда 1
team2user1testpassСиняя команда 2
team2user2testpassСиняя команда 2
redteamusertestpassКрасная команда

Переменные окружения

Сбросьте базу данных перед запуском:

SCORINGENGINE_OVERWRITE_DB=true docker compose up

Запуск с примерами данных (демо-режим):

SCORINGENGINE_EXAMPLE=true docker compose up

Или объедините оба для свежего демо:

make run-demo

Предварительно собранные Docker-образы

Предварительно собранные образы доступны в обоих реестрах:

  • GitHub Container Registry: ghcr.io/scoringengine/scoringengine/<image>:<tag>
  • Docker Hub: scoringengine/<image>:<tag>

Доступные образы: base, bootstrap, engine, web, worker

Теги: latest, develop, теги версий (например, v1.1.0)

Изолированные развёртывания

Для соревнований без доступа в интернет:

# Создание полного пакета развёртывания
./bin/create-airgapped-package.sh

# Перенесите scoringengine-airgapped.tar.gz на изолированную систему
# Затем распакуйте и разверните:
tar -xzf scoringengine-airgapped.tar.gz
cd scoringengine-airgapped
./deploy.sh

Подробные инструкции см. в Инструкции по изолированному развёртыванию.

Разработка

Команды Makefile

КомандаОписание
make buildСобрать все Docker-образы
make runЗапустить все сервисы
make run-demoЗапустить с демо-данными (сбрасывает БД)
make stopОстановить все сервисы
make cleanОстановить сервисы и удалить тома
make rebuild-newПолная пересборка с чистой БД
make run-testsЗапустить модульные тесты с покрытием
make build-integrationСобрать среду интеграционного тестирования
make run-integration-testsЗапустить интеграционные тесты

Запуск тестов

Перед отправкой изменений запустите линтеры и тестовый набор:

# Установка pre-commit hooks
pip install pre-commit
pre-commit install

# Запуск линтеров на изменённых файлах
pre-commit run --files <изменённые-файлы>

# Запуск всех тестов
pytest tests/

# Запуск тестов с покрытием
make run-tests

Для проверки всех файлов: pre-commit run --all-files

Локальная сборка документации

pip install -r docs/requirements.txt
cd docs
make html

Откройте docs/build/html/index.html в вашем браузере.

Управление версиями

В проекте используется семантическое версионирование. Для изменения версий:

# Установка зависимостей разработки
pip install -r tests/requirements.txt

# Изменение версии (patch/minor/major)
bump-my-version bump patch

Подробные инструкции см. в VERSION_MANAGEMENT.md.

Документация

Полная документация доступна по адресу https://scoringengine.readthedocs.io/en/latest/.

Лицензия

Выпущено под лицензией MIT.

Категории