BIND Key-Rollover Automation

DNS Workshop

Created: 2019-08-29 Thu 09:54

Agenda

  1. Keyrollover Automatisierung
  2. BIND 9 Zeitvorgabe für Schlüssel
  3. Automatischer Update der Vertrauenskette

Keyrollover Automatisierung

  • ein DNSSEC Schlüsselaustausch muss sehr genau ausgeführt werden
  • Fehler durch manuelle Arbeitsschritte sollten ausgeschlossen sein
  • ein ZSK-Rollover lässt sich heute schon vollständig automatisieren
  • ein KSK-Rollover wird in naher Zukunft voll automatisierbar sein

BIND 9 Zeitvorgaben für Schlüssel

  • seit BIND 9.7.2 und der Einstellung auto-dnssec maintain kann ein Schlüsselaustausch automatisiert werden
  • ab BIND 9.8.0 kann der Befehl dnssec-keygen einen Nachfolge-Schlüssel zu einem bestehenden DNSSEC-Schlüssel erstellen

BIND 9 Zeitvorgaben für Schlüssel (1/2)

  • die folgenden Zeitvorgaben sind möglich
    • Veröffentlichung (publish) - Zeitpunkt, ab dem der Schlüssel in der Zone sichtbar wird
    • Aktivierung (activation) - Zeitpunkt, ab dem DNS-Records in der Zone mit diesem Schlüssel signiert werden

BIND 9 Zeitvorgaben für Schlüssel (2/2)

  • Rückzug (retirement/inactive) - Zeitpunkt, ab dem DNS-Records in der Zone nicht mehr mit diesem Schlüssel signiert werden
  • Löschung (deletion) - Zeitpunkt, an dem der Schlüssel aus der Zone entfernt wird
  • Rückruf (revocation) - Zeitpunkt ab dem der Schlüssel als wiederrufen gilt und das Revoke-Flag im Schüssel gesetzt wird

BIND 9 Zeitvorgaben für Schlüssel

  • die Zeitvorgaben können bei der Erstellung des Schlüssels per dnssec-keygen gesetzt und später per dnssec-settime geändert werden
  • Das Format für Zeitvorgaben ist YYYYMMDD oder YYYYMMDDhhmmss
  • Zeitvorgaben können auch relativ zur aktuellen Zeit angegeben werden, das Offset wird dabei per +X (positives Offset) oder -X (negatives Offset) und einem Suffix bestimmt. Beispiel: -P +10d (10 Tage ab "jetzt")

BIND 9 Zeitvorgaben für Schlüssel

  • mögliche Suffixe für relative Zeitangaben
    • y - Jahre
    • mo - Monate
    • d - Tage
    • h - Stunden
    • mi - Minuten
  • Jahre zählen in diesem Zusammenhang immer 365 Tage, Monate haben immer 30 Tage

BIND 9 Zeitvorgaben für Schlüssel

  • mit den nachfolgenden Kommandozeilenparametern (für dnssec-keygen und dnssec-settime) werden die Zeitvorgaben gesetzt:
  • -P <Datum/Offset> - Veröffentlichungszeit des Schlüssels
  • -A <Datum/Offset> - Aktivierungszeit des Schlüssels
  • -R <Datum/Offset> - Rückrufzeitpunkt des Schlüssels
  • -I <Datum/Offset> - Rückzugszeitpunk des Schlüssels
  • -D <Datum/Offset> - Löschzeitpunkt des Schlüssels

Erzeugung eines ersten ZSK

initial-zsk.png

Erzeugen eines Nachfolgerschlüssels

  • im Befehl dnssec-keygen, benutze den Parameter -S um den aktuellen (Vorgänger-) Schlüssel anzugeben
    • die Aktivierungs-Zeit des neuen Schlüssels wird auf den Lösch-Zeitpunkt des aktiven Schlüssels gesetzt. Der aktive Schlüssel muss daher schon einen Lösch-Zeitpunkt gesetzt haben!

Erzeugen eines Nachfolgerschlüssels

  • mit dem Parameter -i wird die Vor-Publizierungs-Zeit des neuen Schlüssels angegeben.
    • die Veröffentlichungszeit wird auf (Aktivierung - Vor-Publizierung) gesetzt. Die Zeitdauer der Vor-Publizierung muss grösser als die TTL des DNSKEY-RRSet sein, damit bei Aktivierung der neue Schlüssel in den Caches andere Resolver ist.

Erzeugen eines Nachfolgerschlüssels

successor-key.png

Erzeugen eines Nachfolgerschlüssels

successor-key-timings.png

Rollover automatisieren

  • mit den Zeitvorgaben auf den Schlüsseln kann ein ZSK-Rollover per Zeitgesteuertem Skript vollständig automatisiert werden (z.B. per Systemd-Timer oder cron).
  • ein KSK-Rollover kann automatisiert werden, wenn der Registar eine API zum Übermitteln des DS-Records oder des DNSKEY-Records zur Elternzone bereitstellt.

Schritte eines ZSK-Rollover-Skriptes

  1. Rückzugs-Zeitpunkt und Lösch-Zeitpunkt auf dem aktuellen Schlüssel setzen
  2. Nachfolgeschlüssel erzeugen (mit Pre-Publish und Aktivierungs-Zeitpunkten)

Automating DNSSEC Delegation Trust Maintenance (RFC 7344/8078)

  • Mit RFC 7344/8087 hat die IETF ein Verfahren zur automatischen Aktualisierung der Vertrauenskette in der Eltern-Zone definiert
  • der Administrator einer DNSSEC-signierten Zone erstelle einen neuen KSK und publiziert den neuen DS-Record und/oder DNSKEY-Record für die Eltern-Zone als CDS- und/oder CDNSKEY-Records in der eigenen Zone

Automating DNSSEC Delegation Trust Maintenance (RFC 7344/8078)

  • der DNS-Server der Eltern-Zone fragt periodisch nach den CDS- und CDNSKEY-Records in der delegierten (Kind-) Zone
  • wird ein neue CDS- oder CDNSKEY-Record gefunden, wird dieser per DNSSEC und dem aktiven KSK validiert
  • ist die DNSSEC-Validierung erfolgreich, so wird der DS-Record in der Eltern-Zone automatisch getauscht

Automating DNSSEC Delegation Trust Maintenance (RFC 7344/8087)

  • CDS- und CDNSKEY wird in BIND 9 seit Version 9.11 unterstützt
  • derzeit wirdd CDS/CDNSKEY nur von der Tschechischen-TLD-Registry unterstützt, jedoch haben weitere europäische ccTLDs Unterstützung für 2018 angekündigt.

Automating DNSSEC Delegation Trust Maintenance

cdnskey01.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey02.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey03.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey04.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey05.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey06.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey07.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey08.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey09.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey10.png

Automating DNSSEC Delegation Trust Maintenance

cdnskey11.png

Fragen?