SWITCH Security-Blog

SWITCH-CERT IT-Security Blog

DNSSEC – Einführung zu DNS Security Extensions


Das Domain Name System (DNS) ist ein wichtiger Bestandteil des Internets. Aus Endbenutzersicht erscheint das Internet oft zusammengebrochen, wenn die Namensauflösung nicht funktioniert. In den letzten Jahren wurden Schwachstellen im Protokoll aufgedeckt, welche es erlauben, DNS-Antworten für einen DNS-Resolver zu manipulieren. Um die Vertrauenswürdigkeit der Daten sicherzustellen, wurde die Erweiterung DNSSEC entwickelt.

Was ist DNSSEC?

DNSSEC ist eine Erweiterung des Domain Namen Systems (DNS), die dazu dient, die Echtheit (Authentizität) und die Vollständigkeit (Integrität) der Daten von DNS-Antworten sicherzustellen.

DNSSEC basiert auf kryptografischen Unterschriften (Signaturen), mit denen die aktuellen DNS-Einträge unterschrieben (signiert) werden. Jeder, der im Internet für einen Domain-Namen zuständig (autoritativ) ist, kann seine Informationen mittels DNSSEC schützen.

Um digitale Signaturen (RRSIG Record) zu erstellen, generiert der DNS Administrator ein Schlüsselpaar. Ein solches Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel (asymmetrisches Kryptosystem). Wie der Name schon sagt, ist der private Teil geheim und verleibt beim Besitzer. Der öffentliche Teil wird im DNS publiziert (DNSKEY Record). Mit dem öffentlichen Schlüssel kann nun eine Signatur, welche mit dem privaten Schlüssel erstellt wurde, überprüft und validiert werden.

DNSSEC verschlüsselt die DNS-Daten also nicht, sondern ist eine transparente Erweiterung auf dem bisherigen DNS-Protokoll. DNSSEC wird typischerweise zwischen einem DNS-Resolver und einem autoritativen DNS Server eingesetzt. Ein DNS Resolver, welcher DNSSEC Signaturen überprüft nennt man validierenden DNS-Resolver. Wenn ein Benutzer einen validierenden DNS-Resolver (im Bild: DNS Server Internet-Anbieter) nach der IP Adresse von http://www.switch.ch anfragt, dann kann der DNS-Resolver die signierte Antwort vom autoritativen DNS-Server der switch.ch Zone überprüfen. Ungültige Antworten, welche z.B. mittels Cache Poisoning gesendet wurden, werden erkannt und verworfen.

DNSSEC Validierung

Mit DNSSEC erkennt der DNS Resolver des Internetanbieters eine durch “Cache Poisoning” veränderte DNS-Antwort

Ein validierender DNS-Resolver muss also einem öffentlichen Schlüssel vertrauen um eine Signatur zu überprüfen. Da es nicht möglich ist, allen Schlüsseln im Internet zu vertrauen wird eine Schlüsselhierarchie analog der DNS-Hierarchie verwendet („chain of trust“). Dies dient dazu, schlussendlich alle Signaturen mit einem einzigen öffentlichen Schlüssel („root key“) überprüfen zu können.

DNSSEC Chain of Trust

In der “Chain of trust” garantiert die übergeordnete Instanz die Echtheit von Daten der untergeordneten Instanz

Als Inhaber eines Domain-Namens muss der zuständige DNS-Administrator, welcher den Domain-Namen (die Zone) mit DNSSEC signiert den öffentlichen Schlüssel in der übergeordneten Zone hinterlegen (DS Record).

DNSSEC aktivieren

  • Verwenden Sie DNSSEC-validierende DNS Resolver oder aktivieren Sie DNSSEC-Validierung auf ihren eigenen DNS-Resolver.
  • Signierte DNS-Antworten benutzen grössere DNS Nachrichtenpakete. Deshalb ist es wichtig, dass ihre Netzwerkgeräte (z.B. Firewall, IDS) EDNS0 (Extension Mechanismus für DNS) unterstützen. Fragmentierter UDP-Verkehr kann deshalb zunehmen. IPv6-Firewalls haben derzeit oft Probleme mit solchem Datenverkehr korrekt umzugehen.
  • DNSSEC-Signaturen haben ein Start- und Enddatum (Gültigkeitszeitraum). Auf ihren DNS-Servern sollte deshalb die Systemzeit relativ genau sein. Es empfiehlt sich die Systemzeit z.B. über NTP zu synchronisieren.
  • Um Ihre eigene Domain mit DNSSEC zu signieren, empfehlen wir weiterführende Literatur zu diesem Thema. Viele nützliche Informationen werden von der Internet Society unter der URL http://www.internetsociety.org/deploy360/dnssec/ zusammengetragen.

 

Ausblick

Auf diesem Blog werden wir in Zukunft vermehrt über DNSSEC-spezifische Themen berichten. Ein kommender Blog-Artikel wird sich mit dem Wechsel des Schlüssel-Algorithmus (Key Algorithm Rollover) befassen.

Comments are closed.