Projektvorstellung: Alpine Linux basierter DNSSEC validierender rekursiver Unbound DNS-Resolver

Hallo liebe Computerbase-Community,

ich bin madnuttah und würde euch gerne mein Unbound-Docker-Projekt auf GitHub vorstellen.

Dies ist ein rein privates Projekt, nach wie vor ohne finanzielle Interessen. Auch NLnet Labs, der Hersteller der Software die im Image Verwendung findet, hat keinen Einfluss und keinerlei Mitwirkung an der Entwicklung dieses Projekts.

Es handelt sich um einen „distroless“ Alpine Linux basierten, DNSSEC validierenden, rekursiven DNS-Resolver mit Pi-hole im Fokus und bietet folgende Features:
  • Unprivilegierter Benutzer
  • Unprivilegierter Port
  • DNSSEC
  • DNSCrypt
  • DNSTap
  • DNS64
  • DNS over HTTPS
  • DNS over TLS
  • Redis
  • Libevent
  • Optional: Healthcheck
  • Optional: Statistiken
Es gibt doch schon genügend solcher Images, was war also mein Antrieb für ein YAUDI (yet another unbound docker image)?

Nun, ich war seinerzeit mit der Pflege und mir wichtigen, fehlenden Komponenten diverser, populärer Unbound Docker Images unzufrieden und hatte daher ohne große Ahnung von Docker und seinen Containern mein eigenes auf Basis von Alpine Linux gebaut. Als ich soweit zufrieden war, habe ich es am Weihnachtstag 2021 herausgebracht.

Tja. Ich glaubte, ein Eintrag in einer Konfigurationsdatei würde genügen um eine sichere "chroot" Umgebung bereitzustellen. Ein aufmerksamer GitHub-User wies mich darauf hin, dass dem leider nicht der Fall war. Das Image war bei weitem nicht so sicher wie ich dachte. Nach wenigen Versuchen, das Image zu korrigieren, gab ich mich geschlagen und begann ein „distroless“ Image mit meinen Alpine-Kompilaten zu gestalten, also eigentlich komplett von vorne zu beginnen. Wie sich gezeigt hat, war der Aufwand geringer, als das Image komplett umzubauen. Ein super Nebeneffekt war, dass eigentlich nur Kleinigkeiten in der unbound.conf anzupassen waren, damit es auch wieder bei den bereits bestehenden Installationen „meiner“ Nutzer ohne viel Aufwand weitergehen konnte. Nach ein paar mehr commits war dann auch der letzte Fehler, der mir mitgeteilt wurde, behoben.

Neuerdings habe ich meine Workflows auf CD (Continuous Delivery) umgestellt, also sobald ein Unbound Update vom Hersteller herausgebracht wird, läuft über einen Pipeline-Prozess um 19:00 UTC ein Versionsabgleich und anschließend ein automatischer Build von Unbound, danach folgt das automatische Pushen, Taggen und Releasen auf GitHub.

Ich bin nach wie vor in der Lage, das Image auch manuell zu aktualisieren, sobald Schwachstellen der Komponenten des Images gestopft wurden.

Wirklich nett ist unter vielem anderen die Möglichkeit eure eigene UID/GID in der Compose-Datei oder beim Start aus der Shell heraus zu definieren, sowie die funktionierende Redis-Anbindung via Unix Socket, was einen enormen Schub in Sachen Geschwindigkeit bietet.

Falls ihr Zabbix nutzt und Graphen mögt, lassen sich Statistiken mittels eines modifizierten und injizierten (ich nenne es "Frankensteined") Healthcheck-Skriptes ausgeben. Der Link befindet sich recht prominent auf meiner GitHub-Seite.

Ich habe versucht alles so gut und detailliert wie möglich mit vielen Beispieldateien zu dokumentieren.

Hier findet ihr mein Projekt, ich hoffe euch gefällt was ich so mache und bin offen für jegliche konstruktive Kritik.

Viele Grüße,
madnuttah
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: SaxnPaule, xprs, Spawn182 und eine weitere Person
Warum benutzt du nicht einfach das bei Alpine Linux mitgelieferte Unbound Paket?
 
Zuletzt bearbeitet: (Tippfehler)
Hi, ich hätte mir ehrlich gesagt etwas mehr Interaktion und Dialog mit euch gewünscht, habe ich den Beitrag vielleicht im falschen Bereich gepostet?

Das Repo und Image haben nette Änderungen erhalten:

  • es wird auf Schwachstellen mit Trivy gescannt, Resultate lassen sich über den Security-Tab des Repos einsehen
  • das Image steht nun auch als 'nightly' build zur Verfügung
  • Viele Optimierungen der Codierung, der Workflows und der Dokumentation
  • der Healthcheck wurde komplett 'revamped'

Mir geht es hier ganz sicher nicht um Werbung in eigener Sache, ich nutze das Image schließlich selbst und meine Ansprüche an die Sicherheit meiner Infrastruktur sind hoch.

Daher wäre ich um folgendes Dankbar:
  • ist die Doku verständlich und OK?
  • fällt etwas auf, was Problematisch sein könnte?
  • würdet ihr auf Basis der Doku so einen Stack bauen können?
  • was könnte besser sein?
  • fehlt etwas eurer Meinung nach?

Ich freue mich wirklich sehr auf eure Meinung und auch auf eure (konstruktive) Kritik. Wir als Entwickler sind um euch aufmerksame Benutzer äußerst dankbar. Oft sehen wir einfach den Wald vor lauter Bäumen nicht mehr.

Dankeschön und herzliche Grüße 🫂
 
Nicht jeder nutzt Pi-hole. Von denen nutzt nicht jeder seinen eigenen DNS-Resolver. Von denen ist nicht jeder mit dem Package aus seinem Linux-Repository unzufrieden. Von denen nutzt nicht jeder Docker. Auch sind auf ComputerBase selbst Threads zum Thema „Werbe-Blocker + eigenem DNS-Resolver“ rar … Das bedeutet nicht, dass Du hier falsch wärst oder das Thema keine Relevanz habe – sonst hättest Du keine 160 Sterne auf GitHub. Aber vermutlich versammelt sich Deine Zielgruppe eher im „Kuketz IT-Security Forum“ und dort bist Du ja auch …
 
Hi und danke für deine Antwort. Verstehe, Du hast sicher Recht.

Gruß
 
Hallo @madnuttah,

ich nutze aktuell die Unbound Version von Matthew Vance.
Kannst du vielleicht kurz umreissen, wo dein Docker Vorteil gegenüber der Version hat?
Btw, Iich nutze AdGuard anstatt Pi-Hole.
 
  • Gefällt mir
Reaktionen: madnuttah
Hi @Stevie und danke für dein Interesse.

Der größte Unterschied ist, dass Unbound in meinem Image rekursiv arbeitet. Ob das besser ist, muss jeder für sich entscheiden. Es ist unerheblich, welches Tool du zum Adblocken nutzt. Unbound ist einfach dessen Upstream.
 
  • Gefällt mir
Reaktionen: Stevie
Zurück
Oben