
레드/화이트/블루 팀 대회용 스코어링 엔진
Scoring Engine은 Red/White/Blue 팀 사이버 보안 경쟁을 운영하기 위한 오픈소스 플랫폼입니다. 라운드마다 서비스 체크를 자동화하고, 웹 기반 점수판과 설정 인터페이스를 제공합니다.

Scoring Engine은 다음 구성 요소로 구성된 분산 아키텍처를 사용합니다.
| 구성 요소 | 기술 | 목적 |
|---|---|---|
| 웹 UI | Flask | 점수판, 팀 관리, 관리 |
| 작업 대기열 | Celery | 분산 작업 스케줄링 및 실행 |
| 메시지 브로커 | Redis | 작업 대기열 백엔드 및 캐싱 |
| 데이터베이스 | MySQL/MariaDB | 팀, 서비스, 결과의 영구 저장 |
| 리버스 프록시 | Nginx | HTTP 서버 및 로드 밸런싱 |
Scoring Engine은 기본적으로 일반적인 서비스에 대한 체크를 포함합니다.
scoring_engine/checks/에 Python 클래스를 생성하여 사용자 정의 체크를 추가할 수 있습니다.
Docker 없이 소스에서 설치하려면:
# 패키지 설치
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에서 애플리케이션에 접속합니다.
다음 자격 증명 중 하나를 사용하여 로그인합니다.
시작 전 데이터베이스 초기화:
SCORINGENGINE_OVERWRITE_DB=true docker compose up
샘플 데이터로 실행 (데모 모드):
SCORINGENGINE_EXAMPLE=true docker compose up
또는 새 데모를 위해 두 가지를 결합:
make run-demo
미리 빌드된 이미지는 다음 두 레지스트리에서 사용할 수 있습니다.
ghcr.io/scoringengine/scoringengine/<image>:<tag>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
자세한 지침은 Airgapped 배포 가이드를 참조하세요.
변경 사항을 제출하기 전에 린터와 테스트 스위트를 실행하세요.
# pre-commit 훅 설치
pip install pre-commit
pre-commit install
# 변경된 파일에 대해 린터 실행
pre-commit run --files <changed-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
# 버전 올리기 (패치/마이너/메이저)
bump-my-version bump patch
자세한 지침은 VERSION_MANAGEMENT.md를 참조하세요.
전체 문서는 https://scoringengine.readthedocs.io/en/latest/에서 확인할 수 있습니다.
MIT 라이선스 하에 배포됩니다.
| 카테고리 | 서비스 |
|---|
| 네트워크 | 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 |
| 사용자 이름 | 비밀번호 | 역할 |
|---|
whiteteamuser | testpass | 화이트 팀 (관리자) |
team1user1 | testpass | 블루 팀 1 |
team2user1 | testpass | 블루 팀 2 |
team2user2 | testpass | 블루 팀 2 |
redteamuser | testpass | 레드 팀 |
| 명령어 | 설명 |
|---|
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 | 통합 테스트 실행 |