Introduktion
Och även om tidiga typer av intrångsdetekteringssystem för nätverk går tillbaka ända till början av 1980-talet, så tog konceptet IDS fart när Martin Roesch skapade sitt IDS-system SNORT, som är gratis och med öppen källkod. På grund av sin lätta konstruktion och sina flexibla installationsalternativ växte Snorts användarbas snabbt under de följande åren (upp till 400 000 för närvarande).
År 2001 grundade Martin Roesch företaget Sourcefire (förvärvat av Cisco 2013) för en kommersiell IDS-produkt baserad på SNORT. Den ursprungliga versionen av SNORT med fri och öppen källkod förblev dock tillgänglig och används fortfarande i stor utsträckning i nätverk över hela världen. Under tiden har några konkurrenter vunnit mark inom området för IDS med öppen källkod, framför allt Suricata IDS.
Vad är de viktigaste skillnaderna mellan dem och vad kan vi förvänta oss av SNORT i framtiden?
Regler
En IDS-lösning är bara så bra som de tillgängliga regler den kan tillämpa på den övervakade trafiken. Snort har alltid haft mycket stöd från samhället och detta har lett till en omfattande regeluppsättning som uppdateras regelbundet. Syntaxen för reglerna är ganska enkel, och programstrukturen gör det möjligt för vem som helst att införa anpassade regler i sitt IDS eller dela dem med gemenskapen.
En del kommersiella parter utvecklar också SNORT-regler som kan köpas för en månads- eller årsavgift. Några exempel är Talos SO/VRT-regler (släpps gratis efter en månad) och CrowdStrikes Threat Intelligence Services.
Suricata kan använda samma regler som SNORT. Många, men inte alla, VRT-regler fungerar fortfarande. Suricata har en egen regeluppsättning, som först släpps till betalande prenumeranter men som är fritt tillgänglig efter 30 till 60 dagar: Nya hot. Dessa Suricata-regler utnyttjar mer de ytterligare funktioner som Suricata har att erbjuda, t.ex. portagnostisk protokolldetektering och automatisk fildetektering och filutvinning.
Applicationsdetektering
Sedan Snorts tidiga dagar har det sagts att Snort inte är ”applikationsmedvetet”. Den tittar helt enkelt på trafik som matchar dess regler och vidtar en åtgärd (varning, borttagning och så vidare) när det finns en matchning. Förprocessorer hjälper till genom att forma trafiken till ett användbart format som reglerna kan tillämpas på: till exempel genom att utföra dekomprimering och avkodning, men Snort behövde inte förstå vilken applikation som genererade data.
Företagens krav har dock ändrats med tiden och för att anpassa sig till marknaden lanserade Snort OpenAppID i sin version 2.9.7 år 2014. OpenAppID gör det möjligt att upptäcka applikationer via så kallade Layer 7 Detectors. Även om förekomsten av ett känt program inte alltid är en direkt säkerhetsincident (användningen av Dropbox till exempel), ger det en bättre förståelse för vad som finns i nätverket. Det är inte bara tidigare okända program som kan hittas, utan deras trafik kan också avbrytas eller varnas för genom att koppla ett AppID till en traditionell SNORT IDS/IPS-regel.
Suricata fungerar något annorlunda i det här området. Den har stöd för detekteringsregler på applikationsnivå och kan t.ex. identifiera HTTP- eller SSH-trafik på icke-standardiserade portar baserat på protokoll. Den kommer också att tillämpa protokollspecifika logginställningar på dessa upptäckter.
Det finns egentligen ingen bättre eller sämre produkt inom detta område, det beror verkligen på vad företaget letar efter och vilket system som bäst fyller luckorna i upptäckten. Eftersom båda är helt öppen källkod är det relativt snabbt och billigt att sätta upp en testmiljö.
Multithreading
En av de största fördelarna med Suricata är att den utvecklades mycket senare än Snort. Detta innebär att den har många fler funktioner ombord som är praktiskt taget omöjliga att missa nuförtiden. En av dessa funktioner är stöd för multithreading.
Ökningen av nätverkstrafiken under årens lopp har följts noga av behandlingskraven på IDS-enheter (mätt i paket per sekund). Lyckligtvis har Suricata stöd för multitrådning redan från början. Snort har dock inte stöd för multitrådning. Oavsett hur många kärnor en CPU har, kommer endast en enda kärna eller tråd att användas av Snort.
Det finns en ganska komplicerad lösning: att köra flera SNORT-instanser med en enda tråd, som alla matar till samma logg. De extra omkostnaderna för att hantera denna process (AutoFP) och den höga hårdvarukostnaden gör dock att denna inställning sällan återfinns i produktionsmiljöer. SNORT3 kommer att ha stöd för multitrådning, men det är fortfarande i Alpha-stadiet och körs som Snort++. Det rekommenderas naturligtvis inte att använda en produkt i alfastadiet i en produktionsmiljö. Multitrådning är utan tvekan ett starkt argument för att överväga Suricata framför Snort.
Filutvinning
Suricata stöder filutvinning. Detta är en otroligt användbar funktion som gör det möjligt att automatiskt extrahera valda filer när en regel som innehåller alternativet ”filestore” utlöses. Det är till exempel möjligt att extrahera alla .pdf-filer eller alla single-pixel .png-filer och lagra dem i en förkonfigurerad mapp för vidare manuell analys, VirusTotal-sökningar eller till och med automatiserad sandboxing.
Alternativ
Men även om Snort och Suricata säkerligen är de populäraste systemen för intrångsdetektering med öppen källkod finns det några alternativ. Den tidigare nämnda uppdaterade SNORT3-versionen ser mycket lovande ut, med sitt stöd för multitrådning, tjänsteidentifiering och ett mer okomplicerat regelspråk. Detta har varit under utveckling i många år. Alpha-stadiet går dock tillbaka till 2014, och ett lanseringsdatum för en produktionsversion har ännu inte fastställts.
Det finns också alternativ till de traditionella IDS/IPS-lösningarna, men dessa kan ibland fungera något annorlunda. Bro Network Security Monitor (numera känt som Zeek) är till exempel mer ett system för anomalidetektion. Medan Snort och Suricata arbetar med traditionella IDS-signaturer använder Bro/Zeek skript för att analysera trafiken.
En betydande fördel med Bro/Zeek är att dessa skript också möjliggör mycket automatiserade arbetsflöden mellan olika system, ett tillvägagångssätt som gör det möjligt att fatta beslut som är mycket mer granulära än de gamla ”pass or drop”-åtgärderna. Dess konfiguration kan dock bli ganska komplicerad.
Slutsats
Det finns flera bra IDS-alternativ med öppen källkod. På grund av deras olikheter kommer dock inte alla lösningar att fungera i alla miljöer. Valet av de bästa produkterna bör baseras på vilka andra, potentiellt överlappande, säkerhetsprodukter som redan finns på plats, vilken typ av trafik som passerar nätverket, trafikmängden och kompetensen hos den tillgängliga IT-personalen.