
UltraViolet v1.0.11
Selbstgehostete Netzwerkerkennungs- und Suchmaschine mit kontinuierlichem Port-Scanning, tiefer Protokollanalyse über ~100 Dienste, lokaler CVE-Abgleich und Volltextsuche für Inventarisierung der Infrastruktur und Risikoüberwachung.
UltraViolet
Selbst gehostete Netzwerkerkennung & -suche — dein eigenes Shodan, auf deiner Hardware.
TCP/UDP-Scans · ~100 Protokoll-Probes · TLS/JARM-Fingerprints · CVE-Abgleich · Volltextsuche · Delta-Tracking · Alarme
Schnellstart · Funktionen · Architektur · Dokumentation · Produktion
Wichtig. Scanne nur Netzwerke, die dir gehören oder für die du eine schriftliche Genehmigung zum Scannen hast. UltraViolet führt passive Diensterkennung durch — es nutzt keine Schwachstellen aus.
Warum UltraViolet
| Anwendungsfall | Was du bekommst |
|---|---|
| Perimeter & Inventar | Kontinuierliche Erkennung offener Ports und Dienste über CIDR-Bereiche |
| Infrastruktur-Suche | Volltextsuche über HTTP-Bodies, Banner, TLS, DNS und CVEs |
| Risiko & Compliance | Lokaler NVD-Abgleich plus CISA KEV und EPSS — keine Cloud-Abhängigkeit |
| Air-Gapped-Bereitstellung | Offline-Archiv mit Docker-Images, CVE-Seed und GeoIP-MMDB auf der Festplatte |
| Änderungsverfolgung | Deltas zwischen Scans, WebSocket-Ereignisse, Alarme bei gespeicherten Suchanfragen |
Einzelmandant, ein Docker-Compose-Stack, volle Kontrolle über deine Daten.
✨ Funktionen
Erkennung
- TCP-Connect-Scanner mit masscan oder zmap als Erkennungs-Engine
- UDP-Probes auf konfigurierbaren Ports
- Eingegrenzt durch
SCAN_ALLOWED_CIDRSmit Host- und Port-Limits
Tiefen-Probes (~100 Protokolle)
- Web: HTTP/HTTPS, HTTP/3, GraphQL, Favicon-Hash,
robots.txt,security.txt, Tech-Stack - TLS: Zertifikatsketten, JARM, JA3S/JA4S, Konfigurationsbewertung
- Mail & Verzeichnisse: SMTP, POP3/IMAP, LDAP, IPMI
- Datenbanken & Queues: MySQL, PostgreSQL, MongoDB, Redis, Kafka, MQTT, NATS, AMQP…
- ICS/SCADA: Modbus, BACnet, DNP3, IEC 104, S7Comm, ENIP, OPC UA…
- IoT & Medien: ONVIF, RTSP, Chromecast, AirPlay, UPnP…
- Vollständige Liste in der Protokoll-Dokumentation
Anreicherung
- Reverse-DNS, GeoIP (MMDB), ASN
- Optionale Forward-DNS- und CT-Log-Erkennung
CVE & Risiko
- Lokaler NVD-Spiegel mit Hintergrund-Synchronisierung und Fingerprint-basiertem Abgleich
- CISA KEV und FIRST EPSS
Betrieb
- RBAC (
viewer/operator/admin), JWT + Refresh-Tokens - Scan-Zeitpläne, Pause/Fortsetzen, Übernahme verwaister Scans nach Worker-Neustart
- Prometheus
/metrics, optionales Grafana-Profil - Audit-Log, Ratenbegrenzung, Aufbewahrungsrichtlinien
🏗 Architektur
flowchart TB
Browser["Browser"]
FE["service-frontend<br/>React + nginx"]
API["uv-api<br/>REST · WS · metrics"]
PG[("PostgreSQL 16")]
SCAN["uv-scanner<br/>probe pipeline"]
Browser --> FE
FE -->|"/api"| API
FE -->|"/realtime"| API
API <--> PG
SCAN <--> PG
API -.->|LISTEN/NOTIFY| API
Das Release-UI-Image proxyt /api/ und /realtime an uv-api — Single Origin, kein Frontend-Rebuild pro API-URL.
| Verzeichnis | Zweck |
|---|---|
service-api/ | Go: uv-api (HTTP-API, WebSocket, Worker) + uv-scanner (Pipeline) |
service-frontend/ | React 19 + Vite + RTK — Scans, Hosts, Suche, Dashboard |
service-documentation-frontend/ | VitePress — Benutzer- und Betreiber-Dokumentation |
service-env/ | docker-compose, Secrets, install.sh / upgrade.sh / Backup |
Backend-Entwicklungsregeln: CLAUDE.md.
🚀 Schnellstart
Voraussetzungen: Go 1.25+, Docker Engine ≥ 24, ~4 GB RAM. Produktions-Images zielen auf Linux amd64.
Von Docker Hub ausführen (kein Quellcode-Build)
Einsteiger-Pfad — veröffentlichte Images pullen mit
service-env/docker-compose.registry.yml:
cd service-env
cp env.registry.example .env
# set POSTGRES_PASSWORD, AUTH_JWT_SECRET, AUTH_BOOTSTRAP_PASSWORD
mkdir -p geoip catalog-seed
docker compose -f docker-compose.registry.yml pull
docker compose -f docker-compose.registry.yml up -d
# UI → http://localhost:3000
Siehe Docker Registry in der Dokumentations-Site.
Aus dem Quellcode entwickeln
Die API/Scanner-Images kopieren vorgebaute Binaries aus service-api/bin/ (sie werden nicht innerhalb von Docker kompiliert). make dev führt make -C service-api build-linux aus, bevor docker compose … --build.
git clone https://github.com/yakushstanislav/UltraViolet.git
cd UltraViolet/service-env
cp .env.example .env
mkdir -p secrets
openssl rand -hex 32 > secrets/postgres_password
openssl rand -hex 32 > secrets/auth_jwt_secret
cd ..
make dev
| URL | Zweck |
|---|---|
| http://localhost:3000 | UI (API über nginx /api/) |
| http://localhost:8080 | API direkt |
| http://localhost:9090/metrics | Prometheus |
Dev-Bootstrap: admin / admin (nur wenn APP_ENV≠production).
📖 Dokumentation
Vollständige Anleitung — VitePress in service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
In Produktion das docs-Profil aktivieren:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Wichtige Abschnitte: Installation · Scannen · API · Bereitstellung · Offline-Installation.
🛠 Entwicklung
Vollständiges Docker
make dev # build-linux → compose prod + dev override --build
Go-Binaries nach Backend-Änderungen neu bauen (make -C service-api build-linux), dann neu starten oder make dev erneut ausführen.
Hybrid-Modus (schnellere Backend-Iteration)
make dev-db # PostgreSQL only on :5432