DNS big data bij SIDN Labs

Bij SIDN Labs zetten we big data in om het internet in Nederland en daarbuiten veiliger te maken. In deze post geef ik graag een globaal overzicht van hoe we dit doen. In volgende post(s) ga ik er dieper in op de (technische) details.

SIDN Labs maakt ENTRADA open source

SIDN wil bijdragen aan het creëren van een veilig en stabiel internet. Er bestaan verschillende vormen van misbruik van het internet. Waar bij een vorm van internetmisbruik gebruik gemaakt wordt van het DNS, is het voor ons mogelijk om dit te herkennen aan de DNS-query’s die we ontvangen op onze .nl-nameservers.

Op onze autoritatieve nameservers komen per dag zo’n 1,3 miljard DNS-query’s voorbij. Het merendeel deze query’s wordt gevormd door normale query’s die vragen wat het IP-adres is van een bepaalde domeinnaam, zoals www.sidn.nl. Deze query’s zijn bijvoorbeeld afkomstig van een webbrowser of mailserver en heel legitiem. Er zijn echter ook query’s die afkomstig zijn van botnetclients of andere malware. Deze ‘malware clients’ proberen via DNS te communiceren om bijvoorbeeld contact te maken met de botnet command & control server. Phishing is ook een goed voorbeeld van misbruik van domeinnamen. Herkennen van dit misbruik is in veel gevallen niet eenvoudig, dit wordt mede veroorzaakt door de complexiteit van het DNS. Het DNS bestaat uit een gedistribueerde database waarbij elke autoritatieve nameserver DNS-query’s ontvangt van gebruikers. Deze query’s worden verdeeld over de beschikbare nameservers. Dit maakt analyse van DNS-data moeilijker, omdat voor een compleet beeld de data van alle nameservers nodig is. Caching van antwoorden speelt ook een belangrijke rol in het functioneren van het DNS. Een DNS-resolver cached (bewaard) de antwoorden van de autoritatieve nameserver voor een bepaalde periode. Binnen deze periode wordt een tweede identieke query aan dezelfde resolver, door deze resolver zelf beantwoord. De query wordt dan niet doorgestuurd naar de autoritatieve nameserver. De query’s van alle nameservers opslaan en analyseren is een technische uitdaging waar we nu aan werken. Het cachingprobleem is iets waar we op dit moment nog geen praktische oplossing voor hebben.

ENTRADA

Sinds 2013 werken we bij SIDN Labs aan een ‘big data’ platform met de naam ENTRADA (ENhanced Top-level domain Resilience through Advanced Data Analysis). Het belangrijkste doel van het ENTRADA-platform is om er nieuwe diensten en applicaties mee te ontwikkelen waarmee we de veiligheid en stabiliteit van .nl verder vergroten. ENTRADA is een platform waarmee de DNS-querydata bewaard en geanalyseerd kan worden en is sinds april 2014 actief voor één van de .nl-nameservers. We willen op termijn meer nameservers aansluiten zodat we een beter beeld van het DNS-verkeer krijgen. Met behulp van ENTRADA willen we methodes ontwikkelen waarmee we kwaadaardig gebruik van het DNS automatisch kunnen herkennen. Daarna kunnen we acties ondernemen om dit specifieke gebruik te minimaliseren.Figuur 1 toont de workflow  vanaf het ontvangen van de query op de nameserver tot en met het doorzoeken van de querydata. De DNS-querydata van een .nl-nameserver slaan we op in PCAP-formaat. PCAP is een bekend formaat voor de opslag van netwerkdata. Deze PCAP-bestanden gaan vervolgens periodiek naar een centrale staging server voor verdere verwerking. We hebben een PCAP-decoder ontwikkeld waarmee we de PCAP-data kunnen verrijken en omzetten in een ander formaat. De decoder analyseert de DNS-query’s in het PCAP-bestand en voegt metadata toe, zoals het AS-nummer en de geo-locatie (landniveau) van het IP-adres van de afzender. Niet alle data uit het antwoord op een DNS-query is interessant genoeg om te bewaren. De decoder bevat een filter waarmee we het minder interessante deel van het query verwijderen.De decoder maakt gebruikt van het open source kolom georiënteerd Parquet-formaat om het eindresultaat op te slaan. Een importscript verstuurd de Parquet-bestanden naar het Hadoop-cluster, waar ze in HDFS worden opgeslagen. Een data-analist kan nu met behulp van Impala de querydata doorzoeken. We voorzien ook toepassingen die een real-time analyse op de binnenkomende query’s willen uitvoeren. De querydata kunnen we daarvoor in een queue opslaan voor verdere analyse door slimme algoritmes. Figuur 1: workflow voor botnetdetectie.

