
scoringengine v2.1.1
Moteur de score pour les compétitions d'équipes Rouge/Blanche/Bleue
Scoring Engine
Scoring Engine est une plateforme open-source pour organiser des compétitions de cybersécurité en équipes Rouge/Blanche/Bleue. Elle automatise les vérifications de services à chaque tour et fournit une interface web de tableau de scores et de configuration.

Fonctionnalités
- Planification et exécution automatisées des vérifications de services
- Exécution parallèle distribuée via les workers Celery et Redis
- Interface web pour visualiser les scores et configurer les services
- API JSON pour un accès programmatique aux scores et à la configuration
- 28 vérifications de services intégrées (SSH, HTTP, DNS, SMTP, etc.)
- Prise en charge des déploiements sans accès Internet (airgapped)
- Mode exemple avec des données de démonstration pré-remplies
Architecture
Scoring Engine utilise une architecture distribuée avec les composants suivants :
| Composant | Technologie | Objectif |
|---|---|---|
| Interface Web | Flask | Tableau de scores, gestion des équipes, administration |
| File d'attente de tâches | Celery | Planification et exécution distribuée des travaux |
| Courtier de messages | Redis | Backend de file d'attente et mise en cache |
| Base de données | MySQL/MariaDB | Stockage persistant des équipes, services et résultats |
| Proxy inverse | Nginx | Serveur HTTP et équilibrage de charge |
Vérifications de services prises en charge
Scoring Engine inclut des vérifications pour les services courants prêts à l'emploi :
| Catégorie | Services |
|---|---|
| Réseau | ICMP, DNS, NFS |
| Web | HTTP, HTTPS, Elasticsearch, WordPress |
| Authentification | SSH, Telnet, LDAP, WinRM |
| Transfert de fichiers | FTP, SMB |
| SMTP, SMTPS, IMAP, IMAPS, POP3, POP3S | |
| Base de données | MySQL, PostgreSQL, MSSQL |
| Bureau à distance | RDP, VNC |
| VPN | OpenVPN |
Des vérifications personnalisées peuvent être ajoutées en créant une classe Python dans scoring_engine/checks/.
Prérequis
Installation avec Docker (Recommandé)
- Docker
- Docker Compose (inclus avec Docker Desktop ; sous Linux, installer séparément)
- Pour les utilisateurs Windows, assurez-vous que Docker Desktop est configuré pour utiliser des conteneurs Linux.
Installation depuis les sources
Pour une installation depuis les sources sans Docker :
- Python 3.10 ou plus récent est requis
- Serveur de base de données MariaDB/MySQL
- Serveur Redis
# Install the package
pip install -e .
# Or install with test dependencies
pip install -e .
pip install -r tests/requirements.txt
Démarrage rapide
Construire et démarrer tous les services :
docker compose build
docker compose up
Ou utilisez le Makefile pour plus de commodité :
make build
make run
Une fois en cours d'exécution, accédez à l'application à http://localhost.
Identifiants de démonstration
Connectez-vous en utilisant l'un des identifiants suivants :
| Nom d'utilisateur | Mot de passe | Rôle |
|---|---|---|
whiteteamuser | testpass | Équipe Blanche (Admin) |
team1user1 | testpass | Équipe Bleue 1 |
team2user1 | testpass | Équipe Bleue 2 |
team2user2 | testpass | Équipe Bleue 2 |
redteamuser | testpass | Équipe Rouge |
Variables d'environnement
Réinitialiser la base de données avant de démarrer :
SCORINGENGINE_OVERWRITE_DB=true docker compose up
Exécuter avec des données d'exemple (mode démo) :
SCORINGENGINE_EXAMPLE=true docker compose up
Ou combinez les deux pour une démo fraîche :
make run-demo
Images Docker pré-construites
Les images pré-construites sont disponibles depuis les deux registres :
- GitHub Container Registry :
ghcr.io/scoringengine/scoringengine/<image>:<tag> - Docker Hub :
scoringengine/<image>:<tag>
Images disponibles : base, bootstrap, engine, web, worker
Étiquettes : latest, develop, étiquettes de version (ex. v1.1.0)
Déploiements sans accès Internet (airgapped)
Pour les compétitions sans accès Internet :
# Create a complete deployment package
./bin/create-airgapped-package.sh
# Transfer scoringengine-airgapped.tar.gz to the airgapped system
# Then extract and deploy:
tar -xzf scoringengine-airgapped.tar.gz
cd scoringengine-airgapped
./deploy.sh
Consultez le Guide de déploiement airgapped pour des instructions détaillées.
Développement
Commandes Makefile
| Commande | Description |
|---|---|
make build | Construire toutes les images Docker |
make run | Démarrer tous les services |
make run-demo | Démarrer avec les données de démo (réinitialise la base de données) |
make stop | Arrêter tous les services |
make clean | Arrêter les services et supprimer les volumes |
make rebuild-new | Reconstruction complète avec une base de données fraîche |
make run-tests | Exécuter les tests unitaires avec couverture |
make build-integration | Construire l'environnement de test d'intégration |
make run-integration-tests | Exécuter les tests d'intégration |
Exécution des tests
Exécutez les linters et la suite de tests avant de soumettre des modifications :
# Install pre-commit hooks
pip install pre-commit
pre-commit install
# Run linters on changed files
pre-commit run --files <changed-files>
# Run all tests
pytest tests/
# Run tests with coverage
make run-tests
Pour vérifier tous les fichiers : pre-commit run --all-files
Construction de la documentation localement
pip install -r docs/requirements.txt
cd docs
make html
Ouvrez docs/build/html/index.html dans votre navigateur.
Gestion des versions
Ce projet utilise le versionnement sémantique. Pour incrémenter les versions :
# Install development dependencies
pip install -r tests/requirements.txt
# Bump version (patch/minor/major)
bump-my-version bump patch
Consultez VERSION_MANAGEMENT.md pour des instructions détaillées.
Documentation
La documentation complète est disponible à https://scoringengine.readthedocs.io/en/latest/.
Licence
Publié sous Licence MIT.