Netflow is een efficiënte en effectieve manier om netwerkverkeer te monitoren, zowel voor de netwerkbeheerders als voor de securityspecialisten. NfSen is een flexibele open source tool, die geschikt is voor zowel grote als kleinere netwerken. 

Netflow geeft inzicht in de communicatiestroom. Het bevat geen gebruikersdata, maar logt uitsluitend de metadata van het IP-verkeer, zoals het bronadres en -poort, bestemmingsadres en -poort, protocol en het aantal getransporteerde bytes. Dit betekent dat de netflow logging relatief compact is. De netflow-log van een transport van een paar bytes neemt vrijwel evenveel ruimte in als de log van het transport van een complete DVD. Netflow is een door Cisco is ontwikkeld protocol voor het verzamelen van gegevens op het moment dat IP-verkeer een interface in- of uitgaat. Een typische netflow configuratie bestaat uit drie componenten: een flow exportelement, een flow collector en een analyse-applicatie. Het flow exportelement aggregeert de netwerkpakketten in netflows en exporteert deze flows naar één of meer flow collectors. Het flow collector element ontvangt de flow van één of meerdere flow exportelementen en zorgt voor de opslag en pre-processing van deze flows. De analyse applicatie geeft de gebruiker mogelijkheden om inzicht in het verkeer te krijgen en anomalieën op te sporen.

De meest gebruikte vorm van flow exportelementen vormen routers en sensors, die zijn aangesloten op de mirrorpoort van switches. Het gaat hierbij om enterprise apparatuur. Simpele en goedkope switches en routers voor thuisgebruik bieden over het algemeen geen opties hiervoor. Daarnaast zijn er applicaties die deze functie vervullen. Sommige systeembeheerders plaatsen zo’n applicatie op hun kritische servers. Daarmee monitoren zij het verkeer naar deze systemen en laten alerts genereren om bij bepaalde calamiteiten snel te kunnen handelen.

In dit artikel kijken wij naar de combinatie van NfSen en nfdump. Dit is een bewezen open source netflow oplossing, die beschikbaar is onder de BSD-licentie en breed inzetbaar is. Het wordt dagelijks gebruikt voor monitoring door beheerders, SOC-teams van (grote) internetproviders en beheerders van datacenters. Het vormt een nuttige aanvulling in het netwerk van je organisatie of in je thuisnetwerk, om zo een oogje in het zeil te houden.

 

NFdump

Nfdump is een netflow collector, geschreven in C en is erg snel. Het gaat hierbij om een suite bestaande uit meerdere tools, zoals nfcapd, nfdump en nfprofile. Nfcapd zorgt voor het opslaan van de netflow data in time-slice bestanden, bijvoorbeeld per vijf minuten een bestand. Je kunt hierop met nfdump krachtige queries maken.

In de standaard configuratie wordt elke vijf minuten een bestand gemaakt. Je krijgt dan dus 288 bestanden per dag. Wanneer je meerdere netflow bronnen hebt (netflow exportelementen), zoals meerdere switches of routers, of meerdere servers die netflow data naar de nfdump machine sturen, dan wordt per bron per time-slice een bestand aangemaakt. De aangemaakte bestanden zijn binaire bestanden. De naam van het bestand bevat de datum en starttijd. Bijvoorbeeld nfcapd.201708121725 bevat de logging van het time-slice, dat om 17:25 uur op 12 augustus 2017 startte. Om deze bestanden te lezen, gebruik je nfdump. Via de commandline doe je een query met de gewenste parameters, bijvoorbeeld “nfdump -r nfcapd.201708121725 -s srcip/bytes”. Deze query vraagt de top 10 source-adressen op met de meeste bytes verkeer.

 

NfSen

