Eigene Zone mit DNSSEC signieren

8. Januar 2010 | Von | Kategorie: Admin | DNS | Firewalling | VPN | IDS

Um die eigenen DNS-Zonen zu signieren, benötigen wir zunächst Schlüssel. Genauer brauchen wir Schlüsselpaare aus einem privaten (für die Signatur) und einem öffentlichen Schlüssel (für die Validierung). Der letztere wird veröffentlicht während der erstere geheim gehalten werden muss. Um den Roll-Over der Schlüssel besser handhaben zu können, sollten zwei Schlüsselpaare erzeugt werden. Ein Schlüsselpaar wird für die Signatur der Zonen (Zone Signing Keys, ZSK)  verwendet. Dies wird für die tägliche Arbeit genutzt. Eine Kompromittierung dieses Schlüsselpaars ist daher durchaus wahrscheinlich. Daher sollte dieses Schlüsselpaar häufiger getauscht werden. Damit nicht bei jedem Roll-Over alle Vertrauensstellungen neu erzeugt werden müssen, erzeugen wir uns auch noch ein zweites Schlüsselpaar. Mit diesem signieren wird das erste Schlüsselpaar (Key Signing Keys, KSK). Nun müssen wir lediglich den öffentlichen Schlüssel dieses Schlüsselpaars veröffentlichen bzw. durch unseren Parent signieren lassen. Falls wird die ZSKs austauschen wollen, können wir diese selbst signieren und die Vertrauenskette ist noch intakt. Lediglich bei einem Roll-Over der KSKs müssen wir uns um die Vertrauenskette kümmern. Wenn es also eine signierte Root gibt, müssen die KSKs von unserer TLD signiert werden. Solange das nicht der Fall ist, müssen wir unsere öffentlichen Schlüsseln in einer DLV-Datenbank veröffentlichen oder auf anderen Wegen interessierten Partnern zur Verfügung stellen.

Genug geschrieben, Schlüssel erzeugt:

dnssec-keygen -r/dev/random -a RSASHA1 -b 2048 -n ZONE spenneberg.net

dnssec-keygen -r/dev/random -f KSK -a RSASHA1 -b 2048 -n ZONE spenneberg.net

Der erste Befehl erzeugt die ZSKs und der zweite Befehl die KSKs. Achtung, ich verwende hier /dev/random und nicht /dev/urandom. Der Befehl benötigt echte Entropie. Das kann auf ungenutzten Systemen durchaus dauern. Dann müssen Sie Entropie erzeugen, z.B. mit

find / -exec md5sum {} \;

Schöner wäre es als Algorithmus NSEC3RSASHA1 zu unterstützen. Dann wäre ein Walking der DNSSEC-Zone unmöglich. Leider unterstützt Bind erst ab der Version 9.6 NSEC3. Diese Version ist bei uns aber noch nicht flächendeckend im Einsatz.
Wir sollten uns nun merken, welcher Schlüssel der ZSK und welcher Schlüssel der KSK ist. Diese kopieren wir nun in das Zonen-Datei-Verzeichnis. In der Zonendatei werden diese Schlüssel nun includiert:


; DNSSEC Keys
;
$include Kspenneberg.net.+005+00138.key    ; ZSK
$include Kspenneberg.net.+005+08746.key ; KSK

Nun signieren wir die Zone. Vorher ist es aber wichtig die Seriennummer heraufzusetzen!


dnssec-signzone -o spenneberg.net -k Kspenneberg.net.+005+08746 spenneberg.net.zone Kspenneberg.net.+005+00138.key

Mit der Option -o geben wir den Namen der Zone an. Mit der Option -k den KSK. Anschließend kommen der Name der Zonendatei und der ZSK. Zwingend ist nur die Angabe der Zonendatei. Den Rest findet der Befehl meist automatisch. Ich gebe aber gerne alle Daten an, falls ich abweichend nur bestimmte Schlüssel verwenden möchte.

Der Befehl erzeugt die Datei

spenneberg.net.zone.signed

. Damit der DNS-Server diese Datei verwendet, müssen wir nun die Konfiguration ändern. Dazu müssen zunächst die DNSSEC-Optionen eingetragen werden. Dies muss auch auf den sekundären DNS-Server erfolgen. Ansonsten macht DNSSEC wenig Sinn!


options {

dnssec-enable yes;

}

In Abhängigkeit der Version ist diese Option möglicherweise auch bereits per Default gesetzt. Anschließend müssen Sie dafür sorgen, dass der DNS-Server die signierte Zone verwendet!


zone "spenneberg.net" IN {
type master;
file "/etc/bind/spenneberg.net.zone.signed";
}

Nach einem Neustart sollten Sie prüfen, ob der sekundäre DNS-Server auch die Daten erhalten hat.

Post to Twitter Post to Yahoo Buzz Post to Delicious Post to Digg Post to Facebook Post to Ping.fm Post to Reddit

Tags: | | |

Schreibe einen Kommentar

Fühle dich ermuntert einen Kommentar, Anmerkungen, Hinweise oder deine Ideen zum Thema zu hinterlassen. Wir freuen uns über deine Rückmeldung.