Wat is DNSSEC? DNS Security Extensions uitgelegd

DNSSEC (DNS Security Extensions) is een set uitbreidingen die cryptografische authenticatie toevoegt aan DNS-antwoorden. Zonder DNSSEC kan een aanvaller DNS-antwoorden vervalsen en verkeer naar kwaadaardige servers omleiden — een techniek die bekendstaat als DNS-cachevergiftiging.

De DNSSEC-vertrouwensketen. rootDNSKEYDS.comDS → DNSKEYDSexample.comDNSKEY → RRSIG
Elk niveau ondertekent de sleutel van het niveau eronder, helemaal vanaf de root.

Het probleem dat DNSSEC oplost

Standaard-DNS is ontworpen zonder aan beveiliging te denken. Wanneer je computer vraagt "wat is het IP-adres van bank.com?", vertrouwt hij het antwoord dat hij krijgt. Een aanvaller tussen jou en de DNS-server kan een vals antwoord injecteren en je naar een phishingsite leiden.

DNSSEC lost dit op doordat DNS-zones hun records met een privésleutel ondertekenen. Resolvers kunnen de handtekening met de bijbehorende publieke sleutel verifiëren, waarmee vaststaat dat het antwoord van de rechtmatige zone-eigenaar komt.

Hoe DNSSEC werkt

  1. De zone-eigenaar genereert een sleutelpaar (DNSKEY-records) en ondertekent alle DNS-records met de privésleutel, wat RRSIG-records oplevert
  2. De publieke sleutel (DNSKEY) wordt in het DNS gepubliceerd
  3. Een hash van de publieke sleutel (DS-record) wordt aan de bovenliggende zone aangeleverd (.com, .org enz.)
  4. Ook de bovenliggende zone is ondertekend, tot aan de rootzone
  5. Wanneer een resolver een DNS-antwoord ontvangt, volgt hij de vertrouwensketen vanaf de root om de handtekeningen te verifiëren

DNSSEC-recordtypen

Record TypePurpose
DNSKEYDe publieke ondertekeningssleutel van de zone
DSHash van de DNSKEY van de onderliggende zone, opgeslagen in de bovenliggende zone
RRSIGCryptografische handtekening over een set DNS-records
NSEC / NSEC3Bewijs dat een record niet bestaat (denial of existence)

De vertrouwensketen

DNSSEC bouwt een vertrouwensketen van de rootzone tot de afzonderlijke domeinen:

Root zone (.) ← Trust anchor, key is published by IANA
  └─ .com zone ← Signed, DS record in root zone
       └─ example.com ← Signed, DS record in .com zone
            └─ DNS records ← Signed with example.com's key

De sleutel van de rootzone (het "trust anchor") is ingebouwd in resolvers die DNSSEC valideren. Dat is het startpunt van elke verificatie.

DNSSEC versleutelt het verkeer NIET

Een veelvoorkomend misverstand: DNSSEC authenticeert DNS-antwoorden maar encrypt ze niet. DNS-query's en -antwoorden worden nog steeds onversleuteld verstuurd. Gebruik voor privacy:

  • DNS-over-HTTPS (DoH) — versleutelt DNS-verkeer via HTTPS
  • DNS-over-TLS (DoT) — versleutelt DNS-verkeer via TLS

DNSSEC inschakelen voor je domein

  1. Controleer of je DNS-hostingprovider DNSSEC-ondertekening ondersteunt
  2. Schakel DNSSEC-ondertekening in in het configuratiescherm van je DNS-provider
  3. Je provider genereert DNSKEY-records en ondertekent je zone
  4. Kopieer de DS-recordwaarden die je DNS-provider laat zien
  5. Lever het DS-record aan bij je domeinregistrar (meestal via zijn configuratiescherm)
  6. Wacht op propagatie (kan tot 48 uur duren)

Controleer je DNSSEC-status

Probeer het op je domein

Zie de theorie in de praktijk — voer DNSSEC-controle uit voor je eigen domein.