
Sirius v1.1.0
자동 네트워크 탐색, CVE 기반 탐지, CVSS 점수, 위험 대시보드, gRPC를 통한 원격 에이전트, 그리고 엔터프라이즈 보안 팀을 위한 현대적인 웹 UI를 갖춘 오픈소스 취약점 스캐너입니다.
시리우스 스캔

시리우스는 자동 탐색, CVE 기반 탐지, 현대적인 웹 UI를 갖춘 오픈소스 취약점 스캐너입니다. 클론 후 네 개의 명령어를 실행하면 스캔을 시작할 수 있습니다.
빠른 시작
git clone https://github.com/SiriusScan/Sirius.git
cd Sirius
docker compose -f docker-compose.installer.yaml run --rm sirius-installer
docker compose up -d
**http://localhost:3000**을 열고 로그인하세요:
| 이메일 | [email protected] |
| 비밀번호 | 설치 프로그램이 출력합니다 (출력에서 INITIAL_ADMIN_PASSWORD를 찾으세요) |
그게 전부입니다. 여섯 개의 서비스가 자동으로 시작됩니다. 설치 프로그램은 첫 실행 시 안전한 시크릿을 생성하며, 다시 실행해도 안전합니다.
기본적으로 설치 프로그램은 IMAGE_TAG를 설정하지 않으므로 Compose는 GHCR에서 **latest**를 가져옵니다. 릴리스 (예: .env에서 v1.0.0)를 고정하려면, 해당 태그가 여섯 개의 모든 컨테이너 이미지에 존재하는 경우에만 수행하세요. ghcr.io에 로그인하지 않은 셸에서 bash scripts/verify-ghcr-public-access.sh v1.0.0으로 확인하세요.
요구 사항: Docker Engine 20.10+ 및 Compose V2, 4 GB RAM, 10 GB 디스크. Linux, macOS, Windows (WSL2)에서 작동합니다.
시리우스의 기능
- 네트워크 탐색 -- Nmap을 통한 자동 호스트 및 서비스 열거
- 취약점 탐지 -- CVSS 점수를 사용한 CVE 기반 스캔
- 위험 대시보드 -- 실시간 스캔 진행 상황, 심각도 추세 및 수정 지침
- 원격 에이전트 -- gRPC를 통한 여러 환경에 걸친 분산 스캔
- 대화형 터미널 -- 고급 스크립팅 및 자동화를 위한 PowerShell 콘솔
- REST API -- 기존 보안 워크플로우와 통합 (
X-API-Key인증, 포트 9001)
배포 옵션
설치 단계는 항상 동일합니다. docker compose up 명령어만 변경됩니다.
| 모드 | 명령어 | 사용 사례 |
|---|---|---|
| 표준 | docker compose up -d | 대부분의 사용자 -- GHCR에서 전체 릴리스 스택을 가져옴 |
| 개발 | docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d | 로컬 코드 작업을 위한 라이브 리로드 |
| 소스 빌드 | docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build | 명시적 로컬 전체 스택 빌드 |
| 프로덕션 | docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d | 강화된 설정, pull_policy: always |
비대화형 설정 (CI / Terraform / 자동화)
docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets
docker compose up -d
시크릿 순환
docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force
docker compose up -d --force-recreate
설치 확인
docker compose ps # 모든 6개 서비스가 "healthy" 또는 "running" 상태여야 함
curl http://localhost:3000 # UI 응답
curl http://localhost:9001/health # API 응답
예상 서비스: sirius-ui (3000), sirius-api (9001), sirius-engine (5174, 50051), sirius-postgres (5432), sirius-rabbitmq (5672, 15672), sirius-valkey (6379).
아키텍처
graph TD
subgraph clients [클라이언트]
UI["Sirius UI (Next.js)"]
CLI["터미널 및 에이전트 런타임"]
end
subgraph core [핵심 서비스]
API["Sirius API (Go/Gin)"]
Engine["Sirius 엔진"]
end
subgraph infra [인프라]
MQ["RabbitMQ"]
DB["PostgreSQL"]
Cache["Valkey"]
end
UI -->|"HTTP/WebSocket"| API
CLI -->|"gRPC"| Engine
API -->|"AMQP publish"| MQ
MQ -->|"Queue consume"| Engine
API -->|"SQL read/write"| DB
Engine -->|"SQL read/write"| DB
API -->|"Session/cache ops"| Cache
Engine -->|"Scan state cache ops"| Cache
| 서비스 | 기술 | 포트 | 용도 |
|---|---|---|---|
| sirius-ui | Next.js 14, React, Tailwind | 3000 | 웹 인터페이스 |
| sirius-api | Go, Gin | 9001 | REST API 및 비즈니스 로직 |
| sirius-engine | Go + 임베디드 gRPC 에이전트 | 5174, 50051 | 스캐너, 터미널, 에이전트 서비스 |
| sirius-postgres | PostgreSQL 15 | 5432 | 취약점 및 스캔 데이터 |
| sirius-rabbitmq | RabbitMQ | 5672, 15672 | 서비스 간 메시징 |
| sirius-valkey | Valkey (Redis 호환) | 6379 | 캐시 및 세션 데이터 |
인터페이스
| 대시보드 | 스캐너 | 취약점 탐색기 |
|---|---|---|
![]() | ![]() | ![]() |
| 환경 | 호스트 세부정보 | 터미널 |
|---|---|---|
![]() | ![]() | ![]() |
API
시리우스는 내부 서비스 API 키로 보호되는 REST 엔드포인트를 포트 9001에 노출합니다. Docker 시크릿 파일(SIRIUS_API_KEY_FILE, 기본값 /run/secrets/sirius_api_key)을 선호합니다. SIRIUS_API_KEY는 지원되는 환경 변수 대체 수단으로 남아 있습니다. 설치 프로그램은 ./secrets/sirius_api_key.txt (모드 0644로, 비루트 앱 UID가 바인드 마운트된 시크릿을 읽을 수 있도록 함)를 작성하고 둘 다 구성합니다.
curl http://localhost:9001/health -H "X-API-Key: $SIRIUS_API_KEY"
curl http://localhost:9001/api/v1/scan/get/all -H "X-API-Key: $SIRIUS_API_KEY"
전체 API 문서: REST API 참조
보안 권장 사항
프로덕션 배포의 경우:
- 시크릿 순환 -- 설치 프로그램을
--force로 실행하여 모든 자격 증명을 재생성합니다. - 포트 제한 -- 포트 3000(UI)만 노출하고, 5432, 6379, 5672는 내부로 유지합니다.
- 리버스 프록시 사용 -- nginx 또는 Traefik을 TLS와 함께 앞에 둡니다.
- 이미지 업데이트 유지 --
docker compose pull && docker compose up -d
문제 해결
일반적인 문제에 대한 빠른 해결 방법:
| 문제 | 해결 방법 |
|---|---|
| 서비스가 시작되지 않음 | docker compose logs <서비스>로 오류 확인 |
| 개발 오버레이에 인프라 누락 | 두 파일을 함께 사용: -f docker-compose.yaml -f docker-compose.dev.yaml |
| 포트 충돌 | lsof -i :3000으로 충돌하는 프로세스 찾기 |
| 데이터베이스 연결 오류 | docker exec sirius-postgres pg_isready 실행 |
| 재설정 후 오래된 시크릿 | 설치 프로그램을 다시 실행한 후 docker compose up -d --force-recreate 실행 |
자세한 운영 런북, 검증 절차 및 비상 복구는 운영 및 문제 해결을 참조하세요.
기여하기
개발 설정, 코딩 표준 및 PR 지침은 CONTRIBUTING.md를 참조하세요.




