DNSSEC staat voor Domain Name System Security Extensions en is een manier om domeinnamen te beveiligen. Het doel is voornamelijk om het mogelijk te maken om de correctheid gegevens van een domeinnaam te kunnen controleren.

Wat weinig mensen weten is dat veel internetstandaarden zonder beveiligingsmechanismen zijn ontworpen. In het begin werkte al deze systemen op kleine schaal en was het vaak al complex om überhaupt iets werkend te krijgen. De mogelijkheden die hackers decennia later zouden hebben was toen nog niet een overweging. Dit geldt onder andere voor verkeer naar websites, het verzenden en ontvangen van email en de gegevens van domeinnamen.

Door een gebrek aan beveiliging en controles is het in basis mogelijk voor een aanvaller om foutieve informatie in het globale domeinnaamsysteem in te brengen, en daardoor ongemerkt gebruikers naar malafide websites te sluizen of emails te onderscheppen.

De oplossing hiervoor heet DNSSEC. Om te begrijpen hoe deze beveiliging werkt moeten wij eerst de werking van domeinnamen in het algemeen begrijpen.

Hoe domeinnamen en DNS werken

DNS staat voor domain name system en werkt (sterk versimpeld) als een soort telefoonboek. Wanneer iemand een website wil bekijken wordt het adres van de website (bij voorbeeld www.panthera.nl) opgezocht om het bijhorende IP adres te vinden. De browser kan vervolgens een verzoek voor de website naar dat adres sturen.

Een telefoonboek wordt door een centrale organisatie beheerd en gepubliceerd, maar DNS is een gedistribueerd systeem. Elke beheerder van een domeinnaam kan zelf adressen voor dat domein instellen. Voor elke domeinnaam bestaat er als het ware een apart telefoonboek, waarin staat waar de website gevonden kan worden, waar de mail naartoe verstuurd moet worden en meer.

Om het efficiënt en werkbaar te houden wordt er niet bij elk bezoek van een site een vraag naar de beheerder van de domeinnaam gestuurd. Om de hoeveelheid verkeer en aanvragen te verkleinen wordt er zo genaamde caching toegepast op een aantal plekken. Caching is een techniek waarbij gegevens bewaard worden om de belasting van servers te beperken. Bij DNS gebeurt dit binnen de browser, het besturingssysteem van het apparaat, en de DNS servers die binnen het apparaat zijn ingesteld. Dit laatste zijn vaak servers van de internetprovider. Wanneer bij voorbeeld een klant van KPN de website van Panthera heeft bezocht, dan bewaart KPN de gegevens van panthera.nl, zodat deze klaarstaan voor de volgende klant die ook naar panthera.nl wil.

Dit is het kwetsbare onderdeel. De servers van een internetprovider moeten grote hoeveelheden gegevens over domeinnamen verwerken. Zoals hierboven genoemd is er in DNS standaard geen verificatiemechanisme. De consequentie hiervan is dat een hacker onder bepaalde omstandigheden de mogelijkheid heeft om foutieve data naar deze servers te sturen. Door het gebrek aan controlemogelijkheden worden die gegevens daarna opgeslagen en (her)gebruikt. Dit wordt een DNS cache poisoning attack genoemd.

Een kort voorbeeld ter illustratie. Een hacker zou een aanval kunnen plannen voor de domeinnaam ing.nl en daarbij de servers van KPN proberen te raken. De hacker achterhaalt op welk moment de servers van KPN data opvragen over de domeinnaam ing.nl. Op dat moment wordt de aanval ingezet en worden de servers van KPN overspoeld door de verkeerde gegevens. De servers van KPN slaan die gegevens op. Vervolgens worden alle klanten van KPN, die het internetbankieren van de ING willen raadplegen, naar de website van de hacker omgeleid. Vanwege de caching die hierboven wordt genoemd duurt het ook een tijd voordat het probleem opgelost kan worden. Dit voorbeeld klinkt misschien vergezocht, maar precies dit gebeurde een internetprovider en een bank ongeveer tien jaar geleden in Brazilië, waarbij de hackers inloggegevens voor het internetbankieren konden onderscheppen.

Hoe DNSSEC de domeinnamen en gebruikers beschermt

Uit bovenstaande blijkt dat een aanval op DNS/domeinnamen ernstige gevolgen kunnen hebben. De oplossing die hiervoor is bedacht heet DNSSEC, of Domain Name System Security Extensions. Zoals de naam al doet vermoeden is DNSSEC een uitbreiding van DNS, en niet een vervanging. Het voegt een extra laag met bescherming toe aan de werking van DNS. Hierdoor kunnen alle bestaande systemen die wel DNS begrijpen, maar (nog) niet DNSSEC ondersteunen toch de nodige gegevens blijven opvragen.

Bij DNSSEC worden een aantal cryptografische technieken toegepast. De beheerder van een domeinnaam maakt een beveiligingssleutel aan. Door middel van een cryptografisch algoritme worden alle domeinnaamgegevens ondertekend. Voor elk stukje gegeven wordt een soort gecodeerde kopie opgeslagen.

Wanneer iemand een website wil bezoeken waarvan de domeinnaam met DNSSEC is beveiligd, dan vraagt de computer niet alleen het adres van de website op, maar ook de gecodeerde gegevens. Door deze met elkaar te vergelijken kan de ontvanger zich ervan verzekeren dat de gegevens alleen van de eigenaar van de domeinnaam kunnen komen. Omdat een hacker geen toegang heeft tot de beveiligingssleutel van de beheerder heeft hij geen mogelijkheid om vervalste informatie te genereren.

Bovenstaand is een sterk versimpelde uitleg. De complete uitvoer van configuratie en controle is technisch complex en te uitgebreid om in dit artikel te omschrijven.

DNSSEC inschakelen en gebruiken

Voor een optimale beveiliging met DNSSEC is het van belang dat de hele keten beveiligd is, van de domeinnaam, de tussenliggende DNS servers tot de computer die de gegevens van de domeinnaam opvraagt. Op elke plek in de keten moet de controle plaats vinden om de verbinding echt veilig te maken.

Voor particulieren is het echter lastig om de laatste stap te beveiligen. Windows ondersteunt technisch gezien wel de validatie van DNSSEC gegevens, maar de inrichting daarvan is  complex. De beste stap die een consument daarom kan nemen is om ervoor te zorgen dat de eigen computer en router/modem gegevens van een beveiligde server ontvangen. De grote Nederlandse internet providers zorgen hier standaard voor. Mocht de eigen provider dit niet kunnen doen, dan blijft het mogelijk om openbare DNS servers te gebruiken van Google2, CloudFlare3 of Quad94.

Bedrijven hebben betere mogelijkheden voor het inschakelen van DNSSEC beveiliging. Naast het feit dat er policies uitgevoerd kunnen worden die werkstations dwingen om controles uit te voeren, zal de beste manier zijn om DNSSEC validatie in te schakelen op de interne DNS server(s).

Als tweede stap kunnen deze interne servers van het bedrijf zo ingesteld worden dat ze alleen validerende servers gebruiken voor forwarding. De bovengenoemde diensten van Google, CloudFlare en/of Quad9 kunnen hiervoor gebruikt worden. Doordat alle werkstations via deze (van buitenaf afgeschermde) DNS servers gegevens opvragen wordt ervoor gezorgd dat alle apparaten van het interne netwerk beschermd zijn.