Suche


drucken PDF
Wie konfiguriere ich eine DNSSEC Zone auf meinem dedizierten Server?


Was ist DNSSEC?


Der DNS Dienst ist für zahlreiche andere Dienste im Internet unerlässlich, jedoch sind im Laufe der Zeit immer wieder Sicherheitslücken aufgetreten, die es erlaubten, die DNS Zone zu korrumpieren ("DNS poisoning"). Obwohl dafür jeweils schnell Patches zur Verfügung gestellt wurden, empfiehlt sich nach Möglichkeit die Einrichtung einer besser gesicherten Lösung: DNSSEC.

Um die Funktionsweise von DNSSEC zu verstehen muss man sich mit asymmetrischer Verschlüsselung auseinandersetzen. Diese basiert auf zwei Schlüsseln: einem öffentlichen und einem privaten. Der private Schlüssel erlaubt es, Informationen zu verschlüsseln, während der öffentliche Schlüssel es nur erlaubt, diese zu lesen. Der private Schlüssel ist auch für die Erstellung eines öffentlichen Schlüssels erforderlich. Dadurch kann die Information nicht mehr gelesen werden, wenn sich der öffentliche Schlüssel oder die enthaltenen Informationen ändern.

Derzeit wird empfohlen, den ZSK (siehe Begriffserklärung weiter unten) alle 3 Monate und den KSK einmal pro Jahr zu ändern. Denken Sie auch daran, dass die zuständige Registry Ihre Zone validieren muss.

Bei DNSSEC fügt der Administrator mit seinem privaten Schlüssel eine Verschlüsselung (RRSIG) für jeden DNS Eintrag zu seiner Zone hinzu, und veröffentlicht einen öffentlichen Schlüssel (DNSKEY), damit diese gelesen werden können. Ausserdem übertragen wir zusätzlich einen Fingerprint des Schlüssels an die Registry (DS).


In dieser Hilfe müssen Sie die roten Einträge durch Ihre eigenen Werte ersetzen.


In den grauen Kästen finden Sie praktische Beispiele.



Voraussetzungen


- Ihr Domainname verwendet die zu Ihrem Server gehörenden DNS Server (ns12345.ovh.net/sdnsX.ovh.net oder ks12345.kimsufi.com/ns.kimsufi.com)
- Die DNS Zone Ihres Domainnamens ist bereits auf Ihrem dedizierten Server konfiguriert


Begriffserklärung


ZSK: Zone signing key, besteht aus einem öffentlichen und einem privaten Schlüssel. Wird verwendet, um die Einträge der Zone zu signieren, und ist der Registry NICHT bekannt.
KSK: Key signing key, besteht aus einem öffentlichen und einem privaten Schlüssel. Wird nur verwendet, um die ZSK zu signieren, und ist wiederum durch einen DS Eintrag in der Root-Zone (bei der Registry) signiert.
DNSKEY: Der Eintrag, der einen öffentlichen Schlüssel enthält
DS: Ein Fingerprint eines DNSKEY, wird an die Root-Zone übermittelt


Die Schlüssel erzeugen


Wir verwenden dazu das Tool dnssec-keygen. Dieses verwendet Entropie, die bei der Verwendung der Maschine generiert wird. Auf einer wenig genutzten Maschine kann die Generierung einige Zeit in Anspruch nehmen. In diesem Fall können Sie das Argument "-r /dev/urandom" verwenden, um Zeit zu gewinnen, dies wird allerdings von OVH nicht empfohlen.


Den KSK Schlüssel erzeugen


Wir arbeiten direkt in dem Verzeichnis, das die DNS Zonen enthält. In unserem Beispiel ist dies das Verzeichnis "/etc/named/".

Wir erstellen den Schlüssel mit dem Befehl "dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE meine_domain.eu":


root@ks34682 ~# dnssec-keygen -f KSK -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE likarum.eu
Generating key pair.........................................................................+++ .............................................+++
Klikarum.eu.+008+04789

Der erstellte KSK heisst Klikarum.eu.+008+04789, wir werden diesen umbenennen, damit er einfacher zu verwenden ist:


root@ks34682 named# mv Klikarum.eu.+008+10954.key Klikarum.eu.ksk.key
root@ks34682 named# mv Klikarum.eu.+008+10954.private Klikarum.eu.ksk.private



Den ZSK Schlüssel erzeugen


Wir erstellen den Schlüssel mit dem Befehl "dnssec-keygen -a RSASHA256 -b 2048 -n ZONE meine_domain.eu":


root@ks34682 ~# dnssec-keygen -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE likarum.eu
Generating key pair....................................................................+++ .....+++
Klikarum.eu.+008+43119

Der erstellte KSK heisst Klikarum.eu.+008+43119, wir benennen auch diesen um:


root@ks34682 named# mv Klikarum.eu.+008+02184.key Klikarum.eu.zsk.key
root@ks34682 named# mv Klikarum.eu.+008+02184.private Klikarum.eu.zsk.private


Die Schlüssel in der Zone eintragen


