Indledning
Selv om de tidlige typer af Network Intrusion Detection Systems går helt tilbage til begyndelsen af 1980’erne, så tog IDS-konceptet fart, da Martin Roesch skabte sit gratis og open source IDS-system SNORT. På grund af dets lette design og dets fleksible implementeringsmuligheder voksede Snorts brugerbase hurtigt i de følgende år (op til 400.000 i øjeblikket).
I 2001 grundlagde Martin Roesch virksomheden Sourcefire (overtaget af Cisco i 2013) for et kommercielt IDS-produkt baseret på SNORT. Den oprindelige gratis og open source-version af SNORT forblev dog tilgængelig og anvendes stadig i vid udstrækning i netværk over hele verden. I mellemtiden har nogle konkurrenter vundet terræn inden for open source IDS, først og fremmest Suricata IDS.
Hvad er de vigtigste forskelle mellem dem, og hvad kan vi forvente i fremtiden fra SNORT?
Regler
En IDS-løsning er kun så god som de tilgængelige regler, den kan anvende på den overvågede trafik. Snort har altid haft stor støtte fra fællesskabet, og det har ført til et omfattende regelsæt, der opdateres regelmæssigt. Syntaksen for reglerne er ganske enkel, og programstrukturen gør det muligt for enhver at implementere tilpassede regler i sit IDS eller dele dem med fællesskabet.
En del kommercielle parter udvikler også SNORT-regler, som kan købes for et månedligt eller årligt gebyr. Nogle eksempler er Talos’ SO/VRT-regler (frigives gratis efter en måned) og CrowdStrikes Threat Intelligence Services.
Suricata kan bruge de samme regler som SNORT. Mange, men ikke alle VRT-regler fungerer stadig. Suricata har sit eget regelsæt, som i første omgang er frigivet til betalende abonnenter, men som er frit tilgængeligt efter 30 til 60 dage: Emerging Threats. Disse Suricata-regler gør mere brug af de ekstra funktioner, som Suricata har at tilbyde, f.eks. portagnostisk protokoldetektion og automatisk fildetektion og filudtrækning.
Applikationsdetektion
Siden de tidlige dage af Snorts eksistens har det været sagt, at Snort ikke er “applikationsbevidst”. Den ser blot på trafik, der matcher dens regler, og foretager en handling (alarm, drop osv.), når der er et match. Pre-processorer hjælper ved at forme trafikken til et brugbart format, som reglerne kan anvendes på: f.eks. ved at udføre dekomprimering og afkodning, men der var ikke behov for, at Snort forstod, hvilken applikation der genererede dataene.
Businesskrav har dog ændret sig med tiden, og for at tilpasse sig markedet lancerede Snort OpenAppID i sin version 2.9.7 i 2014. OpenAppID gør det muligt at detektere applikationer via såkaldte Layer 7 Detectors. Selv om eksistensen af et kendt program ikke altid er en direkte sikkerhedshændelse (f.eks. brugen af Dropbox), giver det en bedre forståelse af, hvad der findes i netværket. Ikke alene kan tidligere ukendte applikationer findes, men deres trafik kan også droppes eller advares mod dem ved at knytte et AppID til en traditionel SNORT IDS/IPS-regel.
Suricata arbejder lidt anderledes på dette område. Den understøtter Application-Layer-detektionsregler og kan f.eks. identificere HTTP- eller SSH-trafik på ikke-standardiserede porte baseret på protokoller. Den vil også anvende protokolspecifikke logindstillinger på disse registreringer.
Der er ikke rigtig noget bedre eller dårligere produkt på dette område, det afhænger i virkeligheden af, hvad virksomheden er på udkig efter, og hvilket system der bedst udfylder hullerne i registreringen. Da begge er fuldt ud open source, er det relativt hurtigt og billigt at opsætte et testmiljø.
Multithreading
En af de største fordele ved Suricata er, at det er udviklet meget nyere end Snort. Det betyder, at den har mange flere funktioner om bord, som er stort set uundværlige i dag. En af disse funktioner er understøttelse af multithreading.
Stigningen i netværkstrafikken i årenes løb er blevet fulgt tæt af behandlingskravene til IDS-enheder (målt i pakker pr. sekund). Heldigvis understøtter Suricata multithreading out of the box. Snort understøtter imidlertid ikke multithreading. Uanset hvor mange kerner en CPU indeholder, vil kun en enkelt kerne eller tråd blive brugt af Snort.
Der findes en ret kompliceret løsning: Kør flere SNORT single thread-instanser, der alle fodrer den samme log. De ekstra overheads til at administrere denne proces (AutoFP) og de høje omkostninger til hardware betyder dog, at denne opsætning sjældent findes i produktionsmiljøer. SNORT3 vil understøtte multithreading, men det er stadig på Alpha-stadiet og kører som Snort++. Det tilrådes naturligvis ikke at bruge et produkt på Alpha-stadiet i et produktionsmiljø. Multithreading er utvivlsomt et stærkt argument for at overveje Suricata frem for Snort.
Filudtrækning
Suricata understøtter filudtrækning. Dette er en utrolig nyttig funktion, der gør det muligt at foretage automatisk udtrækning af udvalgte filer, når en regel, der indeholder indstillingen “filestore”, udløses. Det er f.eks. muligt at udtrække alle .pdf-filer eller alle enkeltpixel .png-filer og gemme dem i en forudkonfigureret mappe med henblik på yderligere manuel analyse, VirusTotal-opslag eller endog automatiseret sandboxing.
Alternativer
Mens Snort og Suricata helt sikkert er de mest populære open source-indtrængningsdetektionssystemer, er der nogle alternativer. Den tidligere nævnte opdaterede SNORT3-udgave ser meget lovende ud med sin understøttelse af multithreading, serviceidentifikation og et mere overskueligt regelsprog. Dette har været under udvikling i mange år. Alpha-stadiet går dog tilbage til 2014, og der er endnu ikke fastsat en udgivelsesdato for en produktionsversion.
Der findes også alternativer til de traditionelle IDS/IPS-løsninger, men disse kan nogle gange fungere lidt anderledes. Bro Network Security Monitor (nu kendt som Zeek) er f.eks. mere et system til detektering af anomalier. Hvor Snort og Suricata arbejder med traditionelle IDS-signaturer, anvender Bro/Zeek scripts til at analysere trafikken.
En væsentlig fordel ved Bro/Zeek er, at disse scripts også giver mulighed for meget automatiserede arbejdsgange mellem forskellige systemer, en fremgangsmåde, der giver mulighed for beslutninger, der er langt mere granulære end de gamle pass or drop-handlinger. Dens konfiguration kan dog blive ret kompliceret.
Konklusion
Der findes flere gode IDS-muligheder med åben kildekode. På grund af deres forskelle er det dog ikke alle løsninger, der vil fungere i alle miljøer. Valget af de bedste produkter bør baseres på, hvilke andre, potentielt overlappende, sikkerhedsprodukter der allerede er på plads, hvilken type trafik der passerer gennem netværket, mængden af trafik og færdighederne hos det tilgængelige it-personale.