CenturionDNS1 ist seit Jahren kein Experiment mehr, sondern eine bewusst scharf konturierte Resolverinfrastruktur, die sich gegen den Mainstream der bequemen, datenhungrigen DNS-Dienste2 stellt. Im Dezember 2025 habe ich an der Oberfläche vergleichsweise kleine, inhaltlich jedoch sehr gezielte Anpassungen vorgenommen, welche die interne Architektur, das Security-Audit3 vom November und die nach aussen kommunizierte Dokumentation wieder in einen vollkommen sauberen Gleichklang bringen. Gerade bei einem Dienst, der bewusst öffentlich erreichbar ist, aber unter streng eigenen Sicherheits- und Privacy-Prämissen betrieben wird, toleriere ich keine Diskrepanzen zwischen Konfiguration und Beschreibung.
Im Kern bleibt das Architekturprinzip unverändert: nginx4 als TLS-Terminator und Reverse-Proxy, AdGuard Home5 als Policy- und Filterinstanz, Unbound6 als DNSSEC7-validierender, rekursiver Resolver8 im Hintergrund. Diese Schichtung erzwingt eine klare Trennung von Verantwortlichkeiten. Verschlüsselung, HTTP/29 und HTTP/310 laufen sauber im Proxy, Feinsteuerung von Blocklisten, DoH11, DoT12, DoQ13 und Plain DNS liegen bei AdGuard, während Unbound ausschliesslich für Integrität, DNSSEC, DANE14, QNAME-Minimisation15 und die tiefer verankerte Threat-Policy verantwortlich ist. Das Security-Audit vom November 2025 hat genau dieses Modell als Zielbild beschrieben; die aktuellen Anpassungen präzisieren im Grunde nur, was dort bereits angelegt war.
Ein wichtiger Schritt betraf die Transportverschlüsselung16. Die Dokumentation sprach zeitweise vereinfachend von „AES-256 only“, während die reale Konfiguration differenzierter arbeitet. Ich habe die öffentliche Beschreibung nun so nachgezogen, dass sie exakt zu den tatsächlich aktivierten Cipher Suites17 passt. Damit ist klar, welche Profile auf den DoH-Endpunkten verhandelt werden, welche Kombinationen aus TLS 1.318, Forward Secrecy19 und starken Algorithmen tatsaächlich erlaubt sind und weshalb schwächere Altlasten konsequent draussen bleiben. HSTS20, SVCB-Records21 22 mit verpflichtenden Parametern wie „alpn“ und „dohpath“ sowie DANE für die eigenen Zonen ergeben zusammen ein geschlossenes Bild: wer mit CenturionDNS spricht, tut dies unter klar definierten, modernen Kryptoparametern oder gar nicht.
Deutlich sichtbarer nach aussen ist die nun explizit dokumentierte Trennung zwischen klassischer Werbe- und Trackingblockade einerseits und harter Malware-Abwehr andererseits. Bisher liefen beide Welten in der Beschreibung gerne ineinander, auch wenn sie intern schon sauber geschieden waren. AdGuard Home bedient sich einer sehr umfangreichen Hostlistenbasis, die ich unter dem Label «Centurion Titanium Ultimate»23 zusammenfasse. Über sechzig Quelllisten werden zu einer konsistenten Gesamtliste konsolidiert, aktuell gut 3’300’000 Domains, die hauptsächlich Werbung, Telemetrie, Cross-Site-Tracking und ähnlichen Unrat betreffen. Für diese Kategorie nutze ich bewusst das Antwortschema 0.0.0.0. Der Client erhält eine formell gültige Adresse, verbindet sich aber ins Leere, ohne je beim ursprünglich intendierten Host anzukommen. Dieses Verhalten ist kompatibel mit der Logik klassischer Hostfile-Blocker und führt im Alltag zu sehr robusten, wenig überraschenden Resultaten.
Der deutlich sensiblere Teil der Policy sitzt eine Schicht tiefer in Unbound. Dort laufen Threat-Intelligence-Quellen wie ThreatFox24, FireHOL Level 425 und Fullbogon-Listen26 zusammen. Sobald eine Domain oder ein Zielnetz als aktiv maliziös klassifiziert ist, greift eine strikt sicherheitsgetriebene Entscheidung: Unbound antwortet mit NXDOMAIN 27 oder verwirft die Anfrage direkt, etwa bei ungültigen oder nicht routbaren Netzen. Die Domain wird damit nicht „umgebogen“, sondern logisch negiert. Aus Sicht des Clients existiert sie schlicht nicht. Diese Semantik ist für Schadsoftware, Command-and-Control-Infrastruktur und aggressiven Missbrauch deutlich sinnvoller als eine neutrale Adresse wie 0.0.0.0, weil keinerlei Interpretationsspielraum bleibt. Die öffentliche Dokumentation spiegelt dies nun ausformuliert wider: kosmetische Filterung via AdGuard mit 0.0.0.0 oben, harte Sicherheitsmassnahmen via Unbound mit NXDOMAIN unten.
Spannend ist in diesem Zusammenhang das Zusammenspiel beider Ebenen. AdGuard entscheidet zuerst. Liegt eine Domain in den eigenen Blocklisten, kommt sie nie bei Unbound an und erhält das AdGuard-Antwortschema. Passiert sie die Filterung, befragt AdGuard den Upstream. Meldet Unbound dann aufgrund einer Threat-Policy NXDOMAIN, reicht AdGuard diese Antwort unverändert an den Client weiter. Die Option, wie AdGuard „eigene“ Blocklist-Treffer beantwortet, hat keinen Einfluss auf Upstream-NXDOMAIN. Damit ergibt sich genau die Unterscheidung, die ich beabsichtige: Werbung und Verbraucherdatenhandel werden kosmetisch ausgeblendet, sicherheitskritische Ziele werden auf Protokollebene negiert.
Ergänzt habe ich im Dezember auch einige Punkte, die im Alltag leicht untergehen, bei öffentlichen Resolvern jedoch entscheidend sein können. ANY-Queries werden explizit verworfen, diesen Punkt habe ich nun auch öffentlich dokumentiert. Dieser Abfragetyp ist historisch gewachsen, wird von normalen Anwendungen praktisch nicht genutzt und eignet sich hervorragend für Amplification-Angriffe28 oder plumpe Reconnaissance. Wer DNS ernsthaft analysiert, arbeitet gezielt mit A, AAAA, MX, TXT, HTTPS29 und den üblichen Verdächtigen; ein pauschales „gib mir alles“ hat aus meiner Sicht in einem gehärteten Setup keinen Platz. Parallel dazu behandle ich Spezial-Domains wie die DoH-Canaries von Firefox, Chrome-Preflight-Mechanismen und iCloud-Private-Relay gezielt, damit moderne Clients ihre eigenen Kontrollmechanismen nutzen können, ohne an den Sicherheitsmassnahmen zu scheitern. Die Policy ist also streng, aber nicht ignorant gegenüber den Eigenheiten aktueller Software.
Weiterhin unverändert, allerdings inzwischen besser dokumentiert, bleiben die Rate-Limits. Pro /24 im IPv4-Bereich und pro /64 im IPv6-Bereich erlaube ich acht Abfragen pro Sekunde. Wer darüber liegt, läuft in definierte Bremspfade. Dieser Grenzwert ist bewusst konservativ gewählt. Klassische Endgeräte und normale Haushalte kommen damit problemlos aus, selbst bei parallelem Surfen, Streaming und Hintergrunddiensten. Auffällig werden eher spezialisierte Scans, fehlerhafte Implementierungen oder gezielte Stressversuche. Gerade im Zusammenspiel mit FireHOL-Netzlisten und Fullbogon-Filtern bildet das Rate-Limit eine dritte, sehr pragmatische Schicht, um Missbrauch von Beginn an unattraktiv zu machen.
Interessant sind in diesem Kontext die Reaktionen externer Testwerkzeuge. Manche Rebind-Tests interpretieren die durch das Rate-Limit verursachten Antwortzeit-Variationen als Indikator für eine vermeintliche Verwundbarkeit, während sie in Wirklichkeit lediglich den eingebauten Schutz gegen Bursts demonstrieren. Ähnlich verhält es sich mit Tools, die öffentliche Resolver grundsätzlich skeptisch sehen, weil sie von einer strikt lokalen Installation ausgehen. CenturionDNS ist explizit als öffentlich erreichbarer, aber streng gehärteter Resolver konzipiert, und lässt sich nicht sinnvoll mit einem ungesicherten Router-DNS in einem Heimnetz vergleichen. Die entsprechenden Testergebnisse nehme ich zur Kenntnis, interpretiere sie aber im Lichte des eigenen Bedrohungsmodells.
Ein zweiter Strang der Dezember-Anpassungen betrifft die Konsistenz zwischen Security-Audit und öffentlicher Beschreibung. Das Audit vom November 2025 definiert einen klaren Referenzzustand: DNSSEC-Validierung, DANE, QNAME-Minimisation, SVCB-Einsatz, starke TLS-Profile, aggressive Threat-Intelligence-Integration, keine Query-Logs, restriktive systemd-Sandboxing-Parameter30, gehärtete SSH-Zugänge und kontinuierliches CVE-Monitoring. Sobald sich Konfiguration oder Dokumentation von diesem Referenzbild entfernen, ensteht Reibung. Durch die Anpassung der Cipher-Angaben, die explizite Trennung von Blocklisten und Threat-Policies und die Präzisierung des Antwortverhaltens bei Malware sind diese Reibungsverluste wieder beseitigt. Audit, Konfiguration und öffentliche Doku zeigen nun in die gleiche Richtung.
Aus dieser Übung bleibt eine Erkenntnis hängen, die weit über CenturionDNS hinausgeht. Sicherheit entsteht nicht allein durch hart gedrehte Schalter oder imposante Zahlenkolonnen, sondern durch ein in sich geschlossenes Zusammenspiel von Architektur, technischen Parametern, Dokumentation und gelebter Betriebspraxis. Ein Resolver, der 3’300’000 Domains blockiert, DNSSEC strikt validiert, TLS konsequent durchzieht, aber dann halbherzig dokumentiert ist, wirkt nach aussen weniger vertrauenswürdig als eine offen beschriebene, kohärent betriebene Infrastruktur mit scharf definierten Grenzen. Genau daran arbeite ich mit CenturionDNS: ein Dienst, der sich nicht anbiedert, weder bei Komfortfeatures noch bei „schönen“ Testergebnissen, sondern dessen Verhalten präzise beschrieben und reproduzierbar ist. Wer diese Art von Dienst nutzen will, soll wissen, worauf er sich einlässt. Wer etwas anderes sucht, findet im Markt genug Alternativen, die seine DNS-Anfragen liebend gern in Profile und Metriken verwandeln.
- https://dns01.eddns.eu/ ↩︎
- https://www.privacy-handbuch.de/handbuch_93d.htm ↩︎
- https://coresecret.eu/2025/11/14/centuriondns-sicherheits-audit/ ↩︎
- https://nginx.org/en/download.html ↩︎
- https://github.com/AdguardTeam/AdGuardHome ↩︎
- https://de.wikipedia.org/wiki/Unbound ↩︎
- https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions ↩︎
- https://de.wikipedia.org/wiki/Domain_Name_System#Resolver ↩︎
- https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP/2 ↩︎
- https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP/3 ↩︎
- https://de.wikipedia.org/wiki/DNS_over_HTTPS ↩︎
- https://de.wikipedia.org/wiki/DNS_over_TLS ↩︎
- https://de.wikipedia.org/wiki/Domain_Name_System#DNS_over_QUIC_(DoQ) ↩︎
- https://de.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities ↩︎
- https://datatracker.ietf.org/doc/html/rfc7816.html ↩︎
- https://de.wikipedia.org/wiki/Leitungsverschl%C3%BCsselung ↩︎
- https://de.wikipedia.org/wiki/Cipher_Suite ↩︎
- https://de.wikipedia.org/wiki/Transport_Layer_Security#Versionen ↩︎
- https://de.wikipedia.org/wiki/Perfect_Forward_Secrecy ↩︎
- https://de.wikipedia.org/wiki/HTTP_Strict_Transport_Security ↩︎
- https://datatracker.ietf.org/doc/rfc9460/ ↩︎
- https://docs.hetzner.com/de/networking/dns/record-types/svcb-record/ ↩︎
- https://dns01.eddns.eu/blocklists/centurion_titanium_ultimate.txt ↩︎
- https://threatfox.abuse.ch/export ↩︎
- https://iplists.firehol.org/ ↩︎
- https://www.team-cymru.com/ ↩︎
- https://www.cloudns.net/blog/what-is-nxdomain/ ↩︎
- https://de.wikipedia.org/wiki/DNS_Amplification_Attack ↩︎
- https://de.wikipedia.org/wiki/Resource_Record ↩︎
- https://linux-audit.com/systemd/ ↩︎
