DNSSEC
DNSSEC is een systeem waarmee de DNS-regels van een domein worden voorzien van een digitale handtekening zodat de echtheid van de regels kan worden gecontroleerd.
In dit artikel leggen we uit hoe DNSSEC werkt, en waarom DNSSEC noodzakelijk is.
In dit artikel wordt veel gesproken over digitale handtekeningen, deze werken anders dan klassieke handtekeningen gezet met een pen. We raden aan eerst ons artikel over cryptografie te lezen, daarin wordt uitgelegd wat digitale handtekeningen precies zijn.
Wat is DNS?
Alle computers aangesloten op het internet hebben een uniek identificatienummer, bekend als het IP-adres.
Computers gebruiken dit IP-adres om met elkaar te kunnen communiceren over het internet.
Deze nummers zijn lastig te onthouden, daarom is het Domain Name System (DNS) ontwikkeld.
Het doel van het DNS is om computers verbonden aan het internet herkenbaar te maken met hun domeinnaam, in plaats van het IP-adres.
Het DNS kan worden gezien als het telefoonboek van het internet.
Wanneer in een browser een domeinnaam wordt ingetypt (bijvoorbeeld securist.nl
) zoekt de computer met het DNS het bijbehorende IP-adres op (in dit geval 104.198.14.52
).
De computer zal het met dat adres verbinden om de website op te halen.
“Het DNS kan worden gezien als het telefoonboek van het internet”
Behalve voor het bezoeken van een website wordt de domeinnaam ook gebruikt om te bepalen waar e-mail moet worden afgeleverd en is het mogelijk om beleid over het domein te publiceren in het DNS. Voor elk van deze instellingen spreekt men van een DNS-regel, of DNS-record.
Autoritaire en caching nameservers
DNS-regels worden gepubliceerd en verspreid over het internet door zogenoemde nameservers. Dat zijn computers met als taak de domeinnamen en bijbehorende IP-adressen bij te houden. Er zijn vele nameservers op het internet aangesloten en verdeeld over de planeet. Dankzij deze verdeling werkt DNS snel en robuust. Per domeinnaam zijn er enkele nameservers aangewezen als de autoritaire nameserver(s). De autoritaire nameservers worden beschouwd als de bron van waarheid. De eigenaar van een domeinnaam beheert de DNS-regels op de autoritaire nameservers. Alle overige nameservers maken kopieën van deze DNS-regels en verspreiden deze verder. We spreken dan van caching nameservers, soms ook wel een resolver genoemd.
Bijvoorbeeld: voor je internetverbinding thuis gebruik je de caching nameserver van je internetprovider op IP-adres 123.123.123.123
.
Zodra je in je browser https://securist.nl
intypt, zal de computer eerst naar de nameserver op 123.123.123.123
verbinden om op te vragen wat het IP-adres is van securist.nl
.
De caching nameserver zal deze aanvraag doorsturen naar de autoritaire nameserver van securist.nl
.
De autoritaire nameserver geeft als antwoord: het IP-adres van securist.nl
is 104.198.14.52
.
De caching nameserver geeft het antwoord door naar jouw computer zodat deze de website kan openen.
De caching nameserver slaat bovendien het antwoord van de autoritaire nameserver op, zodat hij voortaan het antwoord direct kan geven zonder eerst de autoritaire nameserver te hoeven raadplegen.
De oplettende lezer zal een recursief probleem zien in het voorbeeld. Namelijk: hoe weet de caching nameserver van de provider wat de autoritaire nameserver is voor securist.nl
?
Een domeinnaam wordt door een nameserver van achter naar voren gelezen. In dit geval zal het .nl
dus eerst worden behandeld.
Een nameserver begint altijd eerst met een aanvraag bij de zogenoemde DNS root-server, dit is nameserver waarvan het IP-adres voorgeprogrammeerd staat in elke nameserver.
Bij de rootserver wordt gevraagd wat de autoritaire nameserver is voor het .nl
top-level domein (TLD).
Vervolgens wordt verbinding gemaakt met de autoritaire nameserver voor het TLD en daar wordt gevraagd wat de autoritaire nameserver is voor het securist.nl
domein.
Zo wordt de keten van achter naar voren afgewerkt om uiteindelijk uit te komen bij de autoritaire nameserver van het domein welke is aangevraagd.
De nameserver(s) van het TLD worden beheert door het registry van dat TLD, voor .nl
is dat de Stichting Internet Domeinregistratie Nederland (SIDN).
Zie ook ons artikel over domeinnaam beveiliging.
DNS cache poisening
De caching nameservers maken het DNS robuust en snel, maar hier ligt ook het zwakke punt van het DNS systeem: de caching nameservers kunnen valse DNS-regels verspreiden. Als domeineigenaar heb je alleen beheer over de autoritaire nameserver, alle andere nameservers op het internet kun je niet vertrouwen.
Een caching nameserver kan zijn blootgesteld aan hackers, censuur, bedrijfsspionage, etc. Als dit gebeurd kan de caching nameserver een ander IP-adres teruggeven, waardoor de browser verbindt met een valse website, of een e-mail wordt afgeleverd bij een andere inbox.
Dit staat bekend als een DNS cache poisening aanval.
DNSSEC
De Domain Name System Security Extensions of DNSSEC in het kort biedt een oplossing voor de cache poisening aanval. Met DNSSEC worden digitale handtekeningen toegevoegd aan alle DNS-regels. Voor meer uitleg over digitale handtekeningen raden we aan eerst ons artikel over cryptografie te lezen. Met deze digitale handtekening kan een computer controleren of een DNS-regel afkomstig is van de autoritaire nameserver, en dat er onderweg niks aan is veranderd.
Om DNSSEC te gebruiken maakt de autoritaire nameserver een geheime en publieke sleutel aan. De geheime sleutel wordt gebruikt om de handtekening te zetten over de DNS-regels. De publieke sleutel wordt 'omhoog' gestuurd in de DNS keten, bijvoorbeeld naar de nameserver van de TLD.
De autoritaire nameserver voor securist.nl
maakt gebruik van DNSSEC.
De publieke sleutel voor de digitale handtekeningen voor de DNS-regels is gepubliceerd op de nameservers van het .nl
TLD.
De TLD (voor .nl
is dat SIDN) gebruikt ook DNSSEC, en heeft op zijn beurt weer de publieke sleutel van securist.nl
ondertekend met zijn handtekening.
De publieke sleutel van de TLD beheerder is weer 'omhoog' gestuurd naar de bovenliggende nameservers, in dit geval zijn dat de root servers.
Op deze manier kan een hele keten van nameservers digitaal worden ondertekend.
De DNS regels van securist.nl
kunnen worden gecontroleerd door de sleutel op te halen bij de bovenliggende nameserver, waarvan de sleutel weer kan worden gecontroleerd bij de daarboven geplaatste nameserver, enzovoorts.
De keten houd op bij de root server, de publieke sleutel van de root server kan (net als het IP-adres) dus niet worden gepubliceerd via DNS.
De publieke sleutel van de root server is daarom, net als het IP-adres, gebundeld in de DNS nameserver software.
In de praktijk
In de praktijk zal de registrar (de partij waar de domeinnaam is geregistreerd) verantwoordelijk zijn voor het toepassen van DNSSEC. Dit is voornamelijk omdat de registrar de enige is met een (praktische) manier om de publieke sleutel door te sturen naar de bovenliggende nameserver (van de registry). De domeinnaam eigenaar hoeft (en kan) dus vaak niks te doen om DNSSEC in te stellen.
Omdat de registrar de DNSSEC instellingen automatisch doet voor zijn klanten, beheert de registrar ook vrijwel altijd de geheime sleutel voor de DNSSEC handtekeningen. Dit is eigenlijk geen wenselijke situatie, idealiter moet de domeinnaam eigenaar de sleutels zelf beheren, maar om DNSSEC implementatie praktisch te houden is dit een noodzakelijk kwaad. Het is daarom van belang dat bij het registeren van een domeinnaam een betrouwbare registrar wordt uitgezocht. Zie daarover meer in ons artikel over domeinnaam beveiliging.
Biedt je registrar geen DNSSEC, overweeg dan het domein te verhuizen naar een betere registrar.
Kritiek
Sommige beveiliging specialisten hebben kritiek geuit over DNSSEC. Omdat DNSSEC is ontwikkeld met backwards compatibility in gedachten is het controleren van de DNSSEC handtekeningen optioneel. Niet alle software zal de handtekening controleren, waardoor in dat geval DNSSEC geen nut heeft. Tevens zijn er zorgen geuit over de rol van de registrars in de DNSSEC keten. Zoals hierboven uitgelegd zal in bijna alle gevallen de registrar de geheime sleutel beheren, wat niet wenselijk is.
Deze bezwaren worden erkend door de betrokken partijen. De conclusie is echter dat een domein beveiligd met DNSSEC, ondanks de tekortkomingen, beter is dan een domein zonder DNSSEC.
Test je DNSSEC
Om te testen of DNSSEC correct is ingeschakeld voor een domein kan gebruik worden gemaakt van een online test-tool. Bijvoorbeeld de DNSSEC tester van Verisign.
Populaire caching nameservers zoals 8.8.8.8
van Google of 1.1.1.1
van Cloudflare zullen DNSSEC handtekeningen controleren indien DNSSEC is ingeschakeld voor een domein.
Als een domein geen geldige DNSSEC handtekening heeft zullen beide de domeinnaam blokkeren, zoals het hoort.
Let dus wel op dat een foutieve DNSSEC configuratie een website onbereikbaar kan maken.
Conclusie
Met DNSSEC worden DNS-regels van een domein voorzien van digitale handtekeningen waardoor de echtheid van de DNS-regels kan worden gecontroleerd. Zonder DNSSEC is het mogelijk voor kwaadwillenden om website bezoekers en e-mails gericht aan een domein om te leiden naar een valse website of e-mail inbox.
Securist controleert de correcte implementatie van DNSSEC in zowel de veiligheidsinspectie voor websites, als de veiligheidsinspectie voor e-mail.
Verder lezen
Zie ook onze andere relevante artikelen:
- Domeinnaam beveiliging
- Introductie cryptografie
- SPF (e-mail beveiliging)
- DKIM (e-mail beveiliging)
Over de auteur:
Léon Melis is inspecteur bij Securist. Securist inspecteert websites, e-mail en domeinen op veiligheid en privacybescherming. Als onderdeel van de veiligheidsinspectie voor websites worden de domeinnaam en DNS instellingen gecontroleerd op veiligheidsrisico's.