
scoringengine v2.1.1
Motore di punteggio per competizioni Red/White/Blue Team
Scoring Engine
Scoring Engine è una piattaforma open-source per eseguire competizioni di cybersecurity con squadre Rosse/Bianche/Blu. Automatizza i controlli dei servizi a ogni round e fornisce un tabellone web e un'interfaccia di configurazione.

Caratteristiche
- Pianificazione ed esecuzione automatiche dei controlli dei servizi
- Esecuzione parallela distribuita tramite worker Celery e Redis
- Interfaccia web per visualizzare i punteggi e configurare i servizi
- API JSON per accesso programmatico a punteggi e configurazione
- 28 controlli di servizio integrati (SSH, HTTP, DNS, SMTP e altri)
- Supporto per distribuzioni in ambienti isolati/offline
- Modalità esempio con dati demo pre-caricati
Architettura
Scoring Engine utilizza un'architettura distribuita con i seguenti componenti:
| Componente | Tecnologia | Scopo |
|---|---|---|
| Interfaccia Web | Flask | Tabellone, gestione squadre, amministrazione |
| Coda di lavori | Celery | Pianificazione ed esecuzione distribuita dei lavori |
| Broker di messaggi | Redis | Backend della coda di lavori e caching |
| Database | MySQL/MariaDB | Archiviazione persistente per squadre, servizi e risultati |
| Proxy inverso | Nginx | Server HTTP e bilanciamento del carico |
Controlli di Servizio Supportati
Scoring Engine include controlli per i servizi comuni pronti all'uso:
| Categoria | Servizi |
|---|---|
| Rete | ICMP, DNS, NFS |
| Web | HTTP, HTTPS, Elasticsearch, WordPress |
| Autenticazione | SSH, Telnet, LDAP, WinRM |
| Trasferimento File | FTP, SMB |
| SMTP, SMTPS, IMAP, IMAPS, POP3, POP3S | |
| Database | MySQL, PostgreSQL, MSSQL |
| Desktop Remoto | RDP, VNC |
| VPN | OpenVPN |
Controlli personalizzati possono essere aggiunti creando una classe Python in scoring_engine/checks/.
Prerequisiti
Installazione con Docker (Consigliata)
- Docker
- Docker Compose (incluso in Docker Desktop; su Linux installalo separatamente)
- Per utenti Windows, assicurati che Docker Desktop sia impostato per utilizzare contenitori Linux.
Installazione dai Sorgenti
Per installare dai sorgenti senza Docker:
- È richiesto Python 3.10 o superiore
- Server database MariaDB/MySQL
- Server Redis
# Install the package
pip install -e .
# Or install with test dependencies
pip install -e .
pip install -r tests/requirements.txt
Avvio Rapido
Costruisci e avvia tutti i servizi:
docker compose build
docker compose up
Oppure usa il Makefile per comodità:
make build
make run
Una volta in esecuzione, accedi all'applicazione all'indirizzo http://localhost.
Credenziali Demo
Accedi utilizzando una delle seguenti credenziali:
| Nome utente | Password | Ruolo |
|---|---|---|
whiteteamuser | testpass | White Team (Amministratore) |
team1user1 | testpass | Blue Team 1 |
team2user1 | testpass | Blue Team 2 |
team2user2 | testpass | Blue Team 2 |
redteamuser | testpass | Red Team |
Variabili d'Ambiente
Resetta il database prima di avviare:
SCORINGENGINE_OVERWRITE_DB=true docker compose up
Esegui con dati di esempio (modalità demo):
SCORINGENGINE_EXAMPLE=true docker compose up
Oppure combina entrambi per una demo fresca:
make run-demo
Immagini Docker Pre-costruite
Immagini pre-costruite sono disponibili da entrambi i registry:
- GitHub Container Registry:
ghcr.io/scoringengine/scoringengine/<image>:<tag> - Docker Hub:
scoringengine/<image>:<tag>
Immagini disponibili: base, bootstrap, engine, web, worker
Tags: latest, develop, tag di versione (es., v1.1.0)
Distribuzioni in Ambienti Isolati
Per competizioni senza accesso a 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
Vedi la Guida alla Distribuzione in Ambienti Isolati per istruzioni dettagliate.
Sviluppo
Comandi del Makefile
| Comando | Descrizione |
|---|---|
make build | Costruisci tutte le immagini Docker |
make run | Avvia tutti i servizi |
make run-demo | Avvia con dati demo (resetta il database) |
make stop | Ferma tutti i servizi |
make clean | Ferma i servizi e rimuovi i volumi |
make rebuild-new | Ricostruzione completa con database fresco |
make run-tests | Esegui test unitari con copertura |
make build-integration | Costruisci ambiente di test di integrazione |
make run-integration-tests | Esegui test di integrazione |
Esecuzione dei Test
Esegui i linter e la suite di test prima di inviare modifiche:
# 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
Per controllare tutti i file: pre-commit run --all-files
Costruire la Documentazione Localmente
pip install -r docs/requirements.txt
cd docs
make html
Apri docs/build/html/index.html nel tuo browser.
Gestione delle Versioni
Questo progetto utilizza il versionamento semantico. Per incrementare le versioni:
# Install development dependencies
pip install -r tests/requirements.txt
# Bump version (patch/minor/major)
bump-my-version bump patch
Vedi VERSION_MANAGEMENT.md per istruzioni dettagliate.
Documentazione
La documentazione completa è disponibile su https://scoringengine.readthedocs.io/en/latest/.
Licenza
Rilasciato sotto la Licenza MIT.