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

기능
- 서비스 체크 자동 스케줄링 및 실행
- Celery 워커와 Redis를 통한 분산 병렬 실행
- 점수 조회 및 서비스 설정을 위한 웹 인터페이스
- 점수 및 설정에 대한 프로그램적 접근을 위한 JSON API
- 28개의 내장 서비스 체크(SSH, HTTP, DNS, SMTP 등)
- 네트워크 차단/오프라인 환경 지원
- 미리 채워진 데모 데이터를 포함한 예제 모드
아키텍처
Scoring Engine은 다음 구성 요소로 구성된 분산 아키텍처를 사용합니다.
| 구성 요소 | 기술 | 목적 |
|---|---|---|
| 웹 UI | Flask | 점수판, 팀 관리, 관리 |
| 작업 대기열 | Celery | 분산 작업 스케줄링 및 실행 |
| 메시지 브로커 | Redis | 작업 대기열 백엔드 및 캐싱 |
| 데이터베이스 | MySQL/MariaDB | 팀, 서비스, 결과의 영구 저장 |
| 리버스 프록시 | Nginx | HTTP 서버 및 로드 밸런싱 |
지원되는 서비스 체크
Scoring Engine은 기본적으로 일반적인 서비스에 대한 체크를 포함합니다.
| 카테고리 | 서비스 |
|---|---|
| 네트워크 | 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 |
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
자세한 지침은 Airgapped 배포 가이드를 참조하세요.
개발
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 <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 라이선스 하에 배포됩니다.