Het ENTRADA-platform gebruiken we nu om ongeveer 10% van de DNS-querydata op te slaan. De database bevat op dit moment al meer dan  36 miljard query’s over een periode van acht maanden.

Privacy

Bij het verzamelen van grote hoeveelheden gegevens is een duidelijk privacybeleid belangrijk. SIDN Labs heeft daarom een privacyraamwerk ontwikkeld voor de ENTRADA-toepassingen. De reden hiervoor is dat elke DNS query het IP-adres van de afzender bevat dat in sommige situaties te herleiden is tot een individuele gebruiker. Als dat het geval is, dan is er volgens de Wet bescherming persoonsgegevens (Wbp) sprake van een persoonsgegeven. Het DNS is echter zo ontworpen dat DNS-resolvers een laag creëren tussen de DNS-client die de query verstuurd en de autoritatieve .nl-nameserver van SIDN die een antwoord op de query geeft. Deze tussenlaag maskeert zo de gebruiker door de query door te sturen naar een .nl-nameserver met als afzender het IP-adres van de resolver en niet het IP-adres van de client. DNS-resolvers maken daarnaast ook gebruik van cachingmechanismes om overbodige query’s te voorkomen. Hierdoor komt maar een fractie van alle .nl-query’s uiteindelijk bij SIDN uit. Onze metingen suggereren dat ongeveer 99,6% van alle query’s via resolvers van internetserviceproviders wordt verstuurd. Dit hebben we bepaald door de hoeveelheid verkeer van de grotere resolvers te aggregeren. De aanname is dat een resolver met vele miljoenen query’s per maand geen privéresolver is. De data in onze onderzoeksdatabase wordt na achttien maanden geanonimiseerd door de IP-adressen te verwijderen. Meer informatie over ons privacybeleid.

Bouwstenen

Bij de start van het ENTRADA-project hebben we veel onderzoek gedaan naar de mogelijke technologie om het platform mee te ontwikkelen. Onze belangrijkste requirements zijn:

Goede (realtime) performance

De verwachting is dat de database op termijn tientallen of zelfs honderden miljarden DNS query’s zal gaan bevatten. Het moet mogelijk zijn om deze data te analyseren zonder dat er uren of dagen op een antwoord gewacht moet worden.

Schaalbaarheid

De capaciteit van het platform moet eenvoudig kunnen worden uitgebreid door het bijplaatsen van meer servers.

Fouttolerantie/redundantie

Hardware kan en zal een keer stuk gaan, dit mag geen negatieve gevolgen hebben voor de beschikbaarheid van het systeem. Data mag door het uitvallen van hardware niet verloren gaan.

SQL-compatibiliteit

SQL is voor ons belangrijk, omdat we er als organisatie veel kennis en ervaring mee hebben. Hiermee verlagen we de drempel van een toekomstige overgang voor ENTRADA-toepassingen van SIDN Labs (R&D) naar productie. SQL maakt het eenvoudig voor niet-programmeurs om toch relatief snel met de Hadoop-database te kunnen werken.

Integratie met andere query-engines

Nieuwe machine learning of realtime toepassingen moeten gebruik kunnen maken van de opgeslagen data.Wij hebben de volgende alternatieven overwogen en geëvalueerd.

We hebben verschillende prototypes ontwikkeld en getest om te zien of deze voldeden aan onze requirements. Een combinatie van Hadoop HDFS, Parquet en Impala combineert het beste van de drie verschillende technologieën en voldoet aan al onze eisen. Deze combinatie hebben we daarom gekozen als basis voor het ENTRADA-platform. Apache Hadoop HDFS biedt een bewezen robuust en horizontaal schaalbaar bestandssysteem. Apache Parquet is een relatief nieuw opslagformaat maar bied efficiënte opslagmogelijkheden en is geschikt voor high performance analyse. Cloudera Impala is een real-time SQL engine met ondersteuning voor het Parquet-opslagformaat. Omdat de Parquet-bestanden op HDFS worden opgeslagen zijn deze ook te gebruiken met andere query engines zoals Apache Spark.In de volgende blogposts gaan we dieper in op de technologie, onderzoek en toepassingen van het ENTRADA-platform.

Lees meer over het werk van SIDN Labs op www.sidnlabs.nl.