NfSen geeft een visueel overzicht van het netwerkverkeer, waarmee je gemakkelijk door de netflow data navigeert. Je krijgt een overzicht van de laatste dag, week, maand en jaar. NfSen biedt drill-down vanaf de grafische weergave naar een meer gedetailleerd beeld tot en met de specifieke flows. Je kunt profielen maken om specifieke netwerken, hosts of gebeurtenissen te monitoren. Verder maak je met NfSen allerlei “top-n”-statistieken, zoals flows met meeste packages, flows met het meeste verkeer, hosts met het meeste verkeer, enzovoorts. Je stelt je vragen meestal via een paar muisklikken samen. Op basis hiervan stelt NfSen een query op, die het vervolgens naar nfdump doorstuurt en vervolgens de resultaten toont in de browser. Je kunt krachtige queries maken door naast de paar muisklikken extra filters in te typen, en zo informatie opvragen over bijvoorbeeld een specifieke host, een specifieke port, UDP- of TCP-verkeer, een specifieke flow, of een combinatie hiervan.

NfSen biedt de mogelijkheid om profielen aan te maken. Een profiel is een specifieke view op de netflow data op basis van nfdump filters. Het profiel betreft zowel de grafisch weergegeven data als de tekstregels met detailgegevens.

NfSen is een grafische schil om nfdump en is geschreven in PHP (front-end) en Perl PHP (back-end). De monitoring en waarschuwingen van NfSen kunnen worden uitgebreid met plugins, bijvoorbeeld om bepaalde botnet-masters te tracken en hiervan notificaties te versturen, porten te tracken, enzovoorts. De plug-ins voor de back-end bestaan uit Perl-modules, die automatisch in een bepaald interval (bijvoorbeeld elke vijf minuten) worden aangeroepen, De plug-ins voor de front-end bestaan uit PHP-modules, die een eigen tab bovenin de NfSen-pagina krijgen.

De grafieken die NfSen biedt, zijn van grote meerwaarde. Computersystemen zijn prima geschikt voor het omgaan met grote bestanden met log-informatie, maar voor mensen is dit minder handig. Juist wanneer je op zoek bent naar opvallende of afwijkende patronen, is een grafische weergave heel geschikt. Vaak zie je in één oogopslag waar zich rare dingen bevinden. Nfdump kan heel krachtige queries op de netflow data uitvoeren en NfSen helpt je om met een paar muisklikken deze queries samen te stellen.

 

Grafieken

De openingspagina van NfSen toont vier rijen met steeds drie grafieken. De bovenste rij bevat de grafieken van de huidige dag, de tweede rij van de huidige week, de derde van de huidige maand en de vierde van het huidige jaar. Per rij zie je drie grafieken, met respectievelijk de weergave van flows, packets en bytes. Elke bron krijgt zijn eigen kleur. Wanneer je op een grafiek klikt, ga je naar de betreffende detailpagina. Je krijgt dezelfde grafiek nu groter te zien, met daarop een slider. Sleep deze naar links of rechts om een bepaalde time-slice te selecteren. Zodra je de muis loslaat, wordt het scherm ververst en toont het de data van de betreffende tijd. Je ziet bijvoorbeeld de begin- en eindtijd van het slice en per bron de meta-data, zoals het aantal flows en aantal packets per seconde. Hieronder staat een query scherm, wanneer je op de proces-button klikt. Er wordt dan een query getoond met betrekking tot het betreffende slice via nfdump, met een aantal regels query-output. Klik je in één van deze regels op een IP-adres, dan wordt een venster geopend met daarin de whois informatie van het betreffende adres 

Behalve een enkele time-slice kun je ook een bepaalde periode kiezen. In dat geval heb je twee sliders. De linker slider sleep je naar het start-moment en de rechter naar het eind-moment van de gewenste periode. Nadat het scherm ververst is, krijg je de data van deze periode te zien. Wanneer je nu queries uitvoert, hebben deze steeds betrekking op de geselecteerde periode.

In de tekst-area “Filter” kun je aanvullende filters intypen, om daarmee een meer doelgerichte query te genereren. Hier kun je bijvoorbeeld “host 192.168.1.10” opgeven, waardoor de query zich beperkt tot verkeer van en naar die host.

Via het tabblad “Alerts” kun je filters instellen om je in bepaalde situaties te waarschuwen. Deze waarschuwingen worden per e-mail verzonden.

 

Raspberry Pi

