Resultaten

Nieuwe versie SIDN NSEC3 white paper beschikbaar

  • Door: Miek Gieben
  • 16 januari 2012 - 11:55 uur

Na de publicatie van het SIDN NSEC3 white paper, hebben we van een aantal mensen feedback ontvangen. De meest constructieve feedback kwam van Karst Koymans van de Universiteit van Amsterdam. Na aanleiding van deze, en andere feedback publiceren we een versie 2 van het white paper.[meer...]

Deze versie heeft de volgende wijzigingen ten opzichte van versie 1: 

  • Een aantal correcties;
  • Het NSEC3-voorbeeld retourneert nu drie NSEC3 records in plaats van twee;
  • Een tweetal illustraties is toegevoegd;
  • 'Empty non-terminals' worden kort uitgelegd.

De versie 2 kun je hier dowloaden. 

Tags
meer

NSEC4

  • Door: Miek Gieben
  • 09 januari 2012 - 08:20 uur

Door het schrijven van het NSEC3 whitepaper, krijgen we natuurlijk een goed begrip van hoe "authenticated denial of existence" nu eigenlijk werkt in DNSSEC. Hierbij kwamen vragen naar boven zoals:

  • Is NSEC3 wel de meeste efficiënte manier om (hashed) authenticated denial of existence te doen?
  • Kun je niet een en ander optimaliseren met betrekking tot de wildcards;
  • Kan Opt-Out niet ook voor un-hashed (NSEC dus eigenlijk) gebruikt worden.

[meer...]

Het beantwoorden van deze vragen leidde tot de geboorte van NSEC4, die is beschreven in deze draft:

http://www.ietf.org/id/draft-gieben-nsec4-00.txt 

Dit is een eerste versie (een -00 zoals dat bij de IETF heet), er zal zeker nog een -01 en misschien wel een -02 van komen.

In NSEC4:

  • Wordt de wildcard NSEC3 wegbezuinigd en vervangen door een enkel bitje. Dit verkleint de negatieve antwoorden met gemiddeld 1 NSEC3 record (+signatures).
  • Wordt zero-hashing geïntroduceerd, oftewel helemaal geen hashing, waardoor er effectief sprake is van NSEC met Opt-Out (wat de NSEC specificatie nu ontbeert);
  • Unificeert dus eigenlijk NSEC and NSEC3 tot een nieuwe record: NSEC4.

Het is niet bedoeling dit te standaardiseren, vooralsnog mikken we op de 'experimental' track. Daarmee blijft dit document wel bewaard, maar niemand wordt gedwongen het te implementeren. Het is wel belangrijke documentatie.

Van het NSEC3-whitepaper, waarover we eerder schreven, volgt binnenkort ook een versie 2, die wat zaken verduidelijkt en nog net wat vollediger is.

NSEC3 whitepaper

  • Door: Miek Gieben
  • 09 november 2011 - 15:03 uur

In beginsel is DNSSEC niet heel ingewikkeld, maar sommige onderdelen van de specificatie kunnen toch wel intimiderend zijn. Een zo'n onderdeel is "Authenticated denial of existence" in goed Nederlands. Dit behelst, kort gezegd, het met zekerheid communiceren dat een domein niet bestaat in DNSSEC.[meer...]

In de DNSSEC-specificatie worden hiervoor twee records (en dus eigenlijk twee manieren) voor gebruikt, namelijk:

  • het NSEC record en;
  • het NSEC3 record.

In dit (Engelstalige) 'whitepaper' leggen we uit hoe NSEC en NSEC3 in elkaar steken en wat de verschillen zijn tussen beiden oplossingen. Ook wordt stil gestaan bij de evolutie van NSEC (die was er namelijk eerst) naar NSEC3.

Het whitepaper is bedoeld voor mensen die al enige bekendheid hebben met DNS/DNSSEC.

LDNS-gen-zone

  • Door: Marco Davids
  • 01 juni 2011 - 09:28 uur

LDNS (van NLnetLabs) is een C-library waarmee C-programmeurs heel eenvoudig DNS-functionaliteit kunnen toevoegen aan hun software. De library is open-source en wordt als package meegeleverd met diverse OS-distributies, waaronder Debian en Ubuntu. Maar de source-code is ook eenvoudig te downloaden van de NLnetLabs-website.[meer...]

In de meegeleverde 'example-directory' staan tal van goede suggesties voor mogelijke toepassingen. De voorbeeldprogramma's zijn niet alleen leerzaam, maar ook dusdanig nuttig dat sommige Linux-distributies ze als een apart package aanbieden (bij Debian/Ubuntu heet dat package 'ldns-utils').
Ook bij SIDN maken we regelmatig gebruik van de handige voorbeeldprogramma's. Onze grote favoriet is misschien wel het relatief onbekende en ondergewaardeerde 'ldns-dpa'. Een heel leuk stuk software, waarmee supereenvoudig de fraaiste analyses op DNS-verkeer te maken zijn.

Voorbeeld van ‘ldns-dpa’:

