Website-Icon .: blog cscholz.io :.

DNS Zonen signieren

DNS ist grundlegend für die Kommunikation im Internet, daher sollte man nicht nur bei der Konfiguration sorgfalt walten lassen, sondern sich auch Gedanken über die Sicherstellung der Authentizität der DNS Informationen machen.

Das Problem beim DNS ist, dass der anfragende Client sich nicht 100%ig sicher sein kann, dass die Antwort die er vom Nameserver erhalten hat auch die Informationen ist, die in der DNS Zone steht – sprich, dass sie nicht manipuliert wurde. Hier versucht dnssec Abhilfe zu schaffen, indem die Zoneneinträge signiert werden und der öffentliche Schlüsse zum prüfen der Signatur im DNS veröffentlich wird.

Das Problem an der Konstellation wird relativ schnell klar. Die Echtheit der DNS Einträge wird durch die DNS Zone selbst bestätigt. Was hindert also jemanden daran eine DNS Zone zu übernehmen und die Einträge mit einem eigenen Key zu versehen der dann per DNS veröffentlich wird? Prinzipiell erstmal nichts. Es gibt aber ein Prinzip, dass genau dies verhindern soll, indem der Schlüssel mit dem eine Zone signiert wird von der übergeordneten Zone signiert wird. Ein Angriff auf eine DNS Zone wäre somit um einiges schwerer.

Die Denic hat den Aspekt der DNS Sicherheit mittels dnssec dieses Jahr bereits näher unter die Lupe genommen.

Signierung einer Zone

Um eine DNS Zone zu signieren muss zuerst der "Zone Signing Key (ZSK)" und der "Key Signing Key (KSK)" und der erstellt werden.

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE domain.tld
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE -f KSK domain.tld

Anschließend kann das Script von Udo Neist verwendet werden um die jeweilige zone zu signieren.

Durch das signieren der Zone wird eine neue Datei erstellt, die die Endung .signed trägt. Diese muss dann im DNS als Zonendatei benutzt werden. Diese Datei enthält die signierten Einträge sowie den öffentlichen Schlüssel.

zone "blog.cscholz.io" in {
        type master;
        file "/etc/bind/blog.cscholz.io.zone.signed";
        [...]

Da meine Zonen domain.tld.zone heiße, habe ich das Skript angepasst und um einige Funktionen erweitert.

Choose one action
1) create keys for linux-kolleg.de.zone
2) sign linux-kolleg.de.zone
3) check serial of all NS
4) check root<=>zone NS
5) check GLUE record
6) check zone information
7) show parameters
8) nothing, exit or Ctrl+c

Links:

Udo NeistUdo Neist
Die mobile Version verlassen