Domain Name System Security Extensions
DNS is het telefoonboek van internet en DNSSEC is de beveiliging die daar bij hoort. DNSSEC is een vrij nieuw systeem dat pas sinds 2009 in opmars is. DNSSEC is in Nederland explosief gegroeid maar er is nog maar vrij weinig kennis en ervaring beschikbaar. In dit topic kunnen we praten over onze ervaringen.Achtergrond DNS
DNS is het telefoonboek van internet. Als je een website bezoekt zal je computer DNS gebruiken om te leren hoe die website bereikt kan worden. DNS moet je van rechts naar links lezen. Als je naar www.voorbeeld.com gaat dan zal je computer eerst .com opzoeken, daarna voorbeeld, en als laatste www.Achtergrond DNSSEC
DNSSEC moet er voor zorgen dat DNS te vertrouwen is zodat je zeker weet dat je de juiste informatie krijgt. Zonder DNSSEC is het mogelijk om DNS te onderscheppen en te manipuleren wat de deur open zet voor allerlei vormen van misbruik. Zo kun je telebankiers naar een valse website sturen, e-mail onderscheppen of zoekopdrachten manipuleren.Sinds een paar jaar wordt er daarom gewerkt aan de uitrol van DNSSEC en de resultaten beginnen nu zichtbaar te worden.
Techniek
DNSSEC werkt door een digitale handtekening toe te voegen aan ieder stuk informatie dat in DNS staat. (Zo'n stuk informatie heet een "resource record"). Er wordt een Public Key Infrastructure gebouwd bovenop het bestaande DNS. Een digitale handtekening is een bewijs dat informatie niet is veranderd. Met behulp van digitale sleutels kun je handtekeningen zetten en controleren.Voor ieder domein wordt er een digitale sleutel aangemaakt waarmee een handtekening wordt gezet onder alle DNS-records in dat domein. De digitale sleutel bewijst de echtheid van die handtekeningen. Je moet dan wel de digitale sleutel hebben en de echtheid daar van controleren. Daartoe worden die sleutels zelf ook in DNS gezet.
Om de echtheid te bewijzen laat je jouw sleutels ondertekenen door een betrouwbare partij. Gelukkig is er voor ieder domein een betrouwbare partij, namelijk het bovenliggende domein. Als je naar voorbeeld.com gaat zoekt je computer immers eerst '.com' op. Als dat al niet te vertrouwen is, dan heeft het ook geen zin om verder te gaan. Je kan dus prima informatie over 'voorbeeld.com' opslaan in '.com' . Informatie over 'www.voorbeeld.com' kun je dan weer mooi kwijt in 'voorbeeld.com'.
Zo schuift het probleem dus steeds een stukje op tot alles op één punt samen komt:
- 'www.afdeling.voorbeeld.com' controleer je met 'afdeling.voorbeeld.com'.
- 'afdeling.voorbeeld.com' controleer je met 'voorbeeld.com'.
- 'voorbeeld.com' controleer je met '.com'.
- '.com' controleer je met '.' .
Servers
Er zijn twee soorten DNS-servers. 'Authorative' servers bieden informatie aan. 'Resolvers' zoeken deze informatie op en geven het antwoord door aan de opvrager. DNSSEC moet je aan beide kanten implementeren. De handtekeningen die je maakt worden door de authorative servers gepubliceerd. De resolvers moeten op hun beurt die informatie weer controleren. Dat noemen we valideren.DNSSEC vorderingen
Ondanks dat DNSSEC pas sinds 2010 actief is doet een flink deel van Internet al mee:- 30% van de top-level-domains gebruikt DNSSEC (.com, .net, .nl, .edu, .gov, ...).
- 1% van de second-level-domains gebruikt DNSSEC (sidn.nl, whitehouse.gov, google.com, etc...).
- 30%(!) van .NL gebruikt DNSSEC.
- 10% van de eindgebruikers is beveiligd met DNSSEC.
De grote uitzondering daarop is Nederland. Dankzij slimme stimulering van SIDN hebben de grootste aanbieders van Nederland DNSSEC massaal aangezet. Waar .com zo'n kwart miljoen ondertekende domeinen heeft is het in .nl al meer dan anderhalfmiljoen. NL is daarin groter dan de rest van de wereld samen. Vergelijk:


Verschillende nationale overheden (waaronder NL en de VS) hebben DNSSEC min-of-meer verplicht gesteld voor overheidsdomeinen.
Aan de kant van de resolvers is het beeld vergelijkbaar. Wereldwijd heeft een klein percentage van de resolvers DNSSEC aan staan met één grote uitzondering die het hele wereldbeeld bepaald: Google. Google heeft een publieke DNS-resolver die door bijna 10% van de wereld gebruikt wordt. Deze DNS-resolver heeft DNSSEC aan staan waarmee in één klap zo'n 10% van de wereld beveiligd is.
Vergelijkingen
DNSSEC vs HTTPS/SSL
DNSSEC wordt wel eens vergelijken met HTTPS en/of SSL. Eigenlijk is dat appels met peren vergelijken. Deze systemen lossen verschillende problemen op en vullen elkaar aan maar het zijn geen alternatieven, je hebt allebei nodig.- DNSSEC heeft aan één handtekening genoeg hebt om het hele systeem te controleren. SSL heeft honderden CA's met eigen handtekeningen.
- Iedere SSL-CA kan een certificaat maken voor voorbeeld.com . In DNSSEC kan alléén .com zorgen voor de beveiligingen van voorbeeld.com .
- Een SSL(EV) certificaat garandeert iets over de eigenaar. Er wordt (in theorie) gecontroleerd of jij wel legitieme eigenaar van een domein bent (in praktijk valt die controle nogal tegen). DNSSEC doet hier geen beloftes over en kijkt alleen naar de techniek.
- SSL beveiligt tegen afluisteren, DNSSEC niet, alles gaat in cleartext over het netwerk.
- DNSSEC-informatie kan gecachte en gedeeld worden tussen verschillende gebuikers. SSL sessies kun je niet delen.
- SSL wordt door de applicatie gedaan, DNSSEC door de resolver. Applicaties kunnen SSL slecht implementeren of fouten negeren. We klikken dus massaal HTTPS-waarschuwingen weg. DNSSEC wordt door je DNS-resolver gedaan. Op applicatieniveau hoef (en kan) je niks doen.
DNSSEC vs DNS
Ook dit is een beetje een valse vergelijking, DNSSEC verandert namelijk niks aan het bestaande DNS-systeem maar voegt er alleen maar aan toe, maar er is één fundamentele verandering. Vroeger was DNS een onveranderlijk en simpel systeem. Eenmaal geinstalleerd had je er geen omkijken meer naar. DNSSEC handtekeningen zijn echter maar beperkt geldig. Je hebt een stuk software nodig dat die handtekeningen regelmatig ververst. Die software kan zelfstandig zijn (zonesigner, OpenDNSSEC) of deel van je DNS-server (Bind, PowerDNS). Daarnaast is het gebruikelijk om regelmatig de digitale sleutels te vernieuwen en die door te geven aan je registrar.Verhuizen
Het (veilig) verhuizen van DNSSEC-domeinen is een kunst op zich. Vroeger was het genoeg om een transfer-code door te geven. Tegenwoordig moet je elkaars sleutels tekenen. Doe je dat niet dan gaan dingen afschuwelijk fout. Vergelijk het met de verkoop van een auto. Als je de sleutel hebt kun je met een auto weg rijden, maar als je de papieren niet laat omzetten anders heb je een probleem bij de eerste de beste verkeerscontrole.SIDN werkt aan een systeem om dit te vereenvoudigen.
- DNS: fire & forget, DNSSEC: regelmatig onderhoud nodig
- DNS: alleen contact met registrar bij verhuizingen, DNSSEC: jaarlijks sleutel vervangen
- DNS: verhuizen domeinen simpel, DNSSEC: verhuizen enorm ingewikkeld.
- DNS: makkelijk te manipuleren
- DNSSEC: "het gevraagde antwoord bestaat niet". DNS: "ik weet het niet, maar misschien het ander wel"
Misverstanden
DNSSEC kun je veilig negeren
Voor aanbieders van DNS is DNSSEC niet te negeren. Als je niks doet kom je in de problemen zodra je domeinen gaat verhuizen. Je hoeft niet mee te doen, maar dan moet je het uitschakelen. Je kan het niet negeren. Als je dat wel doet dan kan 10% van de wereld je domein niet meer bezoeken, waaronder Google. Niet in Google staan is voor de meeste websites funest.DNSSEC is in de eerste plaats een technisch probleem
De techniek is niet het probleem, die werkt wel. Voor DNSSEC heb je echter procedures nodig om digitale sleutels aan te maken, op te slaan en uit te wisselen. Dat is meer een kwestie van beleid dan van techniek. Een digitale handtekening maken is makkelijk maar er ook aan denken om 13 keer per jaar een sleutel te wisselen past niet in de huidige DNS-workflow.DNSSEC beschermt tegen afluisteren / internetblokkades
DNSSEC is net zo makkelijk af te luisteren en te blokkeren als gewone DNS, daar helpt het niet tegen. Tegen afluisteren wordt dnscrypt ontwikkeld.Blokkades en manipulatie van DNS-pakketjes kun je niet voorkomen maar je kan wel detecteren dat de informatie die je krijgt niet klopt of niet compleet is. Je kan het dan opnieuw proberen bij een andere DNS-server.
Goodies
DNSSEC is op zichzelf al heel nuttig maar er zijn meer applicaties die kunnen profiteren van een vertrouwbare gedistribueerde database.IPSEC
IPSEC is een systeem om ip-verbindingen te beveiligen. Net als DNSSEC werkt het met digitale sleutels. Die sleutels moet je dan wel veilig kunnen uitwisselen, en dat kan nu via DNS.SSHFP
SSHFP publiceert de fingerprints van een SSH-server via DNS. Zo kun je bij de eerste verbinding al controleren of je met de juiste server van doen hebt. Dat kan al langer, maar nu kan het ook veilig. OpenSSH kan zelf controleren of je DNSSEC-ondersteuning hebt en daar dan gebruik van maken.DANE
De meest spraakmakende toepassing van DNSSEC is wel DANE (DNS-based Authentication of Named Entities). DANE is een alternatief voor de CA's die SSL gebruikt. SSL maakt gebruik van "trusted third parties". Een partij die instaat voor de echtheid van een stel SSL-certificaten. Er zijn zo'n 600 CA's in de wereld die je blind moet vertrouwen. Één rotte appel brengt het hele systeem aan het wankelen. In Nederland hebben we Diginotar gehad. Ik vrees dat in andere delen van de wereld de situatie nog veel slechter is. CA's vragen geld voor hun diensten. Je kan wel je eigen certificaat uitgeven (een zgn. "self signed certificate") maar dan krijgen je bezoekers zo'n HTTPS-waarschuwing.DANE maakt het mogelijk om SSL-certificaten te controleren via DNS. Je neemt het hele proces zelf in handen en bent alleen nog afhankelijk van je registrar, maar daar was je toch al van afhankelijk. Het nadeel van dit systeem is wel dat je helemaal afhankelijk wordt van DNS en er zijn veel meer slechte registrars dan er CA's zijn.
Gouden tip
Als er één ding is wat je onthoudt over DNSSEC, laat het dan de website http://dnsviz.net zijn. Deze website helpt je bij het analyseren en debuggen van DNSSEC.This post is warranted for the full amount you paid me for it.