
Open-Source-Schwachstellenscanner mit automatischer Netzwerkerkennung, CVE-basierter Erkennung, CVSS-Bewertung, Risiko-Dashboards, Remote-Agenten über gRPC und einer modernen Web-UI für Sicherheitsteams in Unternehmen.
# Sirius Scan [](https://github.com/SiriusScan/Sirius/actions/workflows/ci.yml) [](https://github.com/SiriusScan/Sirius/releases) [](https://github.com/orgs/SiriusScan/packages) [](./LICENSE) [](https://sirius.opensecurity.com/community)  Sirius ist ein Open-Source-Schwachstellenscanner mit automatischer Erkennung, CVE-basierter Analyse und einer modernen Weboberfläche. Repository klonen, vier Befehle ausführen, mit dem Scannen beginnen. ## Schnellstart ```bash 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 ``` Öffnen Sie **http://localhost:3000** und melden Sie sich an: | | | |---|---| | **E-Mail** | `[email protected]` | | **Passwort** | vom Installer ausgegeben (suchen Sie in der Ausgabe nach `INITIAL_ADMIN_PASSWORD`) | Das war's. Alle sechs Dienste starten automatisch. Der Installer generiert beim ersten Start sichere Zugangsdaten und kann bedenkenlos erneut ausgeführt werden. Standardmäßig setzt der Installer `IMAGE_TAG` nicht, sodass Compose **`latest`** von GHCR zieht. Um eine bestimmte Version festzulegen (z. B. `v1.0.0` in `.env`), tun Sie dies nur, nachdem dieser Tag für **alle sechs** Container-Images vorhanden ist. Überprüfen Sie dies mit `bash scripts/verify-ghcr-public-access.sh v1.0.0` in einer Shell, die nicht bei `ghcr.io` angemeldet ist. > **Voraussetzungen:** Docker Engine 20.10+ mit Compose V2, 4 GB RAM, 10 GB Festplattenspeicher. Funktioniert unter Linux, macOS und Windows (WSL2). ## Was Sirius tut - **Netzwerkerkennung** – automatische Host- und Dienstaufzählung mittels Nmap - **Schwachstellenerkennung** – CVE-basierte Scans mit CVSS-Bewertung - **Risiko-Dashboards** – Echtzeit-Scanfortschritt, Schweregradtrends und Anleitungen zur Behebung - **Entfernte Agenten** – verteilte Scans in mehreren Umgebungen via gRPC - **Interaktives Terminal** – PowerShell-Konsole für erweiterte Skripterstellung und Automatisierung - **REST-API** – Integration in bestehende Sicherheits-Workflows (`X-API-Key`-Authentifizierung auf Port 9001) ## Bereitstellungsoptionen Der Installer-Schritt ist immer derselbe. Nur der `docker compose up`-Befehl ändert sich. | Modus | Befehl | Anwendungsfall | |-------|--------|----------------| | **Standard** | `docker compose up -d` | Für die meisten Benutzer – zieht den vollständigen Release-Stack aus GHCR | | **Entwicklung** | `docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d` | Live-Neuladen für lokale Code-Arbeiten | | **Quellcode-Build** | `docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build` | Explizite lokale Full-Stack-Builds | | **Produktion** | `docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d` | Abgesicherte Einstellungen, `pull_policy: always` | ### Nicht-interaktives Setup (CI / Terraform / Automatisierung) ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets docker compose up -d ``` ### Zugangsdaten rotieren ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force docker compose up -d --force-recreate ``` ## Installation überprüfen ```bash docker compose ps # alle 6 Dienste sollten "healthy" oder "running" anzeigen curl http://localhost:3000 # UI antwortet curl http://localhost:9001/health # API antwortet ``` Erwartete Dienste: `sirius-ui` (3000), `sirius-api` (9001), `sirius-engine` (5174, 50051), `sirius-postgres` (5432), `sirius-rabbitmq` (5672, 15672), `sirius-valkey` (6379). ## Architektur ```mermaid graph TD subgraph clients [Clients] UI["Sirius UI (Next.js)"] CLI["Terminal and Agent Runtime"] end subgraph core [Core Services] API["Sirius API (Go/Gin)"] Engine["Sirius Engine"] end subgraph infra [Infrastructure] 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 ``` | Dienst | Technologie | Ports | Zweck | |--------|------------|-------|-------| | **sirius-ui** | Next.js 14, React, Tailwind | 3000 | Weboberfläche | | **sirius-api** | Go, Gin | 9001 | REST-API und Geschäftslogik | | **sirius-engine** | Go + eingebetteter gRPC-Agent | 5174, 50051 | Scanner-, Terminal- und Agentendienste | | **sirius-postgres** | PostgreSQL 15 | 5432 | Schwachstellen- und Scandaten | | **sirius-rabbitmq** | RabbitMQ | 5672, 15672 | Nachrichtenaustausch zwischen Diensten | | **sirius-valkey** | Valkey (Redis-kompatibel) | 6379 | Cache- und Sitzungsdaten | ## Oberfläche | Dashboard | Scanner | Schwachstellennavigator | |-----------|---------|-------------------------| |  |  |  | | Umgebung | Host-Details | Terminal | |----------|--------------|----------| |  |  |  | ## API Sirius stellt REST-Endpunkte auf Port 9001 bereit, geschützt durch den **internen Service-API-Key**. Bevorzugen Sie die Docker Secret-Datei (`SIRIUS_API_KEY_FILE`, Standard `/run/secrets/sirius_api_key`); `SIRIUS_API_KEY` bleibt als unterstützte Umgebungsvariable für den Fallback erhalten. Der Installer schreibt `./secrets/sirius_api_key.txt` (Modus **0644**, sodass Nicht-Root-App-UIDs das bind-gemountete Secret lesen können) und konfiguriert beides. ```bash 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" ``` Vollständige API-Dokumentation: [REST-API-Referenz](https://sirius.opensecurity.com/docs/api/rest/authentication) ## Sicherheitsempfehlungen Für Produktionsbereitstellungen: 1. **Zugangsdaten rotieren** – den Installer mit `--force` ausführen, um alle Berechtigungen neu zu generieren 2. **Ports einschränken** – nur Port 3000 (UI) freigeben; 5432, 6379, 5672 intern halten 3. **Reverse Proxy verwenden** – nginx oder Traefik mit TLS vorschalten 4. **Images aktuell halten** – `docker compose pull && docker compose up -d` ## Fehlerbehebung Schnellhilfen für häufige Probleme: | Problem | Lösung | |---------|--------| | Dienste starten nicht | `docker compose logs <dienst>` zur Fehleranalyse | | Dev-Overlay fehlt Infrastruktur | Beide Dateien verwenden: `-f docker-compose.yaml -f docker-compose.dev.yaml` | | Portkonflikt | `lsof -i :3000` suchen den konkurrierenden Prozess | | Datenbankverbindungsfehler | `docker exec sirius-postgres pg_isready` | | Veraltete Secrets nach Reset | Installer erneut ausführen, dann `docker compose up -d --force-recreate` | Ausführliche Betriebsrunbooks, Verifikationsverfahren und Notfallwiederherstellung finden Sie unter [Betrieb & Fehlerbehebung](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md). ## Mitwirken Siehe [CONTRIBUTING.md](https://github.com/siriusscan/sirius/blob/main/CONTRIBUTING.md) für Entwicklungseinrichtung, Codierungsstandards und PR-Richtlinien. **Schnelllinks:** [Issues](https://github.com/SiriusScan/Sirius/issues) | [Diskussionen](https://github.com/SiriusScan/Sirius/discussions) | [Discord](https://sirius.opensecurity.com/community) ## Weiterführende Informationen - [Installationsanleitung](https://sirius.opensecurity.com/docs/getting-started/installation) - [Oberflächentour](https://sirius.opensecurity.com/docs/getting-started/interface-tour) - [Scananleitung](https://sirius.opensecurity.com/docs/guides/scanning) - [Docker-Architektur](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.docker-architecture.md) - [Systemarchitektur](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.architecture.md) - [CI/CD-Anleitung](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.cicd.md) - [Betrieb & Fehlerbehebung](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md) ## Lizenz [MIT](https://github.com/siriusscan/sirius/blob/main/LICENSE)