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

Возможности
- Автоматическое планирование и выполнение проверок сервисов
- Распределённое параллельное выполнение через Celery workers и Redis
- Веб-интерфейс для просмотра очков и настройки сервисов
- JSON API для программного доступа к очкам и конфигурации
- 28 встроенных проверок сервисов (SSH, HTTP, DNS, SMTP и другие)
- Поддержка изолированных (offline) развёртываний
- Режим примера с предзаполненными демонстрационными данными
Архитектура
Scoring Engine использует распределённую архитектуру со следующими компонентами:
| Компонент | Технология | Назначение |
|---|---|---|
| Веб-интерфейс | Flask | Таблица результатов, управление командами, администрирование |
| Очередь задач | Celery | Распределённое планирование и выполнение заданий |
| Брокер сообщений | Redis | Бэкенд очереди задач и кэширование |
| База данных | MySQL/MariaDB | Постоянное хранение данных команд, сервисов и результатов |
| Обратный прокси | Nginx | HTTP-сервер и балансировка нагрузки |
Поддерживаемые проверки сервисов
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 |
| VPN | OpenVPN |
Пользовательские проверки можно добавить, создав класс Python в scoring_engine/checks/.
Предварительные требования
Установка через Docker (рекомендуется)
- Docker
- Docker Compose (входит в Docker Desktop; в Linux устанавливается отдельно)
- Для пользователей Windows: убедитесь, что Docker Desktop настроен на использование Linux-контейнеров.
Установка из исходного кода
Для установки из исходного кода без 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.
Демонстрационные учётные данные
Войдите в систему, используя любые из следующих учётных записей:
| Имя пользователя | Пароль | Роль |
|---|---|---|
whiteteamuser | testpass | Белая команда (Администратор) |
team1user1 | testpass | Синяя команда 1 |
team2user1 | testpass | Синяя команда 2 |
team2user2 | testpass | Синяя команда 2 |
redteamuser | testpass | Красная команда |
Переменные окружения
Сбросьте базу данных перед запуском:
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.