Op een Linux-machine kun je fprobe gebruiken om netflow exports te generen en naar nfdump te sturen. Dit kun je bijvoorbeeld op je kritische servers installeren, waardoor je met NfSen het verkeer van en naar die servers kunt monitoren. Wij gingen op zoek naar een oplossing om met fprobe het netwerkverkeer van het thuisnetwerk te monitoren. Een Linux-pc met drie netwerkinterfaces – twee om een bridge te vormen waar het te monitoren verkeer doorheen gaat en één om de data te verzenden – is een mogelijkheid, maar wij zochten een energiezuinigere oplossing.

Op zolder vonden wij nog een ouderwetse hub. Het verschil tussen een hub en een switch is, dat een hub het binnenkomende verkeer, ongeacht het bestemmingsadres, naar alle aangesloten systemen doorstuurt, terwijl een switch het verkeer alleen naar die port stuurt, waarop de ontvanger met het betreffende bestemmingsadres is aangesloten. De hub werkt niet met hoge netwerksnelheden, maar omdat onze ADSL-verbinding maximaal 8 mbps aan kan, vormt dat geen probleem. Wij sluiten de belangrijkste verbindingen op de hub aan, zoals bijvoorbeeld het WiFi accesspoint en een aantal servers en gebruiken een Raspberry Pi als fprobe machine. De Raspberry Pi draait Raspbian Jessie. Hierop installeren we fprobe eenvoudig via: apt-get install fprobe. Om te voorkomen dat de vele schrijfacties van de nfcapd logfiles de SD-card snel laten slijten, gebruiken we een ander systeem om daarop nfdump en NfSen te installeren.

De netwerkinterface die fprobe gebruikt, komt automatisch in promiscuous mode te staan. Hierdoor kan deze al het verkeer dat voorbij komt zien, ongeacht het bestemmingsadres van dat verkeer. Dit betekent echter dat we nog een tweede netwerkinterface moeten hebben om de netflow data naar de machine te sturen, die nfdump draait. Een Raspberry Pi heeft maar één netwerkinterface, dus moeten we eerst een tweede toevoegen. Hiervoor gebruiken we een verloopkabel van USB naar UTP. Wanneer we deze op de hub aansluiten en de vaste, ingebouwde netwerkinterface van de Raspberry Pi voor het verzenden van de data naar de nfdump-machine gebruiken, blijkt dat dit geen stabiele oplossing oplevert. Na enige tijd komt er geen verkeer meer binnen via de verloopkabel. Wanneer we het andersom aansluiten, dan werkt het echter prima. Wij hebben dus de vaste, ingebouwde netwerkinterface van de Raspberry Pi op de hub aangesloten en laten fprobe hiernaar kijken. Tegelijkertijd is de UTP-poort van de verloopkabel met de switch verbonden, waar ook de nfdump machine mee verbonden is. De Raspberry Pi draait inmiddels enkele maanden storingsvrij in deze configuratie, dus dit lijkt wel een stabiele oplossing te zijn.

Wij verwerken de netflow data op een LXC Linux container waarop Debian Jessie draait. Hierop installeren wij nfdump en NfSen. Deze zijn te downloaden vanaf www.sourceforge.net en moet je daarna handmatig installeren. NfSen vereist een webserver met PHP. Wij kozen voor lighttpd als webserver, maar Apache of NGINX kan natuurlijk ook.

 

Privacy

Zodra je met netflow logging aan de gang gaat, krijg je te maken met privacy-aspecten. Wanneer je deze tools in het netwerk van een organisatie gaat inzetten, dien je dit vooraf af te stemmen met de leiding van de organisatie. Ook in het thuisnetwerk zul je verantwoord en op een respectvolle manier met deze tools moeten omgaan. Het is netjes om de gebruikers vooraf te informeren dat het verkeer gelogd wordt.

 

Conclusie

We hebben hier lang niet alle mogelijkheden besproken en slechts een tipje van de sluier opgelicht. De combinatie nfdump/NfSen geeft je goede en flexibele tools om netflow data te verwerken en te analyseren. Je kunt dit bijvoorbeeld gebruiken voor netwerk monitoring, incident afhandeling en allerlei soorten tracking. Deze tools zijn open source, waardoor je desgewenst zelf uitbreidingen in de vorm van plug-ins kunt maken. Op www.sourceforge.net vind je hiervoor een uitgebreide handleiding.