Auskunft mit Siegel: dnsmasq als DNSSEC-validierender Resolver

Überprüfen PCs die Antworten von DNS-Servern per DNSSEC, lassen sich ihre Internetverbindungen nicht mehr so leicht von Hackern kapern. Mit den folgenden Schritten bekommt man den DHCP-Server und DNS-Proxy dnsmasq dazu, Antworten des Upstream-Servers auf Echtheit zu prüfen.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Lesezeit: 7 Min.
Inhaltsverzeichnis

Aktuelle Linux-Distributionen wie Opensuse seit 13.2 und Ubuntu seit 14.10 bringen dnsmasq in einer Version mit, die DNS-Auskünfte eines Upstream-Servers per DNSSEC auf Unverfälschtheit prüfen kann. Während Opensuse in der Grundeinstellung das Tool nicht benutzt, führt dnsmasq unter Ubuntu die Validierung schlicht nicht aus. Beides lässt sich in wenigen Minuten beheben. Wer mit einer älteren Linux-Version arbeitet, die keinen DNSSEC-fähigen dnsmasq mitbringt, erfährt weiter unten, wie man die aktuelle Version mit DNSSEC-Unterstützung erzeugt.

Um DNSSEC-Validierung in Opensuse 13.2 zu erhalten, aktivieren Sie zunächst dnsmasq in der Diensteverwaltung des Systemverwaltungstools Yast. Dann ändern Sie in Yasts Netzwerkeinstellungen unter dem Reiter Hostname/DNS die DNS-Konfiguration auf eine "Benutzerdefinierte Richtlinie", stellen diese im dahinter folgenden Ausklapper auf "STATIC" und tragen als einzigen Server bei "Nameserver 1" die Adresse 127.0.0.1 ein, also den später lokal laufenden dnsmasq.

Nun bearbeiten Sie /etc/dnsmasq.conf und weisen dnsmasq durch Entfernen des Kommentarzeichens (#) vor dem Parameter dnssec an, das Protokoll zu verwenden. In der direkt davor stehenden conf-file-Zeile löschen Sie ebenfalls den # und ersetzen %%PREFIX%% durch /usr, sodass der Eintrag tatsächlich auf den mitinstallierten Trust Anchor zeigt. Weisen Sie dnsmasq durch Entfernen des # vor no-resolv an, nur die in dieser Datei definierten DNS-Server zu verwenden. Fügen Sie gleich zwei in den nächsten beiden Zeilen ein:

server=IP-Adresse1
server=IP-Adresse2

Ihr Provider sollte passende Adressen wissen. Eine Liste öffentlicher, DNSSEC-fähiger Server führt beispielsweise das IPFire-Projekt. Für einen kurzzeitigen Test können Sie die Server der tschechischen NIC verwenden (217.31.204.130, 217.31.204.131). Damit ist die Bearbeitung der dnsmasq-Konfiguration abgeschlossen.

Damit dnsmasq den eben definierten Trust Anchor lesen kann, braucht es noch das entsprechende Recht, was Sie durch Anhängen der Zeile

/usr/share/dnsmasq/* r

Zeigt der Resolvertest nach dem Aufsetzen von dnsmasq nicht diese Erfolgsbestätigung, löschen Sie den Browsercache und starten den Test noch mal.

an die Datei /etc/apparmor.d/local/usr.sbin.dnsmasq gewähren. Nach dem nun fälligen Neustart vergewissern Sie sich mit einem Aufruf des Online-Tools der Uni Duisburg-Essen, dass dnsmasq tatsächlich validiert.

Wenn dnsmasq nicht nur auf host-lokale Anfragen antworten soll, sondern auch auf welche aus dem lokalen Subnetz, dann setzen Sie in /etc/dnsmasq.conf die Schnittstelle, an der dnsmasq lauschen soll (interface=enp0s8 oder ähnlich). Damit der in dnsmasq integrierte DHCP-Server nicht dem Ihres Routers in die Quere kommt, schalten Sie die Funktion ab (no-dhcp-interface=enp0s8). Je nachdem, in welcher Firewall-Zone die Schnittstelle eingeordnet ist, müssen Sie eventuell in der Opensuse-Firewall noch eine Freigabe für DNS-Anfragen und -Antworten eintragen.

In der Standardinstallation von Ubuntu 14.10 und 15.04 kümmert sich der NetworkManager um das Einrichten der Schnittstellen. Das Tool startet beim Booten einen DNSSEC-fähigen dnsmasq 2.72 und konfiguriert ihn über die Systembus-Schnittstelle DBUS. Die Konfiguration ist jedoch derart vernagelt, dass wir DNSSEC damit nicht zum Laufen bekamen.

Als Lösung blieb nur, den NM-gestarteten dnsmasq zu deaktivieren (dns=dnsmasq in /etc/NetworkManager/NetworkManager.conf mit Voranstellen von # auskommentieren), das reguläre dnsmasq-Paket zu installieren (sudo apt-get install dnsmasq) und den dann durch Bearbeiten der Konfigurationsdatei /etc/dnsmasq.conf wie oben bei Opensuse 13.2 beschrieben zum Validieren zu bewegen. Anders als bei Opensuse liegt der Trust Anchor hier in /usr/share/dnsmasq-base/trust-anchors.conf. Nun sollte Ubuntu nach einem Neustart ebenfalls validieren, was Sie mit dem Aufruf des Online-Tools der Uni Duisburg-Essen prüfen können.