
InfraGuard ist ein Command & Control-Umleitungsproxy und -Manager, der Ihre Red-Team-Infrastruktur vor Attribution schützt.

Red-Team-Infrastruktur-Tracker und C2-Redirector -- eine moderne Alternative zu [RedWarden](https://github.com/mgeeky/RedWarden).
InfraGuard sitzt zwischen dem Internet und deinem C2-Teamserver, validiert jede eingehende Anfrage gegen dein malleable C2-Profil und blockiert alles, was nicht konform ist. Scanner, Bots und Blue-Team-Sonden werden auf eine Decoy-Site umgeleitet, während legitimer Beacon-Traffic zu deinem Teamserver durchgelassen wird.


## Architektur

## Funktionen
### Proxying & Listener
- **Multi-Domain-Proxying** -- proxy mehrere Domains gleichzeitig, jede mit unabhängigen C2-Profilen, Upstreams und Regeln
- **Multi-Protokoll-Listener** -- HTTP/HTTPS, HTTP/3 (QUIC), WebSocket, gRPC, DNS, MQTT und TCP-Tunnel-Listener laufen gleichzeitig mit gemeinsamer IP-Intelligence und Event-Tracking
- **Circuit Breaker** -- Schutz vor Ausfällen pro Upstream mit closed/open/half-open-Zuständen; fällt auf die Drop-Action der Domain zurück, wenn Backends nicht erreichbar sind
- **Protokoll-Failover** -- automatisches Failover und Failback zwischen Listener-Protokollen, nach Priorität geordnet
### C2-Profil-Unterstützung
- **C2-Profil-Validierung** -- Cobalt Strike-, Mythic-, Brute Ratel C4-, Sliver-, Havoc-, Nighthawk- und PoshC2-Profile als Redirector-Regeln parsen und durchsetzen
- **Hot-Swap-fähige Profile** -- das aktive C2-Profil einer Domain zur Laufzeit über das Dashboard austauschen, ohne den Proxy neu zu starten
- **Profil-Generierungs-Assistent** -- neue C2-Profile von Grund auf für alle 8 unterstützten Typen über ein geführtes Formular generieren oder bestehende Profile mit automatischer Typerkennung und Validierung importieren und hochladen
- **KI-gestützte Profilgenerierung** -- optionale Ollama-Integration bietet ein Chat-Panel im Dashboard für Hilfe bei der Profilerstellung und OPSEC-Beratung
### Filter-Pipeline
- **Scoring-basierte Filter-Pipeline** -- 10 Filter tragen jeweils einen Score von 0,0--1,0 bei; ein konfigurierbarer Schwellenwert bestimmt Block/Allow. Filter: JA3, IP, Bot, Header, DNS, Geo, Profil, Replay, Enumeration, Sandbox.
- **JA3-TLS-Fingerprint-Filterung** -- Masscan, ZGrab2, Shodan, curl, Python requests und Nmap auf TLS-Handshake-Ebene blockieren, bevor HTTP-Daten ausgetauscht werden; funktioniert über Reverse-Proxy-Header oder ein benutzerdefiniertes asyncio-Protokoll; optionaler Allowlist-Modus erzwingt Beacon-JA3
- **Sandbox- und Headless-Browser-Erkennung** -- Score-Akkumulation über HTTP-Signale: HeadlessChrome-UA, fehlendes Accept-Language, Chrome ohne sec-ch-ua, Safe-Links- und msnbot-Scanner-UAs, Nicht-Browser-Accept-Reihenfolge
- **Pfad-Enumeration-Erkennung** -- Verfolgung eindeutiger URIs pro IP in einem gleitenden Fenster; blockiert dirbuster/ffuf/gobuster, bevor sie den URI-Raum kartieren
- **DNS-Subdomain-Enumeration-Erkennung** -- verfolgt NXDOMAIN-Antworten pro Client-IP; blockiert Quell-IPs automatisch bei Überschreitung des Schwellenwerts
- **Anti-Bot / Anti-Crawling** -- über 40 bekannte Scanner-/Bot-User-Agent-Muster, Header-Anomalie-Erkennung
- **Replay-Schutz** -- doppelte Anfragen per Content-Hash ablehnen; Hashes werden in SQLite persistiert, sodass der Schutz Neustarts übersteht
- **Drop-Actions** -- Redirect, TCP-Reset, Proxy zu Decoy-Site oder Tarpit (langsame Antwort, um Scanner-Zeit zu verschwenden)
### Intelligence
- **IP-Intelligence** -- integrierte CIDR-Blocklisten für 19 Security-Vendor-Bereiche (Shodan, Censys, Rapid7 usw.), GeoIP-Filterung, Reverse-DNS-Keyword-Matching
- **Threat-Intel-Feeds** -- automatische Aktualisierung von Blocklisten aus öffentlichen Quellen (abuse.ch, Emerging Threats, Spamhaus DROP, Binary Defense) mit konfigurierbarem Aktualisierungsintervall und Disk-Caching
- **Dynamische IP-Blockierung** -- IPs außerhalb von Whitelist-Bereichen blockieren; IPs nach N gültigen C2-Anfragen automatisch auf die Whitelist setzen
- **Whitelist-Anreicherung** -- Whitelisted CIDRs werden beim Start über GeoIP-Datenbanken automatisch mit ASN-, Organisation-, Länder- und Kontinentdaten angereichert
- **Burn-Erkennung** -- Certificate-Transparency-Log-Überwachung über crt.sh, Domain-Reputation-Selbstüberwachung über URLhaus/OpenPhish/Google Safe Browsing und Cross-Domain-Analyst-Erkennung, wenn eine einzelne IP auf mehrere Operator-Domains zugreift
- **Burn-Confidence-Scoring** -- kontinuierlicher Score von 0--100 aus 6 gewichteten Signalen: JA3-Diversität, Volumenspitzen, neue ASNs, CT-Log-Exposition, Reputation-Treffer und fehlgeschlagene Auth-Versuche. Enthält empfohlene Aktionen: monitor, rotate oder immediate burn.
- **Canary-Token-Injection** -- Tracking-Pixel, Honeypot-Links und Honeypot-Formulare werden automatisch in Decoy-Seiten injiziert, um Blue-Team-Untersuchungen zu erkennen
- **Passives DNS-Monitoring** -- fragt CIRCL PDNS nach externer Auflösung deiner Domains ab; erkennt neue Records, NXDOMAIN-Spitzen und erstmalige Exposition
### Payload-Auslieferung
- **Content-Delivery-Routen** -- Payloads, Decoys und statische Dateien unter bestimmten Pfaden über PwnDrop, Mythic File Store, lokales Dateisystem oder HTTP-Proxy-Backends ausliefern; optionale bedingte Auslieferung, um echten Inhalt an Ziele und Decoys an Scanner auszuliefern
- **Mythic-File-Staging** -- `mythic_file`-Backend proxyt Mythics `/direct/download/{uuid}` unter sauberen URLs; feste UUID oder Proxy-Modus; Zugriffskontrolle durch InfraGuards Filter-Stack
- **Einmal-Payload-Tokens** -- Tokens werden automatisch ausgegeben, wenn ein Beacon dynamisch auf die Whitelist gesetzt wird; atomare Single-Use-Durchsetzung in SQLite verhindert URL-Replay durch Analysten oder Sandboxes; konfigurierbare TTL und maximale Nutzungsanzahl
- **Rate-Limiting pro Route** -- gleitendes Download-Rate-Limit pro IP auf Content-Routen; bei Überschreitung wird der konfigurierte Scanner-Decoy oder 429 ausgeliefert
- **Delivery-Guards** -- Environment-Keying für Content-Routen: Beacon-IP erforderlich, UA-Allowlist, erforderliche Header-Werte, verbotene Header; fehlgeschlagene Prüfungen lösen die Drop-Action der Domain aus, nicht ein rohes 403
- **Phishing-Kampagnen-Tokens** -- Phishing-Seiten hinter kampagnenspezifischen Tokens absichern, die in E-Mail-Links eingebettet sind; statische Token-Liste oder HMAC-signierte, selbstvalidierende Tokens mit konfigurierbarer TTL
### Resilienz
- **Infrastruktur-Rotation** -- Blue-Green-Terraform-Rotation per Ein-Klick über 5 Cloud-Anbieter mit Pre-Flight-Checks, Rollback und age-verschlüsseltem State
- **Rotations-Planung** -- automatisierte Rotationsrichtlinien: festes Intervall, Burn-Trigger, Request-Count-Schwellenwert und gestaffeltes Rolling
- **Auto-Rotation-Watchdog** -- fragt Burn-Score und Zertifikatsablauf in einem Intervall ab; rotiert automatisch, wenn der Burn-Schwellenwert ausgelöst wird oder ein Zertifikat weniger als N Tage Restlaufzeit hat, oder fällt auf einen Alert-Only-Modus mit Kostenobergrenze zurück
- **Circuit Breaker** -- Fehlerverfolgung pro Upstream mit HEALTHY-/PROBING-/TRIPPED-Zuständen und konfigurierbarem Recovery-Timeout, live im Upstreams-Widget des Dashboards sichtbar
- **Domain Fronting** -- CDN-basiertes C2-Routing über SNI/Host-Header-Split mit CDN-Header-Stripping und SSRF-Schutz
- **Dead Man's Switch** -- Operator-Heartbeat-TTL, die die C2-Weiterleitung automatisch stoppt, wenn der Operator sich nicht meldet
- **Purple-Team-Mirror** -- Fire-and-Forget-Duplikat erlaubter Events an einen Blue-Team-Collector für Engagement-Scoring
- **Shared-State-Backend (Redis)** -- optionaler knotenübergreifender Replay-Cache, dynamische Whitelist, Beacon-Session-Bag und Drop-Rate-Limit, damit horizontal skalierte Replikate denselben Zustand sehen
- **Edge-Proxies** -- Cloudflare Worker und AWS Lambda für Domain Fronting über CDN-Infrastruktur, Edge-Länderblockierung und Host-Rewriting
### Dashboard & Operator-Tools
- **Web-Dashboard** -- Echtzeit-SPA mit Login-Seite, Live-Request-Feed, Domain-Statistiken, Top-blockierten IPs, WebSocket-Event-Streaming und Inline-Aktionen zum Blockieren/Whitelisten/Entsperren
- **Decoy-Seiten-Verwaltung** -- Decoy-HTML-Seiten direkt im Dashboard auflisten, in der Vorschau anzeigen und bearbeiten; pro Domain eine **Canary-Übersicht** (Pixel-/versteckter-Link-/verstecktes-Formular-Umschalter) und ein **Canary-Hits**-Panel, das jeden Scanner oder jede Sandbox anzeigt, die ein Decoy-Asset abgerufen hat
- **Decoy-Tokens mit dedizierten Callback-Endpunkten** -- injiziertes Tracking-Pixel, versteckter Link und verstecktes Formular lösen jeweils ein `canary_hit`-Event auf `/_ig/px|hp|hf?c=<token>` aus; Treffer landen mit `filter_result=canary_hit` in der Tracking-DB und werden live auf die Decoys-Seite und an jedes abonnierte Alerter-Plugin gestreamt
- **Plugins-Tab** -- listet geladene Plugins mit Laufzeit-Umschaltern `enable / disable` (kein Neustart) und einen **Plugin Marketplace**, um eines der 29 integrierten Plugins mit einem Klick hinzuzufügen; jede Änderung wird in `config.yaml` persistiert und landet als Commit im Config-History-Repo
- **Command Post** -- Multi-Instanz-Aggregations-Dashboard, das Statistiken, Requests und Live-Events mehrerer InfraGuard-Knoten in einer einzigen Ansicht zusammenführt, mit einer **Fleet Map** (MapLibre), die jeden Proxy plus jede blockierte Quell-IP an ihrer geolokalisierten Lat/Lon-Position darstellt, und einem Fan-Out-Plugin-Umschalter für knotenübergreifende Operationen
- **Terminal-UI** -- Textual-basierte TUI mit Login-Bildschirm, Live-API-Polling, farbcodiertem Request-Log
- **Engagement-Berichte** -- eigenständige HTML-, JSON- oder CSV-Berichte mit Aufschlüsselung pro Domain, Filter-Effektivität und Operator-Audit-Trail
- **Prometheus-Metriken** -- `/metrics`-Endpunkt mit Request-Zählern, Upstream-Latenz-Histogrammen, Circuit-Breaker-Zustand, Feed-Frische, aktiven Verbindungen und der `infraguard_active_beacons`-Gauge, auf die der Helm-HPA skaliert
- **OpenTelemetry** -- optionaler OTLP-Traces-+-Metriken-Exporter; das Observability-Compose-Profil startet einen OTEL-Collector plus Prometheus + automatisch bereitgestelltes Grafana-Übersichts-Dashboard
- **Kubernetes-Helm-Chart** -- Proxy, Dashboard, Redis-StatefulSet, ServiceMonitor und HPA auf der Active-Beacon-Gauge; ausgeliefert unter `deploy/helm/infraguard/`
### Integrationen & Plugins
- **SIEM-Integration** -- integrierte Plugins für Elasticsearch, Wazuh und Syslog (CEF/JSON) mit gebündelter Weiterleitung
- **Webhook-Alerts** -- integrierte Plugins für Discord (Embeds), Slack (Block Kit), generischen Webhook, **PagerDuty** (Events API v2, dedupliziert per Key) und **Telegram** (Zwei-Wege-Ops-Chat: `/status`, `/sessions`, `/kill`, `/ack` vom Handy)
- **Detection-Plugins** -- YARA-Regeln über Request-Bodies, GreyNoise-Community-Lookup, ML-Bot-Klassifikator (logistische Regression auf JA4 + UA + Timing), Response-Canary (canarytokens.org), p0f-v3-Fingerprinting, JA4/JA4H-Anreicherung, GeoIP-Anreicherung
- **Response-Manipulatoren** -- HTML-Rewriter, Payload-Watermark, Signature-Stripper, JS-Challenge, Cache-Mimikry, Slow-Tarpit, Shadow-Block (200 an Scanner zurückgeben, damit sie sich nie anpassen)
- **Phishing.club-Integration** -- HMAC-signierter Webhook-Empfänger, der Phishing-Events aufnimmt und klickende Ziel-IPs automatisch auf die Whitelist setzt
- **Plugin-System** -- ereignisgesteuerte Architektur mit `on_event`-Hooks, Konfiguration pro Plugin und Event-Filterung; jedes Plugin kann über den **Plugins**-Tab des Dashboards ohne Neustart umgeschaltet oder geladen werden, und die Änderung wird mit einem Config-History-Audit-Commit zurück in `config.yaml` persistiert
### Konfiguration & Deployment
- **Config-Verschlüsselung** -- age- (gesamte Datei) und SOPS-Verschlüsselung (pro Wert) mit `.env`-Datei-Unterstützung
- **Config-Validierung** -- CLI-Diff-Tool und über 20 Sicherheits-, Betriebs- und TLS-Validierungsprüfungen
- **API-Key-Verwaltung** -- API-Keys erstellen, widerrufen und rotieren mit Rate-Limits pro Key, Nutzungsverfolgung und Quotas
- **Backend-Config-Generierung** -- Nginx-, Caddy- oder Apache-Configs mit TLS, IP-Filterung, Header-Prüfungen, Aliassen und benutzerdefinierten Headern generieren
- **Regel-Ingestion** -- IP-Blocklisten und User-Agent-Muster aus bestehenden `.htaccess`- und `robots.txt`-Dateien importieren
- **Docker-Deployment** -- Dockerfile + docker-compose mit optionalem Let's Encrypt, GeoIP-Downloader, PwnDrop-Payload-Server und Ollama-KI-Assistent
- **GeoIP-Unterstützung** -- alle drei GeoLite2-Datenbanken (City, ASN, Country) mit Docker-Auto-Download
- **Selbstsignierter TLS-Fallback** -- generiert Zertifikate automatisch, wenn konfigurierte Pfade nicht existieren
- **Umgebungsvariablen-Unterstützung** -- `.env`-Datei wird automatisch geladen; `${VAR}`-Syntax funktioniert in allen Config-Werten und -Keys
- **Konfigurierbarer Health-Endpunkt** -- den Health-Check-Pfad ändern, um Fingerprinting zu vermeiden
- **Strukturiertes Logging** -- JSON-formatierte strukturierte Logs via structlog
- **Tracking & Persistenz** -- SQLite mit WAL-Modus für Request-Logging, Statistiken, Node-Registry, Replay-Hashes und Payload-Tokens
## Installationsanleitung
Siehe die [Wiki-Seite](https://infraguard.whispergate.org/docs/getting-started/installation/) für die Installation
## CLI-Referenz```
infraguard --version Show version
infraguard --help Show help
infraguard run -c config.yaml Start the reverse proxy
infraguard run -c config.yaml --port 8443 Override listen port
infraguard run -c config.yaml --host 0.0.0.0 Override bind address
infraguard dashboard -c config.yaml Start the web dashboard
infraguard dashboard -c config.yaml --port 9090 Override dashboard port
infraguard tui Launch TUI with login screen
infraguard tui --url http://host:8080 --token TOK Auto-connect to dashboard
infraguard tui -c config.yaml Read URL/token from config
infraguard command-post -c command-post.yaml Start multi-instance dashboard
infraguard command-post --instance name:url:token Add instance via CLI (repeatable)
infraguard profile parse <file> Parse and display a C2 profile
infraguard profile parse <file> --format json Output as JSON
infraguard profile parse <file> --type brute_ratel Force profile type
infraguard profile convert <file> -o out.json Convert profile to JSON
# Supported --type values: auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# Auto-detection: .profile = CS, .toml = Havoc, .yaml = PoshC2, .json = auto-detect by keys
infraguard ingest <files...> Ingest .htaccess/robots.txt rules
infraguard ingest <files...> --format blocklist Output as IP blocklist
infraguard ingest <files...> --format json Output as JSON
infraguard ingest <files...> -o banned_ips.txt Write blocklist to file
infraguard generate nginx -c config.yaml Generate Nginx config
infraguard generate caddy -c config.yaml Generate Caddyfile
infraguard generate apache -c config.yaml Generate Apache VirtualHost
infraguard init -o config.yaml Generate starter config
infraguard validate -c config.yaml Validate config file
infraguard simulate-beacon -c config.yaml --domain <d> Run one synthetic beacon
through the loaded filter
pipeline in-process
infraguard drop-preview -c config.yaml --domain <d> Render the drop-action
response without any live
traffic (decoy / redirect
/ tarpit preview)
infraguard events tail -c config.yaml Tail the tracking DB as a
structured event stream
infraguard profile transpile <in> --to <c2> Convert a C2 profile
between formats using the
shared profile IR
infraguard preflight -c config.yaml Adversary-emulation
self-test: DNS, cert,
upstream, decoy dir,
writes a Markdown report
infraguard config set <domains.<d>.upstream> <value> Mutate config from CLI;
writes .bak, atomic file
replace, and commit to the
config-history git repo
infraguard config log Show mutation history
infraguard config revert HEAD~N Roll back N mutations
```
### Generator-Optionen
Der Befehl `generate` akzeptiert zusätzliche Flags zur Anpassung durch den Betreiber:
| Flag | Beschreibung |
|---|---|
| `--listen-port PORT` | Listen-Port überschreiben (Standard: aus Konfiguration) |
| `--ssl-cert PATH` | SSL-Zertifikatspfad überschreiben |
| `--ssl-key PATH` | SSL-Schlüsselpfad überschreiben |
| `--redirect-url URL` | Weiterleitungs-URL für blockierte Anfragen überschreiben |
| `--default-action redirect\|404` | Aktion für nicht übereinstimmende Anfragen |
| `--no-ip-filter` | IP-Allow/Deny-Blöcke weglassen |
| `--no-header-check` | Header-Validierungsregeln weglassen |
| `--alias DOMAIN:ALIAS` | Server-Namensalias hinzufügen (wiederholbar) |
| `--header NAME:VALUE` | Benutzerdefinierten Antwort-Header hinzufügen (wiederholbar) |
## Command Post (Multi-Instanz-Dashboard)
Wenn mehrere InfraGuard-Instanzen auf verschiedenen VPSes oder Cloud-Anbietern betrieben werden, aggregiert der Command Post Statistiken, Anfragen und Live-Ereignisse von allen Knoten in einem einzigen Dashboard.```
┌─────────────────────────────┐
│ Command Post Dashboard │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ parallel fetch
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N
```

### Schnellstart```bash
# Via config file
infraguard command-post -c config/command-post.yaml
# Via CLI args
infraguard command-post \
--instance "prod:https://ig1.example.com:8080:TOKEN1" \
--instance "staging:https://ig2.example.com:8080:TOKEN2" \
--port 9090
# Via Docker
docker compose --profile command-post up -d command-post
```
### Konfiguration
Erstellen Sie `config/command-post.yaml`:```yaml
instances:
- name: "prod-cs"
url: "https://ig1.example.com:8080"
token: "${IG_PROD_TOKEN}"
- name: "prod-mythic"
url: "https://ig2.example.com:8080"
token: "${IG_MYTHIC_TOKEN}"
- name: "staging"
url: "https://ig3.example.com:8080"
token: "${IG_STAGING_TOKEN}"
port: 9090
# auth_token: "${COMMAND_POST_TOKEN}"
```
### Was es anzeigt
- **Zusammengeführte Statistiken** -- Gesamtanfragen, erlaubt, blockiert, summiert über alle Instanzen
- **Instanz-Statusleiste** -- grüner/roter Status für jeden verbundenen Knoten
- **Verschachteltes Anfrageprotokoll** -- Anfragen von allen Instanzen nach Zeitstempel sortiert, jede mit ihrem Instanznamen gekennzeichnet
- **Zusammengeführte Top-blockierte IPs** -- aggregiert über alle Instanzen
- **Statistiken pro Domain** -- Domains von allen Instanzen mit neu berechneten Blockraten
- **Live-Event-Feed** -- multiplexte WebSocket-Events von allen Knoten
- **Block-/Whitelist-Aktionen** -- Verteilung an alle Instanzen oder eine bestimmte
### API-Endpunkte
| Endpunkt | Methode | Beschreibung |
|---|---|---|
| `/api/instances` | GET | Alle Instanzen mit Status auflisten |
| `/api/stats` | GET | Zusammengeführte Statistiken von allen Instanzen |
| `/api/requests` | GET | Verschachteltes Anfrageprotokoll von allen Instanzen |
| `/api/intel/whitelist` | POST | Eine IP auf allen Instanzen auf die Whitelist setzen |
| `/api/intel/blocklist` | POST | Eine IP auf allen Instanzen blockieren |
| `/api/intel/blocklist` | DELETE | Die Blockierung einer IP auf allen Instanzen aufheben |
| `/ws/events` | WS | Multiplexte Live-Events von allen Instanzen |
## Docker-Bereitstellung
### Schnellstart```bash
cp .env.example .env
# Edit .env with your domain, teamserver, and token
docker compose up -d
```
Dies startet zwei Dienste:
- **proxy** -- der Redirector auf den Ports 443 und 80
- **dashboard** -- die Web-UI auf Port 8080
### Mit Let's Encrypt```bash
# Set in .env:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# Obtain the initial certificate
docker compose --profile letsencrypt up certbot
# Start the proxy (will use the LE cert)
docker compose up -d proxy dashboard
# Start auto-renewal (checks every 12 hours)
docker compose --profile letsencrypt up -d certbot-renew
```
Voraussetzungen für Let's Encrypt:
- Port 80 muss aus dem Internet erreichbar sein
- `INFRAGUARD_DOMAIN` muss auf die öffentliche IP dieses Hosts auflösen
- `INFRAGUARD_DOMAIN_EMAIL` muss eine gültige E-Mail-Adresse sein
### Mit GeoIP-Datenbanken```bash
# Download all three GeoLite2 databases (City, ASN, Country)
docker compose --profile geoip up geoip-update
# Then start normally - databases are mounted at /app/geoip/
docker compose up -d proxy dashboard
```
### Mit PwnDrop (Payload-Bereitstellung)```bash
# Start PwnDrop alongside the proxy
docker compose --profile pwndrop up -d pwndrop
# Access PwnDrop admin UI at https://localhost:8443
# InfraGuard reaches it internally at http://pwndrop:80
```
Dann konfigurieren Sie Content-Routen in Ihrer Konfiguration, um Payload-Pfade an PwnDrop weiterzuleiten:```yaml
domains:
cdn.example.com:
content_routes:
- path: "/downloads/*"
backend:
type: "pwndrop"
target: "http://pwndrop:80"
auth_token: "${PWNDROP_TOKEN}"
```
### Mit Ollama (KI-gestützte Profilerstellung)```bash
# Start the Ollama service
docker compose --profile ollama up -d ollama
# Pull the default model (~5 GB)
docker compose --profile ollama exec ollama ollama pull qwen3:8b
# The dashboard's AI chat panel will connect automatically
```
Die Dashboard-Umgebungsvariable `INFRAGUARD_OLLAMA_URL` ist in docker-compose.yml vorkonfiguriert. Wenn Ollama läuft, erscheint der KI-Assistent-Schalter auf der Decoys- und Profile-Seite des Dashboards.
### Skalierung```bash
# Run multiple redirector nodes
docker compose up -d --scale proxy-node=3
```
Kommentiere den `proxy-node`-Dienst in `docker-compose.yml` aus, um ihn zu aktivieren.
### Volumes
| Volume | Zweck |
|---|---|
| `./config` | Konfigurationsdateien (schreibgeschützt eingebunden) |
| `./examples` | C2-Profile (schreibgeschützt eingebunden) |
| `./rules` | Eingelesene Blocklisten und Regelquelldateien (schreibgeschützt eingebunden) |
| `./data` | SQLite-Datenbank und generierte Profile (persistent) |
| `certs` | TLS-Zertifikate (gemeinsam genutzt von Proxy und certbot) |
| `geoip` | GeoLite2-Datenbanken (befüllt durch den `geoip-update`-Dienst) |
| `pwndrop-data` | Von PwnDrop hochgeladene Dateien und Datenbank |
| `ollama-data` | Ollama-Modellgewichte und -Konfiguration |
> Auf Linux-Hosts `chown -R 1000:1000 config/` ausführen, wenn dashboard-gesteuerte Änderungen
> (drop-action, Profilwechsel, Plugin-Umschaltung) zurück in `config.yaml` persistiert werden sollen. Die
> nicht-root-uid des Containers benötigt Schreibberechtigung auf dem Mount.
## Kubernetes-Deployment
Das Helm-Chart unter `deploy/helm/infraguard/` deployt den Proxy, das Dashboard, das Redis-
StatefulSet und einen HPA, der den Proxy anhand der benutzerdefinierten Metrik `infraguard_active_beacons`
skaliert (erfordert `prometheus-adapter` im Cluster). Siehe die Wiki-Seite
[Kubernetes Deployment](https://infraguard.whispergate.org/docs/deployment/kubernetes/)
für die vollständige Anleitung.```bash
# One-shot install
helm install infraguard deploy/helm/infraguard \
--namespace infraguard --create-namespace \
-f my-values.yaml
# Get the API token the chart minted
kubectl get secret -n infraguard infraguard-secrets \
-o jsonpath='{.data.INFRAGUARD_API_TOKEN}' | base64 -d
```
Die Probes des Charts erreichen `/health` auf dem HTTPS-Listener mit `scheme: HTTPS`, daher benötigt der Container einen `tls:`-Block in der Konfiguration (Self-Signed-Fallback ist in Ordnung).
## Beiträge
- Mgeeky - Ursprüngliche Idee ([RedWarden](https://github.com/mgeeky/RedWarden))
- curi0usJack - [.htaccess-Regeln](https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10)
- Profile
- threatexpress - [jquery-c2.3.14.profile](https://github.com/threatexpress/malleable-c2/blob/master/jquery-c2.3.14.profile)
- InfinityCurve - [Havoc-Profil](https://github.com/whispergate/infraguard/blob/main/examples/kaine.toml)
- C2-Frameworks
- [Cobalt Strike](https://www.cobaltstrike.com/) - Unterstützung für Malleable-C2-Profile
- [Mythic](https://github.com/its-a-feature/Mythic) - HTTPX-Profil-Unterstützung + Datei-Staging
- [Brute Ratel C4](https://bruteratel.com/) - Unterstützung für Server-Konfigurationsprofile
- [Sliver](https://github.com/BishopFox/sliver) - Unterstützung für HTTP-C2-Profile
- [Havoc](https://www.infinitycurve.org/) - TOML-Profil-Unterstützung
- [Nighthawk](https://nighthawkc2.io/) - Unterstützung für JSON-Listener-Konfiguration
- [PoshC2](https://github.com/nettitude/PoshC2) - YAML-Konfigurationsunterstützung
Wenn du zum Projekt beitragen möchtest, erstelle bitte einen neuen Branch mit dem Versionsnamen und gib denselben Versionsnamen im Pull Request an. Z. B. branch=v1.2.3 | [v1.2.3] Added blah item.
## Lizenz
BSD 2-Clause License. Siehe [LICENSE](https://github.com/whispergate/infraguard/blob/main/LICENSE) für Details.
Copyright (c) 2026, Whispergate