ldns-dpa -u qtype -p dns-dump.pcap
Packets that are not IP: 0
bad dns packets: 124
arp packets: 0
udp packets: 9459054
tcp packets (skipped): 18200
reassembled fragmented packets: 0
packet fragments lost: 0
Total number of DNS packets: 9458930
Total number of DNS packets after filter: 9458930
qtype = '': 493 (0.01%)
qtype = 'A': 5448014 (57.60%)
qtype = 'A6': 2655 (0.03%)
qtype = 'AAAA': 871316 (9.21%)
qtype = 'ANY': 6980 (0.07%)
qtype = 'CNAME': 663 (0.01%)
qtype = 'DLV': 136 (0.00%)
qtype = 'DS': 72 (0.00%)
qtype = 'MX': 2015921 (21.31%)
qtype = 'NAPTR': 897 (0.01%)
qtype = 'NS': 10042 (0.11%)
qtype = 'PTR': 1014883 (10.73%)
qtype = 'SOA': 9047 (0.10%)
qtype = 'SPF': 1475 (0.02%)
qtype = 'SRV': 41704 (0.44%)
qtype = 'TXT': 33874 (0.36%)
qtype = 'TYPE0': 758 (0.01%)

Maar ook de DNSSEC-gerelateerde voorbeelden uit de example-directory weten we bij SIDN op waarde te schatten. Als we desondanks nog bepaalde functionaliteit missen, is daar eenvoudig in te voorzien door zelf iets te programmeren met behulp van LDNS. Zo hebben we een aantal Nagios-plugins geschreven, onder andere om de juistheid van DNSSEC-parameters in de .nl-zone te kunnen monitoren.

Over DNSSEC gesproken: sinds LDNS v1.6.10 (uitgekomen op 31 mei 2011) bevat de collectie meegeleverde voorbeelden een nieuwe telg, namelijk: 'ldns-gen-zone'. Deze is gemaakt door SIDN. We schreven hem vorig jaar, ten tijde van de introductie van DNSSEC in de .nl-zone.

Met 'ldns-gen-zone' zijn we in staat om te simuleren hoe onze hard- en software reageert op grote, gesigneerde zonefiles. De tool stelt ons in staat om een bestaande zonefile (we gebruikten hiervoor uiteraard de .nl-zonefile) te vergroten en te voorzien van een bepaald percentage DS-records. Zodoende kunnen we zonefiles genereren van elke gewenste grootte en met elk gewenst percentage DS records. Er bestaan weliswaar scripts die ongeveer hetzelfde doen, maar het resultaat daarvan is in onze ogen onvoldoende representatief voor de echte situatie. Ze genereren bijvoorbeeld domeinnamen volgens een vast patroon en van gelijke lengte, terwijl 'ldns-gen-zone' een bestaande zonefile als basis neemt, met alle variatie van dien. Daarnaast genereren de bestaande tools dikwijls allemaal dezelfde DS records, terwijl 'ldns-gen-zone' unieke DS records maakt. Dergelijke variatie maakt de test-zonefile in onze ogen veel realistischer.

Het aanmaken van een zonefile voor testdoeleinden gaat met behulp van 'ldns-gen-zone' heel simpel. Stel we willen 'zonefile.txt' uitbreiden met twee miljoen willekeurige domeinnamen en 50% DS-records, dan volstaat het volgende commando:

ldns-gen-zone -a 2000000 -p 50 -s ./zonefile.txt

Waarbij zonefile.txt een (minimale) zonefile is, bijvoorbeeld:

tld.            7200 IN    SOA ns1.example.net. hostmaster.nic.tld. (
                2011060605 ; serial
                7200       ; refresh (2 hours)
                900        ; retry (15 minutes)
                2419200    ; expire (4 weeks)
                900        ; minimum (15 minutes)
                )
tld.            172800 IN NS ns4.example.net.
tld.            172800 IN NS ns3.example.net.
tld.            172800 IN NS ns1.example.net.
tld.            172800 IN NS ns2.example.net.
tld.            7200 IN    TXT "tld DNSSEC test zone"
tld.            3600 IN    NSEC3PARAM 1 0 5 DEADBEAFDEADBEAF

Een compleet voorbeeld is bijvoorbeeld:

ldns-gen-zone -a 2000000 -p 50 -s ./zonefile.txt > out.txt
named-compilezone -i none -s relative -o result.txt tld ./out.txt

Waarbij we de 'named-compilezone' utility van BIND gebruiken voor een fraai eindresultaat.

Merk op dat de kunstmatig gegenereerde domeinnamen beginnen met 'xn--', een tekenreeks die normaal alleen gebruikt wordt voor IDN's. Aangezien IDN's niet voorkomen in de .nl-zone, weten we daardoor zeker dat er nooit sprake kan zijn van dubbele domeinnamen.

Met behulp van 'ldns-gen-zone' heeft SIDN vorig jaar diverse tests uitgevoerd op haar DNS-systemen om te zien hoe ze schalen en hoe ze zich gedragen onder extreme omstandigheden. Dat hielp ons bij het bepalen van de impact van de introductie van DNSSEC. Hierbij hebben we samengewerkt met NLnetLabs, die over het onderzoek een rapport hebben gepubliceerd.

De ontwikkelaars van LDNS vonden 'ldns-gen-zone' dermate bruikbaar, dat ze deze hebben toegevoegd aan de toch al imposante verzameling van voorbeeldprogramma's. En dat is natuurlijk leuk nieuws.

LDNS (1.6.10) is te vinden op: http://www.nlnetlabs.nl/projects/ldns/ 

'ldns-gen-zone' staat hier: http://www.nlnetlabs.nl/svn/ldns/tags/release-1.6.10/examples/