Jedes VLAN.
Ein Resolver.

Warden ist der self-hosted DNS-Filter fürs Unternehmen — Phishing, Malware und Tracker fallen, bevor eine Verbindung überhaupt zustande kommt. On-prem oder in deiner privaten Cloud. Kein Cloud-Konto, keine Gebühren pro Arbeitsplatz.

Bereitstellung

Eine statische Binärdatei auf einer VM, Bare Metal oder einem Container-Host, den du sowieso schon betreibst — Linux amd64 / arm64. Keine Appliance zum Kaufen, keine Agenten auf den Endgeräten.

Souveränität

On-prem oder private Cloud. DNS-Logs sind personenbezogene Daten nach der DSGVO — bei Warden verlassen sie dein Netz nie. Keine Telemetrie, kein Konto, nichts funkt nach Hause.

Konfig als Code

Die ganze Konfiguration ist eine deklarative TOML-Datei: in Git versionieren, in Pull Requests prüfen, mit einem Befehl wiederherstellen.

TCO

AGPLv3 — keine Lizenz pro Arbeitsplatz, kein Abo, kein lock-in. Dein Sicherheitsteam kann jede Zeile prüfen.

Bedrohungsschutz

Stopp, bevor die Verbindung steht.

Jedes Gerät muss DNS auflösen — filterst du dort, sterben Tracker, getarnte CNAME-Hops und DNS-Tunnel vor dem ersten Paket. Kein Agent auf dem Endgerät. Es gilt auch für Geräte, die du nicht verwaltest: Laptops von Externen, IoT, Drucker.

CNAME-Jagd

Der Alias-Kette folgen.

Tracker, getarnt als First-Party-Domains, Hop für Hop — bis zu 16 — und trotzdem blockiert.

Quelle src/filter/cname.rs

Abonnierte Listen in der Sandbox

Ein Feed entsperrt sich nicht selbst.

Listen, die du abonnierst, schmuggeln kein allow, kein $important und kein regex. Diese Kräfte haben nur Regeln, die dein Team schreibt.

Quelle src/lists/parser.rs

Tunnel bekommen REFUSED

Exfil gibt sich nicht als DNS aus.

Ein Schwall einzigartiger Namen ohne Cache-Treffer unter einer Domain — die übliche Form von DNS-Exfil. Warden verweigert diese Anfragen. Standardmäßig an.

Quelle src/security/tunneling.rs

Nur allow-list, wo du sie brauchst

IoT und OT, abgeschlossen.

Setze block_all auf einem Profil und durch kommt nur, was der Admin erlaubt — Drucker, Kameras, Gebäudetechnik bleiben auf den Namen, die du eingetragen hast.

Quelle src/config/schema/profile.rs
Kontrolle pro Abteilung

Eine Richtlinie
pro Abteilung.

Finanzen, Entwicklung, das Gäste-WLAN. Jede Gruppe bekommt eigene Regeln — am Gerät, an der Gruppe oder am Subnetz.

Profile pro Gruppe

Blöcke, Ausnahmen, Zeitpläne.

Eine Gerätegruppe teilt sich ein Profil — Listen, Ausnahmen, block-all. Einen Zeitplan hängst du an die Gruppe, wenn das Zeitfenster zählt.

Quelle src/config/schema/group.rs

Richtlinien pro Subnetz

Ein CIDR ist hier ein VLAN.

Ein CIDR auf ein Profil legen. Personal, Gäste, IoT, OT — jeder Bereich eigene Regeln. Längster Prefix gewinnt.

Quelle src/config/schema/subnet.rs

Unbekannte Geräte: REFUSED

DNS auf Opt-in.

Lass das Standardprofil leer und alles, was du nicht zugeordnet hast, bekommt REFUSED. Gäste-Handys und neues IoT haben kein DNS, bis du es sagst.

Quelle src/dns/handler.rs

Bedingtes Forwarding

Die Firmendomain bleibt intern.

Eine Zone an einen anderen Resolver schicken — corp.example.com an die DCs, der Rest durch Warden. Längstes Suffix gewinnt.

Quelle src/upstream/forwarding.rs
Betrieb und Audit

Dein Monitoring,
gefüttert. Nicht ersetzt.

Filtern ohne Abfragen aufzuzeichnen, oder das volle Log behalten. Änderungen an der Konfig schreiben einen Audit-Trail. Metriken, wenn du sie einschaltest — keine neue Datenbank.

Filtern ohne Aufzeichnung

Datenschutz bleibt an.

Das Filtern bleibt aktiv, wenn du das Anfragenlog ausschaltest — oder bei blocked-only / sampled bleibst. Abfragen müssen kein Audit von Personen sein.

Quelle src/config/settings.rs

Append-only-Audit-Log

Wer die Konfig geändert hat.

Eine JSON-Zeile pro Reload, Boot, Shutdown und Mutation — uid, Dateien, SHA-256 vorher/nachher. warden audit tail liest sie.

Quelle src/config/audit.rs

Prometheus /metrics

Opt-in. Standardmäßig aus.

OpenMetrics auf /metrics, wenn die API läuft und Metriken an sind. Kein Exporter-Sidecar. Standardmäßig aus.

Quelle src/api/routes.rs

Response Rate Limiting

Amplification, gedrosselt.

Budget pro Client innerhalb von allow_from; pro Prefix außerhalb. Gefälschte Quellen werden verworfen oder auf TCP umgeleitet. Standardmäßig an.

Quelle src/security/rrl.rs