Die *.Key Dateien enthalten jetzt die öffentlichen Schlüssel, diese müssen nun in die DNS Zone eingefügt werden. Sie können entweder deren Inhalt hinzufügen, oder Einträge dafür in Ihrer Zone erstellen. In diesem Beispiel erstellen wir die Einträge:

$include /etc/named/Kmondomaine.eu.zsk.key ; ZSK
$include /etc/named/Kmondomaine.eu.ksk.key ; KSK

Wir erhöhen auch den SOA Eintrag der Zone, in diesem Beispiel wird der Wert 2011122603 durch 2011122604 ersetzt.

Die DNS Zone sieht nun wie folgt aus:

root@ks34682 named# cat likarum.eu
$ttl 86400
likarum.eu. IN SOA likarum.eu. postmaster.likarum.eu. (
2011122603
21600
3600
604800
86400 )
IN NS ks34682.kimsufi.com.
IN NS ns.kimsufi.com.
IN MX 10 mail.likarum.eu.
IN A 213.251.174.72
www IN A 213.251.174.72
mail IN A 213.251.174.72
smtp IN A 213.251.174.72
pop IN A 213.251.174.72
pop3 IN A 213.251.174.72
imap IN A 213.251.174.72
sql IN A 213.251.174.72
mysql IN A 213.251.174.72
vetements IN A 213.251.174.72
likarum.eu IN TXT "v=spf1 a ~all mx ~all ptr:ovh.net ~all"
webmail IN A 213.251.174.72
$include /etc/named/Klikarum.eu.zsk.key
$include /etc/named/Klikarum.eu.ksk.key


Die DNSSEC Zone erzeugen und anwenden



Die Zone verschlüsseln


Wir signieren die Zone mit dem Befehl "dnssec-signzone -eYYYYMMDDHHMMSS -p -t -g -k Kmondomaine.eu.ksk.key -o
meine_domain.eu die-datei-meiner-dns-zone Kmeine_domain.zsk.key".

Der Wert YYYYMMDDHHMMSS bezeichnet das Ablaufdatum. Wenn die Zone am 4. Mätz 2012 um 04:20 Uhr ablaufen soll, dann lautet der Eintrag: 20120304042000


root@ks34682 named# dnssec-signzone -e20120330000000 -p -t -g -k Klikarum.eu.ksk.key -o likarum.eu likarum.eu Klikarum.eu.zsk.key


Wir erhalten nun eine Datei mit folgendem Namen: die-datei-meiner-dns-zone.signed


named Konfiguration


Wir überprüfen nun, dass named für DNSSEC korrekt konfiguriert ist. Dazu muss in der Konfigurationsdatei von named die Variable dnssec-enable auf yes gesetzt sein.


root@ks34682 named# cat /etc/bind/named.conf|grep dnssec-enable
dnssec-enable yes;

Wenn dies nicht der Fall ist, dann editieren Sie Ihre Konfigurationsdatei mit nano, pico oder vim, um diese Variable hinzuzufügen oder zu ändern.

Nun geben wir an, dass nicht mehr die ursprüngliche Zonen-Datei?, sondern deren verschlüsselte Version verwendet werden soll.

In der Datei /etc/bind/named.conf ersetzen wir dazu:


zone "likarum.eu" {
type master;
file "/etc/bind/mondomaine.eu";
};

Durch:


zone "likarum.eu" {
type master;
file "/etc/bind/likarum.eu.signed";
};

Und starten dann den DNS Dienst neu:


/etc/init.d/named restart


Überprüfung


Wir überprüfen das Vorhandensein der DNSSEC Zone mit dem Befehl "dig +cd +multi meine_domain.eu dnskey"


root@ks34682 named# dig +cd +multi likarum.eu dnskey
;; Truncated, retrying in TCP mode.

; <<>> DiG 9.7.3-P3-RedHat-9.7.3-2.el6_1.P3.3 <<>> +cd +multi likarum.eu dnskey
; global options
+cmd

;; Got answer:
; ->>HEADER<<- opcode
QUERY, status: NOERROR, id: 29910

; flags
qr aa rd ra cd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;likarum.eu. IN DNSKEY

;; ANSWER SECTION:
likarum.eu. 86400 IN DNSKEY 256 3 8 (
AwEAAbb6xT+KjF3qqeWAkswdlpQ7QW9sm9d9y7vcRJPJ
BUQdDXAtf6cRcJVI4Ql1GoCAhgrmV5/7ZbDrR3T54K+J
WAogmyfVd27uz1FLnlYAZRcLOLqGp8HLztgpwJQdbC8a
jeMx5yhYiH1ea8ZFHlumMwHJSrocgKyWyWGFZDiqRJ8A
xgYFzJDhoSSOnN3lO73NvaOQQnb7wT1BDHSuk+cc5ISS
XclyUUR0WKSeUl5LpGYgY8h4du01Da4z8gT3cS7ftIBD
7cjh0Fl6A+ADNCTiKQqD3j6f9CVCQ0uq87rPez6kyQZP
/pr3TNc6Fgv7L6SpkBR0luQYiVdlz7u77+KdnuM=
) ; key id = 2184
likarum.eu. 86400 IN DNSKEY 257 3 8 (
AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf
+/1LoEf/dVr0UPqTTLkhcYM5dIxIT9k35GS51TimTuis
HINBV7TdIy9rCtA4Qf2ih5JJ+M1vsd6HAQjJAFRlJeYV
lsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5QyaI9N1m
DNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR
7jVTF1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjG
xlZ4nHDzf4KzFxh9skJcVNBUzK/RacsLZyOzT3UAidJA
8gUOtEriO821mf+XmOhEkcAekj6ARjpCwEk+uv0=
) ; key id = 10954

