Inleiding
Hoewel de eerste types van netwerkinbraakdetectiesystemen teruggaan tot het begin van de jaren 1980, nam het concept van IDS een hoge vlucht toen Martin Roesch zijn gratis en open source IDS-systeem SNORT creëerde. Vanwege het lichtgewicht ontwerp en de flexibele inzetmogelijkheden, groeide het gebruikersbestand van Snort snel in de daaropvolgende jaren (tot 400.000 momenteel).
In 2001 richtte Martin Roesch het bedrijf Sourcefire op (overgenomen door Cisco in 2013) voor een commercieel IDS-product gebaseerd op SNORT. De oorspronkelijke gratis en open-source versie van SNORT bleef echter beschikbaar, en wordt nog steeds veel gebruikt in netwerken over de hele wereld. In de tussentijd hebben enkele concurrenten terrein gewonnen op het gebied van open source IDS, met name Suricata IDS.
Wat zijn de belangrijkste verschillen tussen hen, en wat kunnen we in de toekomst verwachten van SNORT?
Rules
Een IDS-oplossing is slechts zo goed als de beschikbare regels die het kan toepassen op het gemonitorde verkeer. Snort heeft altijd veel steun gehad van de gemeenschap, en dit heeft geleid tot een aanzienlijke regelset, die regelmatig wordt bijgewerkt. De syntax van de regels is vrij eenvoudig, en de programmastructuur maakt het voor iedereen mogelijk om aangepaste regels in hun IDS te implementeren of ze te delen met de gemeenschap.
Een aantal commerciële partijen ontwikkelt ook SNORT-regels, die tegen een maandelijkse of jaarlijkse vergoeding kunnen worden gekocht. Enkele voorbeelden zijn de SO/VRT-regels van Talos (na een maand gratis vrijgegeven) en CrowdStrikes Threat Intelligence Services.
Suricata kan dezelfde regels gebruiken als SNORT. Veel, maar niet alle, VRT regels werken nog steeds. Suricata heeft een eigen regelset, in eerste instantie vrijgegeven aan betalende abonnees, maar na 30 tot 60 dagen vrij beschikbaar: Emerging Threats. Deze Suricata regels maken meer gebruik van de extra mogelijkheden die Suricata te bieden heeft zoals port-agnostic protocol detection en automatic file detection and file extraction.
Application detection
Sinds de begindagen van Snort’s bestaan, is er gezegd dat Snort niet “applicatie-bewust” is. Het kijkt alleen naar verkeer dat overeenkomt met de regels en onderneemt actie (alert, drop enzovoort) als er een overeenkomst is. Pre-processors helpen door het verkeer in een bruikbaar formaat te vormen waarop de regels kunnen worden toegepast: bijvoorbeeld het uitvoeren van decompressie en decodering, maar Snort hoefde niet te begrijpen welke toepassing de gegevens genereerde.
De zakelijke eisen zijn in de loop van de tijd echter veranderd en om zich aan te passen aan de markt, lanceerde Snort OpenAppID in zijn 2.9.7-versie in 2014. OpenAppID maakt de detectie van applicaties mogelijk via zogenaamde Layer 7 Detectors. Hoewel het bestaan van een bekende applicatie niet altijd een direct beveiligingsincident is (het gebruik van Dropbox bijvoorbeeld), zorgt het wel voor een beter inzicht in wat er binnen het netwerk bestaat. Niet alleen kunnen voorheen onbekende toepassingen worden gevonden, maar hun verkeer kan ook worden gedropt of gewaarschuwd door een AppID te koppelen aan een traditionele SNORT IDS/IPS regel.
Suricata werkt iets anders in deze ruimte. Het ondersteunt Application-Layer detectie regels en kan, bijvoorbeeld, HTTP of SSH verkeer op niet-standaard poorten identificeren op basis van protocollen. Het zal dan ook protocol-specifieke log instellingen toepassen op deze detecties.
Er is niet echt een beter of slechter product in deze ruimte, het hangt echt af van wat het bedrijf zoekt, en welk systeem het beste de gaten in de detectie vult. Omdat beide volledig open-source zijn, is het opzetten van een testomgeving relatief snel en goedkoop.
Multithreading
Eén van de belangrijkste voordelen van Suricata is dat het veel recenter is ontwikkeld dan Snort. Dit betekent dat het veel meer mogelijkheden aan boord heeft die tegenwoordig bijna niet meer te missen zijn. Een van die mogelijkheden is ondersteuning voor multithreading.
De toename van het netwerkverkeer door de jaren heen is op de voet gevolgd door de verwerkingseisen aan IDS apparaten (gemeten in packets per seconde). Gelukkig ondersteunt Suricata multithreading out of the box. Snort daarentegen ondersteunt geen multithreading. Het maakt niet uit hoeveel cores een CPU heeft, slechts een enkele core of thread zal door Snort worden gebruikt.
Er is een tamelijk gecompliceerde workaround: het draaien van meerdere SNORT single thread instances, die allemaal in hetzelfde logboek worden gevoed. De extra overhead om dit proces te beheren (AutoFP) en de hoge kosten van hardware betekenen echter dat deze opzet zelden in productie-omgevingen wordt aangetroffen. SNORT3 zal multithreading ondersteunen, maar het is nog in Alpha fase, draaiend als Snort++. Het is natuurlijk niet aan te raden om een Alpha-fase product in een productieomgeving te gebruiken. Multithreading is ongetwijfeld een sterk argument om Suricata te overwegen boven Snort.
Bestandsextractie
Suricata ondersteunt bestandsextractie. Dit is een ongelooflijk handige functie die de automatische extractie van geselecteerde bestanden mogelijk maakt zodra een regel met de optie “filestore” wordt getriggerd. Het is bijvoorbeeld mogelijk om alle .pdf bestanden of alle single-pixel .png bestanden te extraheren en ze op te slaan in een voorgeconfigureerde map voor verdere handmatige analyse, VirusTotal lookups of zelfs geautomatiseerde sandboxing.
Alternatieven
Hoewel Snort en Suricata zeker de meest populaire open-source intrusion detection systemen zijn, zijn er enkele alternatieven. De eerder genoemde bijgewerkte SNORT3 versie ziet er veelbelovend uit, met zijn ondersteuning voor multithreading, service identificatie en een meer eenvoudige regeltaal. Deze is al vele jaren in ontwikkeling. Het Alpha stadium gaat echter terug tot 2014, en een release datum voor een productie versie is nog niet vastgesteld.
Er zijn ook alternatieven voor de traditionele IDS/IPS oplossingen, maar die kunnen soms net iets anders werken. De Bro Network Security Monitor (nu bekend als Zeek), bijvoorbeeld, is meer een anomaliedetectiesysteem. Waar Snort en Suricata werken met traditionele IDS-handtekeningen, maakt Bro/Zeek gebruik van scripts om verkeer te analyseren.
Een belangrijk voordeel van Bro/Zeek is dat deze scripts ook sterk geautomatiseerde workflows tussen verschillende systemen mogelijk maken, een aanpak die beslissingen mogelijk maakt die veel granulairder zijn dan de oude pass or drop acties. De configuratie ervan kan echter behoorlijk ingewikkeld worden.
Conclusie
Er zijn diverse goede open-source IDS-opties op de markt. Vanwege hun verschillen zullen echter niet alle oplossingen voor elke omgeving werken. De selectie van de beste producten moet worden gebaseerd op welke andere, mogelijk overlappende beveiligingsproducten er al zijn, welk type verkeer het netwerk doorkruist, de hoeveelheid verkeer en de vaardigheden van het beschikbare IT-personeel.