
scoringengine v2.1.1
Motor de puntuación para competiciones de equipos Rojo/Blanco/Azul
Scoring Engine
Scoring Engine es una plataforma de código abierto para ejecutar competiciones de ciberseguridad de equipos Rojo/Blanco/Azul. Automatiza las comprobaciones de servicios en cada ronda y proporciona un marcador basado en web y una interfaz de configuración.

Características
- Programación y ejecución automatizadas de comprobaciones de servicios
- Ejecución paralela distribuida mediante workers de Celery y Redis
- Interfaz web para ver puntuaciones y configurar servicios
- API JSON para acceso programático a puntuaciones y configuración
- 28 comprobaciones de servicios integradas (SSH, HTTP, DNS, SMTP y más)
- Soporte para despliegues aislados/sin conexión
- Modo de ejemplo con datos de demostración precargados
Arquitectura
Scoring Engine utiliza una arquitectura distribuida con los siguientes componentes:
| Componente | Tecnología | Propósito |
|---|---|---|
| Interfaz web | Flask | Marcador, gestión de equipos, administración |
| Cola de tareas | Celery | Programación y ejecución distribuidas de trabajos |
| Broker de mensajes | Redis | Backend de cola de tareas y almacenamiento en caché |
| Base de datos | MySQL/MariaDB | Almacenamiento persistente para equipos, servicios y resultados |
| Proxy inverso | Nginx | Servidor HTTP y balanceo de carga |
Comprobaciones de Servicios Compatibles
Scoring Engine incluye comprobaciones para servicios comunes de serie:
| Categoría | Servicios |
|---|---|
| Red | ICMP, DNS, NFS |
| Web | HTTP, HTTPS, Elasticsearch, WordPress |
| Autenticación | SSH, Telnet, LDAP, WinRM |
| Transferencia de archivos | FTP, SMB |
| Correo | SMTP, SMTPS, IMAP, IMAPS, POP3, POP3S |
| Base de datos | MySQL, PostgreSQL, MSSQL |
| Escritorio remoto | RDP, VNC |
| VPN | OpenVPN |
Se pueden añadir comprobaciones personalizadas creando una clase de Python en scoring_engine/checks/.
Prerrequisitos
Instalación con Docker (Recomendada)
- Docker
- Docker Compose (incluido con Docker Desktop; en Linux instalar por separado)
- Para usuarios de Windows, asegúrese de que Docker Desktop esté configurado para usar contenedores Linux.
Instalación desde el código fuente
Para instalar desde el código fuente sin Docker:
- Se requiere Python 3.10 o superior
- Servidor de base de datos MariaDB/MySQL
- Servidor Redis
# Install the package
pip install -e .
# Or install with test dependencies
pip install -e .
pip install -r tests/requirements.txt
Inicio Rápido
Construir e iniciar todos los servicios:
docker compose build
docker compose up
O utilice el Makefile por comodidad:
make build
make run
Una vez en ejecución, acceda a la aplicación en http://localhost.
Credenciales de Demostración
Inicie sesión con cualquiera de las siguientes credenciales:
| Usuario | Contraseña | Rol |
|---|---|---|
whiteteamuser | testpass | Equipo Blanco (Admin) |
team1user1 | testpass | Equipo Azul 1 |
team2user1 | testpass | Equipo Azul 2 |
team2user2 | testpass | Equipo Azul 2 |
redteamuser | testpass | Equipo Rojo |
Variables de Entorno
Reiniciar la base de datos antes de iniciar:
SCORINGENGINE_OVERWRITE_DB=true docker compose up
Ejecutar con datos de ejemplo (modo demo):
SCORINGENGINE_EXAMPLE=true docker compose up
O combinar ambos para una demo nueva:
make run-demo
Imágenes Docker Preconstruidas
Las imágenes preconstruidas están disponibles en ambos registros:
- GitHub Container Registry:
ghcr.io/scoringengine/scoringengine/<image>:<tag> - Docker Hub:
scoringengine/<image>:<tag>
Imágenes disponibles: base, bootstrap, engine, web, worker
Etiquetas: latest, develop, etiquetas de versión (p. ej., v1.1.0)
Despliegues Aislados
Para competiciones sin acceso 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
Consulte la Guía de Despliegue Aislado para obtener instrucciones detalladas.
Desarrollo
Comandos del Makefile
| Comando | Descripción |
|---|---|
make build | Construir todas las imágenes Docker |
make run | Iniciar todos los servicios |
make run-demo | Iniciar con datos de demo (reinicia la base de datos) |
make stop | Detener todos los servicios |
make clean | Detener servicios y eliminar volúmenes |
make rebuild-new | Reconstrucción completa con base de datos nueva |
make run-tests | Ejecutar pruebas unitarias con cobertura |
make build-integration | Construir entorno de pruebas de integración |
make run-integration-tests | Ejecutar pruebas de integración |
Ejecutar Pruebas
Ejecute los linters y el conjunto de pruebas antes de enviar cambios:
# 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
Para verificar todos los archivos: pre-commit run --all-files
Construir Documentación Localmente
pip install -r docs/requirements.txt
cd docs
make html
Abra docs/build/html/index.html en su navegador.
Gestión de Versiones
Este proyecto utiliza versionado semántico. Para incrementar versiones:
# Install development dependencies
pip install -r tests/requirements.txt
# Bump version (patch/minor/major)
bump-my-version bump patch
Consulte VERSION_MANAGEMENT.md para obtener instrucciones detalladas.
Documentación
La documentación completa está disponible en https://scoringengine.readthedocs.io/en/latest/.
Licencia
Publicado bajo la Licencia MIT.