; Query time
1 msec

; SERVER
127.0.0.1#53(127.0.0.1)

; WHEN
Fri Dec 30 16:09:25 2011

; MSG SIZE rcvd
580



Konfiguration der Root-Zone


Wir haben jetzt eine funktionierende DNSSEC Zone, damit diese vollständig gesichert werden kann müssen wir nun noch den Fingerprint des KSK an die Registry übermitteln.

Im OVH Manager wählen wir dazu die Domain aus, und dann Domain & DNS, DNSSEC, Änderung:

Wir kommen dann auf die Seite zur Änderung des DS der Domain mondomaine.eu:



Nun müssen nur noch die verschiedenen Felder ausgefüllt werden (ID, Flag, Algoritmus und öffentlicher Schlüssel). Diese Elemente sind alle in Ihrem öffentlichen KSK Schlüssel vorhanden.

In unserem Beispiel:


root@ks34682 named# cat Klikarum.eu.ksk.key
; This is a key-signing key, keyid 10954, for likarum.eu.
Created
20111226140308 (Mon Dec 26 15:03:08 2011)

Publish
20111226140308 (Mon Dec 26 15:03:08 2011)

Activate
20111226140308 (Mon Dec 26 15:03:08 2011)

likarum.eu. IN DNSKEY 257 3 8 AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf+/1LoEf/dVr0 UPqTTLkhcYM5dIxIT9k35GS51TimTuisHINBV7TdIy9rCtA4Qf2ih5JJ +M1vsd6HAQjJAFRlJeYVlsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5 QyaI9N1mDNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR7jVT F1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjGxlZ4nHDzf4KzFxh9 skJcVNBUzK/RacsLZyOzT3UAidJA8gUOtEriO821mf+XmOhEkcAekj6A RjpCwEk+uv0=


Die verschiedenen Angaben sind also:

ID: 10954
Flag: 257
Algoritmus: 8
Schlüssel: AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf+/1LoEf/dVr0 UPqTTLkhcYM5dIxIT9k35GS51TimTuisHINBV7TdIy9rCtA4Qf2ih5JJ +M1vsd6HAQjJAFRlJeYVlsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5 QyaI9N1mDNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR7jVT F1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjGxlZ4nHDzf4KzFxh9 skJcVNBUzK/RacsLZyOzT3UAidJA8gUOtEriO821mf+XmOhEkcAekj6A RjpCwEk+uv0=

Sobald die Angaben bestätigt wurden generiert OVH den Fingerprint und überträgt diesen an die Registry. Es dauert im Schnitt etwa 72 Stunden, bis die DS Einträge in der Root-Zone verfügbar sind.


Betrieb Ihrer DNSSEC Zone


Sie wissen nun, wie Sie Ihre Schlüssel verwalten, Ihre Zone signieren und Ihre Schlüssel an die Registry übermitteln können. Während eine klassische DNS Zone statisch ist und kaum Eingriffe benötigt, muss eine DNSSEC Zone erneuert werden, wenn daran Änderungen vorgenommen werden. Ausserdem sollte sie auch regelmässig erneuert werden, um einen möglichst optimalen Sicherheitslevel zu erhalten.


Bei der Änderung eines Eintrags


In diesem Fall müssen Sie:

- Ihren SOA Eintrag updaten
- Ihre Zone erneut signieren (dnssec-signzone...)


Verlängerung der Gültigkeit der Signatur


In diesem Fall müssen Sie:

- Ihren SOA Eintrag updaten
- Ihre Zone mit dem Argument für den gewünschten Zeitraum erneut signieren (dnssec-signzone -eJJJJMMTTSSMMSS...)



Einrichtung eines neuen ZSK Schlüssels


ACHTUNG: Sie müssen die alten Schlüssel für einen gewissen Zeitraum aufheben, bevor Sie diese endgültig löschen. Wir empfehlen 10 Tage.

In diesem Fall müssen Sie:

- Einen neuen ZSK generieren
- Ihre neuen Schlüssel hinzufügen
- Ihren SOA Eintrag updaten
- Ihre Zone erneut signieren (dnssec-signzone...)


Einrichtung eines neuen KSK Schlüssels


ACHTUNG: Sie müssen die alten Schlüssel für einen gewissen Zeitraum aufheben, bevor Sie diese endgültig löschen. Wir empfehlen 10 Tage.


In diesem Fall müssen Sie:

- Neue KSK und ZSK generieren
- Ihre neuen Schlüssel hinzufügen
- Ihren SOA Eintrag updaten
- Ihre Zone erneut signieren (dnssec-signzone...)
- Die Root-Zone? "rekonfigurieren"