DNSSEC Monitoring

DNS Workshop

Created: 2019-08-29 Thu 10:13

Agenda

  1. DNSSEC Monitoring
  2. DNSSEC Monitoring Tests
  3. externe Monitoring Programme

DNSSEC Monitoring

  • eine DNS Infrastruktur mit DNSSEC Zone ist anfälliger für Fehler
    • die Konfiguration ist komplexer
    • normales DNS kann oft um Fehler herumarbeiten, bei einer DNSSEC-Zone ist jeder Fehler fatal, die Zone ist nicht mehr erreichbar
  • das Monitoring von DNS-Servern und DNSSEC-signierten Zonen hilft, Probleme frühzeitig zu entdecken

DNSSEC Monitoring Tests

  • die folgenden Folien beschreiben einfache Tests, welche in eigene Monitoring-Lösungen eingebaut werden können
  • die Shell-Skripte sind extra einfach gehalten und sollten auf jedem Posix/Unix-System laufen
  • aktuelle Versionen dieser Skripte gibt es unter https://github.com/menandmice-services/dns-monitoring-scripts

DNSSEC Monitoring - Server (1)

  • Test 1 - UDPv4 Erreichbarkeit - Test ob der DNS Server über UDPv4 erreichbar ist
    dig -4 @servername testzone

DNSSEC Monitoring - Server (2)

  • Test 2 - UDPv6 Erreichbarkeit - Test ob der DNS Server über UDPv6 erreichbar ist
    dig -6 @servername testzone

DNSSEC Monitoring - Server (3)

  • Test 3 - TCPv4 Erreichbarkeit - Test ob der DNS Server über TCPv4 erreichbar ist
    dig -4 @servername testzone +tcp

DNSSEC Monitoring - Server (4)

  • Test 4 - TCPv6 Erreichbarkeit - Test ob der DNS Server über TCPv6 erreichbar ist
    dig -6 @servername testzone +tcp

DNSSEC Monitoring - Server (5)

  • Test 5 - EDNS0 Paketgrösse - Test das der Server die korrekte EDNS0-UDP Paketgrösse meldet
    dig  @servername testzone | grep EDNS | cut -d " " -f 7

DNSSEC Monitoring - Zone (1)

  • Test 6 - authoritative Server - Test das alle Server einer Zone über UDP erreichbar sind
    dig zone +nssearch

DNSSEC Monitoring - Zone (2)

  • Test 7 - authoritative Server (TCP) - Test das alle Server einer Zone über TCP erreichbar sind
    dig zone +nssearch +tcp

DNSSEC Monitoring - Zone (3)

  • Test 8 - SOA-Serial - Test das alle Server einer Zone über die gleiche SOA-Serial verfügen
    dig zone +nssearch
  • die SOA-Serial kann bei einer Änderung auf dem Master für ein paar Sekunden von den anderen Servern abweichen (Verzögerung beim Zonentransfer).
  • Bei einem Test-Intervall vom 5 Minuten sollte dieser Test eine Warnung melden, wenn bei zwei hintereinanderfolgenden Tests der gleiche Unterschied bei den SOA-Serials gesehen wird
  • Wir der gleiche Unterschied bei drei oder mehreren Tests hintereinander gesehen, so sollte ein Fehler-Event ausgelöst werden

DNSSEC Monitoring - Zone (4)

  • Test 9 - AA-Flag - Test das eine Abfrage an alle authoritativen Server für die Zone das AA-Flag geliefert wrid, die Server also authoritativ für die Zone sind
    dig zone @server | grep ";; flags" | cut -d " " -f 4

DNSSEC Monitoring - Zone (5.1)

  • Test 10 - Parent-Child NS-RRset - Test on die NS-RRSets in der Elternzone (Delegation) mit den NS-Records der Zone übereinstimmen
    • einen Auth-DNS Server der Elternzone (Top-Level-Domain, TLD) bestimmen
dig ns <tld> +short | tail -1

DNSSEC Monitoring - Zone (5.2)

  • diesen Server nach den NS-Records der zu prüfenen Zone befragen
dig @tld-server ns <zone> +norec +noall +authority | grep -v ";"

DNSSEC Monitoring - Zone (5.3)

  • Liste der NS-Records in der eigenen Zone
dig @server ns <zone> +norec +noall +authority | grep -v ";"
  • beide Listen sortieren und vergleichen. Die Nameserver auf der rechten Seite der Antworten müssen identisch sein

DNSSEC Monitoring - DNSSEC (1)

  • Test 11 - AD-Flag - Test das bei einer Abfrage über einen DNSSEC-fähigen Resolver ein AD-Flag geliefert wrid
    dig zone soa +adflag | grep ";; flags" | grep "ad;" | cut -d " " -f 6

DNSSEC Monitoring - DNSSEC (2)

  • Test 11 - Grösse DNSKEY RRSET - Test der Größe des DNSKEY Resource Record Sets, die Antwort sollte unter der IPv6-Fragmentierungsgrenze liegen (1232 Byte)
    dig zone dnskey +dnssec | grep ";; MSG SIZE" | cut -d " " -f 6

DNSSEC Monitoring - DNSSEC (3)

  • Test 12 - RRSIG Gültigkeit - Test der Gültigkeitsdauer der Signaturen in der Zone
    dig zone soa +dnssec | egrep "RRSIG.*SOA" | cut -d " " -f 6
    dig zone soa +dnssec | egrep "RRSIG.*SOA" | cut -d " " -f 5

Ausgaben vergleichen mit der aktuellen Systemzeit date "+%Y%m%d%H%M%S"

  1. Fehler ausgeben, wenn der Gültigkeitsanfang einer Signatur in der Zukunft liegt
  2. Fehler ausgeben, wenn das Gültigkeitsende einer Signatur in der Vergangenheit liegt
  3. Warnung ausgeben, wenn das Gültigkeitsende in weniger als 5 Tagen erreicht wird
  4. Fehler ausgeben, wenn das Gültigkeitsende in weniger als 2 Tagen erreicht wird

DNSSEC Monitoring - DNSSEC (4)

  • Test 13 - DS-Record - Test der Anzahl der DS-Records für die Zone. Die Anzahl sollte bei 1 oder 2 DS-Records stabil sein
    dig zone ds +short | wc -l

DNSSEC Monitoring - DNSSEC (5)

  • Test 14 - DS-Record / KSK - Test das der DS-Record zum KSK passt
  • Key-Tag/Key-ID des DS-Records
    dig ds <zone> +short | cut -d " " -f 1
  • Key-Tag/Key-ID des aktiven KSK in der Zone (indirekt über die Signatur über den DNSKEY RR-Set)
    dig <zone> dnskey +dnssec | egrep "RRSIG.*DNSKEY" | cut -d " " -f 7

DNSSEC Monitoring - DNSSEC (6)

  • Test 15 - Anzahl DNSKEY Records - Test der Anzahl der DNSKEY Records
    dig <zone> dnskey +dnssec | egrep "DNSKEY.*2" | grep -v "RRSIG" | wc -l
  • Während eines ZSK- oder KSK-Rollover darf sich die Anzahl der DNSKEY-Records in der Zone erhöhen

DNSSEC Monitoring - Logbuch

  • das DNSSEC Monitoring System sollte Änderungen in jeder DNSSEC-Zone protokollieren
    1. Änderungen in den DNSKEYs (mit Key-ID und SOA-Serial)
    2. Änderungen des DS-Record (mit Key-ID und SOA-Serial der Elternzone)

DNSSEC Monitoring - Tools (1)

DNSSEC Monitoring - Tools (2)

Fragen?