
scoringengine v2.1.1
レッド/ホワイト/ブルーチーム競技用スコアリングエンジン
Scoring Engine
Scoring Engineは、Red/White/Blueチームのサイバーセキュリティ競技を運営するためのオープンソースプラットフォームです。ラウンドごとにサービスチェックを自動化し、Webベースのスコアボードと設定インターフェースを提供します。

機能
- サービスチェックの自動スケジューリングと実行
- CeleryワーカーとRedisによる分散並列実行
- スコア表示とサービス設定のためのWebインターフェース
- スコアと設定へのプログラムによるアクセスのためのJSON API
- 28の組み込みサービスチェック(SSH、HTTP、DNS、SMTPなど)
- エアギャップ/オフライン環境への展開をサポート
- 事前入力されたデモデータを使用したサンプルモード
アーキテクチャ
Scoring Engineは、以下のコンポーネントで構成される分散アーキテクチャを採用しています。
| コンポーネント | テクノロジー | 目的 |
|---|---|---|
| Web UI | Flask | スコアボード、チーム管理、管理 |
| Task Queue | Celery | 分散ジョブスケジューリングと実行 |
| Message Broker | Redis | タスクキューのバックエンドとキャッシュ |
| Database | MySQL/MariaDB | チーム、サービス、結果の永続ストレージ |
| Reverse Proxy | Nginx | HTTPサーバーとロードバランシング |
サポートされているサービスチェック
Scoring Engineには、標準で一般的なサービスのチェックが含まれています。
| カテゴリ | サービス |
|---|---|
| ネットワーク | ICMP、DNS、NFS |
| Web | HTTP、HTTPS、Elasticsearch、WordPress |
| 認証 | SSH、Telnet、LDAP、WinRM |
| ファイル転送 | FTP、SMB |
| メール | SMTP、SMTPS、IMAP、IMAPS、POP3、POP3S |
| データベース | MySQL、PostgreSQL、MSSQL |
| リモートデスクトップ | RDP、VNC |
| VPN | OpenVPN |
カスタムチェックは、scoring_engine/checks/ にPythonクラスを作成することで追加できます。
前提条件
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フックをインストール
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ライセンスの下で公開されています。