Der eigene DNS-Resolver? Kein Hexenwerk.

den eigenen DNS-Resolver richtig einrichten

Lokal und selbstbestimmt zu arbeiten, hat manchmal seine Vorteile. Das gilt auch für lokale DNS-Resolver, die als sogenannte Caching Nameserver in Ihrem Betrieb für mehr Sicherheit beim Besuchen von Websites oder für kürzere Zugriffszeiten auf Standardseiten sorgen. Sie geben damit die Informationen über von Ihnen besuchte WebSite nicht an Dritte und vermeiden auch diverse Zensurmassnahmen der Netzbetreiber. Wie wäre es also, wenn Sie Ihren eigenen, lokalen Resolver betreiben, um sich diese Vorteile zu sichern? Sie brauchen dazu ein paar Zutaten und sollten dabei darauf achten, dass Ihre lokale Einrichtung bestimmte Anforderungen erfüllt. Diese stellen wir Ihnen hier vor.

Die Voraussetzungen

Natürlich kann man einen Caching Nameserver oder DNS-Resolver mit so ziemlich jedem Betriebssystem betreiben. Allerdings machen wir uns ja die Mühe nicht zum Spaß oder aus Langeweile. Denn immerhin stellt uns ja unser Access Provider, sei es nun die DTAG, Vodafone oder wer auch immer kostenfrei einen funktionierenden Resolver zur Verfügung. Und es gibt auch einige Unternehmen oder Organisationen, die uns ebenfalls ohne Berechnung (aha: nicht unbedingt kostenlos!) diesen Service anbieten. Allerdings haben wir an „unseren“ Resolver ein paar Anforderungen, die sich mit der Nutzung ebendieser Angebote nicht erfüllen lassen.

Die wichtigsten Anforderungen

Wir stellen Ihnen hier ein paar Mindeststandards vor, auf deren Einhaltung Sie achten sollten. Zu den wichtigsten Anforderungen gehören:

  1. Ihr Resolver sollte unzensiert arbeiten, das heißt, keine von einzelnen Netzbetreibern eingerichtete Netzsperren für gesperrte Domains oder Services enthalten.
  2. Ein Loggen (Mitschneiden, Protokollieren) Ihrer Netzanfragen muss ausgeschlossen sein.
  3. Anwendung von DNSSEC sollte standardmäßig möglich sein, denn dies ist leider bei einigen Netzbetreibern noch nicht der Fall.
  4. Der Resolver, also eigentlich die dazu verwendete Software und das Betriebssystem sollen nur und ausschliesslich das tun, was Sie wollen.

Die Zutaten

Damit ist klar, welches Betriebssystem optimal geeignet ist: ein stabiles Linux, weil es sich hierbei um Open Source handelt (der Quellcode ist einsehbar für den fachkundigen Anwender im Gegensatz zu geschlossener oder proprietärer Software). Gleiches sollte dann auch für die eigentliche Software gelten, die als Resolver arbeitet. Hier gibt es durchaus etwas Auswahl, wir werden jedoch aus verschiedenen Gründen den Klassiker BIND einsetzen. Er ist frei verfügbar, seit vielen Jahren bewährt, einfach zu installieren und einzurichten und läuft danach dauerhaft stabil. Um einen eigenen DNS-Resolver zu erstellen bzw. zu betreiben, genügen also diese „Zutaten“.

Ein Referenz-Beispiel

Unser Referenzsystem setzt sich aus den folgenden Zutaten zusammen:

  1. eine VM, also virtuelle Maschine auf VMware-Basis
  2. Debian 9 als Linux Betriebssystem
  3. BIND 9.x als Anwendungs-Software

Die Auswahl dieser Zutaten stellt sicher, dass sämtliche Anforderungen an „unseren“ lokalen DNS-Resolver erfüllt werden. Dass dabei die gesamte Windows-Welt aussen vor bleibt, ist klar. Dies gilt generell immer, wenn es sich um das Thema Sicherheit im weitesten Sinne handelt und Alternativen bereitstehen.

Nachfolgend stellen wir die vollständige Dokumentation zur Installation und Einrichtung des funktionierenden Resolvers bereit. Damit steht der Resolver in maximal 60 Minuten inclusive Hardwareeinrichtung bereit.

Caching DNS-Resolver mit BIND 9

Schritt 1: Serverumgebung einrichten

Installieren Sie einen einfachen Debian-Server mit minimaler Ausstattung. Als einziger Daemon (Dienst) sollte SSH für den administrativen Zugriff installiert werden. Es muss eine feste IP-Adresse im selben Netzwerk wie die übrige IT-Infrastruktur vergeben werden.

Das notwendige Debian-Image beziehen Sie hier: https://www.debian.org/distrib/netinst

Schritt 2: Installation der Nameserver-Software BIND

In unserem Beispiel lauten die Kommandos:

apt-get update
apt-get install bind9 bind9utils bind9-doc

Schritt 3: Grundlegende Konfiguration

Hierzu verwenden wir den Editor „nano“, der standardmässig bereits installiert ist. Es müssen einige Einfügungen bzw. Änderungen vorgenommen werden. Zum Beenden und gleichzeitigen Speichern verwenden wir die Tastenkombination STRG X.

nano /etc/bind/named.conf.options:
acl goodclients {
localhost;
192.168.114.0/23;
};

im options-Block:

options {
directory „/var/cache/bind“;

recursion yes;
allow-query { goodclients; };
. . .

nano /etc/resolv.conf:
nameserver 127.0.0.1

# Kommentar: Der nächste Befehl schreibt den Cache aus dem RAM nach /var/cache/bind/named_dump.db
sudo rndc dumpdb

# Kommentar: Jetzt kann die Datei aufgerufen und der Inhalt des lokalen Caches ausgelesen werden, zum Beenden: quit
less /var/cache/bind/named_dump.db

Wir wollen Logging betreiben, daher geben wir folgende Kommandos zum Editieren zweier Konfigurationsdateien ein:

nano /etc/bind/named.conf:
include „/etc/bind/named.conf.log“;

nano /etc/bind/named.conf.log:
logging {
channel bind_log {
file „/var/log/bind/bind.log“ versions 3 size 5m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { bind_log; };
category update { bind_log; };
category update-security { bind_log; };
category security { bind_log; };
category queries { bind_log; };
category lame-servers { null; };
};

Wir erzeugen das Verzeichnis für das Logfile:

mkdir /var/log/bind

BIND soll Zugriffsrechte auf dieses Verzeichnis erhalten:

chown bind:bind /var/log/bind

BIND wird neu gestartet:

service bind9 restart

nano /etc/logrotate.d/bind:
/var/log/bind/bind.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 bind bind
postrotate
/usr/sbin/invoke-rc.d bind9 reload > /dev/null
endscript
}

test: logrotate -d /etc/logrotate.d/bind

Wir arbeiten nur mit IPv4, also lautet das nächste Kommando zum Editieren der entsprechenden Konfigurationsdatei:

nano /etc/default/bind9:
OPTIONS=“-u bind -4″

Jetzt wird BIND neu gestartet:

service bind9 restart

Nun sollte Ihr lokaler Resolver unter BIND problemlos laufen. Sollten Sie Fragen haben oder sich lieber von Fachleuten einen lokalen Resolver mit DNSSEC einrichten lassen wollen, dann nehmen Sie einfach Kontakt mit uns auf. Wir vermitteln Ihnen gerne einen kompetenten Ansprechpartner bei der BB-ONE.net.

Wir können Ihnen auch ein vollständig eingerichtetes VMware-Image als OVA-Vorlage anbieten.