Snort-regels

Downloads

39360.zip

Het schaalbare en efficiënte Snort open-source Network Intrusion Detection System (NIDS) maakt gebruik van een reeks goed gedefinieerde regels om afwijkende pakketten op uw netwerk te detecteren. Het onderhouden van deze regelsets verbetert de effectiviteit van het systeem aanzienlijk. Een paar regel-beheer technieken kunnen u helpen uw Snort IDS te onderhouden. Ten eerste kunt u een overload aan waarschuwingen voorkomen door de definities van variabelen aan te scherpen en uw Snort regels te verzorgen. U kunt ook uw aangepaste regels behouden bij upgrades van uw rule-set. Tenslotte kunt u een regel deconstrueren om te begrijpen hoe u regels kunt aanpassen voor uw omgeving.

Normaal bevat Snort meer dan 1900 standaard regels in een serie van bijna 50 tekst bestanden georganiseerd op type, zoals figuur 1 laat zien. Deze regels definiëren reactie triggers voor vele bekende kwetsbaarheden exploits met betrekking tot Windows, UNIX, en veel gebruikte toepassingen zoals Microsoft IIS, Apache, Microsoft SQL Server, en Oracle SQL. De regels helpen Snort ook bij het verschaffen van verkenningsgegevens en mogelijke configuratie waarschuwingen om u te waarschuwen voor netwerk scans of voor een machine die een SNMP standaard community string uitzendt, bijvoorbeeld. Zoals je je kunt voorstellen, kan Snort een enorm aantal waarschuwingen genereren. Om de ruis van de voorraad regels te verminderen, schakelt de standaard Snort configuratie standaard slechts ongeveer 1300 van de regels in en schakelt standaard hele typen regels uit, zoals beleid, chat, en virus. (Een regeltype is gewoonlijk opgenomen in zijn eigen tekstbestand, dus regels van het type virus zijn opgenomen in het bestand virus.rules). Bekijk alle uitgeschakelde regelgroepen en schakel ze in die op uw omgeving van toepassing kunnen zijn.

Prune Your Rules
Zelfs met de vele regels die Snort standaard uitschakelt, zal uw Snort IDS systeem waarschijnlijk veel waarschuwingen genereren. Het doorworstelen van al deze waarschuwingen kan uw zintuigen afstompen voor echt verdacht verkeer. Nadat u Snort in uw omgeving hebt geïnstalleerd, snoeit u de regels bij om degenen te verwijderen die niet van toepassing zijn op uw omgeving of die u niet interesseren. Bijvoorbeeld, als u niet beschikt over de in HTML ingebedde scripttaal PHP: Hypertext Preprocessor (PHP) in uw omgeving geïnstalleerd hebt, kunt u het web-php.rules bestand uitschakelen. Bij de beslissing welke regels uit te schakelen, dient u echter rekening te houden met gebruikers die mogelijk verschillende software op hun machines hebben staan. Eén van uw Snort sensors zou bijvoorbeeld verdachte pakketten kunnen oppikken van een gecompromitteerde thuismachine over een VPN verbinding. Dus, voortgaand op het vorige voorbeeld, zelfs als u geen PHP geïnstalleerd hebt op één van uw bedrijfscomputers, kan één van uw eindgebruikers het thuis geïnstalleerd hebben. Als die thuiscomputer gecompromitteerd zou worden door een PHP kwetsbaarheid, zou de aanvaller in staat kunnen zijn om toegang te krijgen tot uw bedrijfsnetwerk terwijl de gecompromitteerde computer op afstand is verbonden met het bedrijfsnetwerk (zoals via een VPN).

De meeste waarschuwings- en rapportagesystemen tonen de naam en het SID voor elke regel voor eenvoudige referentie. Om uw lijst van ingeschakelde regels verder in te korten, controleert u uw systemen, noteert u de namen of SID’s van overbodige regels en schakelt u deze regels vervolgens uit. Om handmatig een Snort regel uit te schakelen, open het regel bestand en plaats een pond teken (#) voor de regel. Om een hele klasse van regels uit te schakelen, voeg een pond teken toe voor de regel bestandsnaam in het Snort configuratie bestand. U moet Snort opnieuw starten om de gewijzigde regels te laden.

Herzie uw regels regelmatig en blijf degene die niet van toepassing zijn op uw netwerk elimineren, zal het aantal waarschuwingen dat Snort genereert drastisch verminderen, waardoor het gemakkelijker wordt om echt verdachte pakketten te spotten en te identificeren. En vergeet niet om regels opnieuw in te schakelen wanneer u nieuwe technologie introduceert die momenteel uitgeschakelde regels zouden beschermen.

Regels actueel houden
Snort.org host twee versies van Snort regels: snortrules-stable en snortrules-current, die werken met Snort 2.0x en Snort 1.9x, respectievelijk. De nieuwere regels bevatten extra signatures en updates van bestaande regels om gebruik te maken van uitgebreide variabelen. Bijvoorbeeld, de versie 2.0.0 regels definiëren variabelen die specifiek bepaalde machine functies beschrijven (b.v., de variabelen HTTP_SERVERS en HTTP_PORTS karakteriseren computers die Web services draaien en vatbaar kunnen zijn voor Web service aanvallen). Deze nieuwe variabelen werken in de nieuwe regels om inkomende aanvallen verder te screenen. Een oude regel kan u waarschuwen voor een verdacht HTTP-verzoek dat is bestemd voor elke computer in uw netwerk, maar de nieuwe regel zoekt alleen naar dezelfde aanval wanneer deze is bestemd voor een webserver die is gedefinieerd in de variabele HTTP_SERVERS. Dit classificatieproces helpt valse alarmen te verminderen.

Snort.org werkt de regelsets regelmatig bij om up-to-date te blijven met nieuwe exploit ontdekkingen. Om actueel te blijven, controleer regelmatig of er nieuwe regels zijn die nuttig zijn in uw omgeving, download ze en pas ze toe. Merk echter op dat wanneer je een set nieuwe regels download, de tekst bestanden met de nieuwe regels de bestanden met de oude regels overschrijven. U zult snel merken dat het lastig is om al uw ongebruikte regels uit te commentariëren iedere keer dat u uw regelbestanden update.

Oinkmaster to the Rescue
Gelukkig kunnen verschillende open-source hulpmiddelen u helpen om dit probleem op te lossen. Een Perl script programma genaamd Oinkmaster, dat u kunt downloaden van http://www.algonet.se/~nitzer/oinkmaster, automatiseert het downloaden van nieuwe regels en beheert uitgeschakelde of gewijzigde regels. Op maat gemaakt voor UNIX systemen, gebruikt het Perl script de wget, tar, en gzip tools om nieuwe regels op te halen en uit te breiden wanneer het script draait. De meeste van deze tools worden geïnstalleerd op UNIX systemen, maar je kunt de tools voor Windows downloaden. Onthoud dat open-source oplossingen beperkte toegewijde ondersteuning hebben (als die er al is), dus zoek online naar oplossingen voor eventuele problemen of vragen die je zou kunnen hebben. De open-source software (OSS) gemeenschap barst van de nuttige informatie. Een goede plaats om te beginnen is door u aan te melden voor een van de Snort mailing lijsten, waarvoor u zich kunt aanmelden op http://www.snort.org/lists.html.

Raadpleeg zeker het README bestand voor gedetailleerde installatie instructies voor uw platform. De basis Oinkmaster installatie procedure bestaat uit het uitbreiden van de oinkmaster.pl en oinkmaster.conf bestanden in uw Snort directory (of een directory die u specificeert), dan gebruikt u oinkmaster.conf om Oinkmaster te configureren.

Open oinkmaster.conf en volg de inline commentaar om het gereedschap te configureren. Bevestig eerst de locatie van de bijgewerkte regels als een webadres (b.v. http://www.snort.org/dl/signatures/snortrules.tar.gz). Zorg ervoor dat u Oinkmaster wijst naar een vertrouwde en gerenommeerde site, vooral als u ervoor kiest om de regels automatisch te downloaden en te installeren. Anders loopt u het risico dat u corrupte (of erger nog, vervalste) regels download die uw IDS kunnen compromitteren.

Volgende, specificeer de bestanden die u wilt overslaan, wijzigen, en uitschakelen. Standaard verwerkt Oinkmaster local.rules en snort.conf niet (d.w.z., het slaat ze over).

Met de modifysid functie van het script kunt u nieuw gedownloade regels wijzigen; zie modifysid als een Zoek en Vervang functie voor een specifieke regel die u identificeert met SID. Met dit commando kunt u de tekst van een specifieke regel wijzigen. Je kan modifysid bijvoorbeeld gebruiken om een regel in te schakelen die standaard uitgeschakeld is. Om dit te doen, voeg een nieuw modifysid commando toe dat de regel identificeert die je wil inschakelen en geef de opdracht om het commentaar karakter (#) te verwijderen. Iedere keer dat een nieuwe regel wordt gedownload, zal dit commentaar karakter worden verwijderd wanneer Oinkmaster de regel parseert. U kunt ook modifysid gebruiken om het actietype van een regel te verhogen. Bijvoorbeeld, het commando

modifysid 2003 "alert" | "sev1"

verheft de waarschuwing met een SID van 2003 naar een aangepast actie type van sev1. Oinkmaster doet dit door te zoeken naar “alert” en dit te vervangen door “sev1”. En ja, het zal meerdere vervangingen maken, dus gebruik het met zorg.

De laatste en meest populaire Oinkmaster functie, disablesid, laat je geselecteerde regels uitschakelen. Specificeer de SID’s van alle regels die u uitgeschakeld wilt houden. Om bijvoorbeeld waarschuwingen op netwerk scans uit te schakelen, zou u kunnen beginnen met een regel als

disablesid 469, 615, 618, 620

Na het downloaden en parseren van een nieuwe set regels, zoekt Oinkmaster naar de gespecificeerde SID’s en geeft commentaar bij de regels. Zolang Oinkmaster uw regels beheert, zullen de regels uitgeschakeld blijven, zelfs tijdens regel-set updates.

Handmatig het script uitvoeren wanneer u uw regels wilt bijwerken. Als u het aandurft, kunt u het script inplannen om de regels regelmatig bij te werken. Oinkmaster haalt de regels op, breidt ze uit, en kopieert ze naar de regels-directory van uw sensor. Zoals met de meeste OSS, gebruik Oinkmaster met discretie en leer eerst wat het doet en hoe het uw omgeving zal beïnvloeden. Test bijvoorbeeld een nieuwe set regels door Snort in de zelf-test modus te draaien (door snort -T te gebruiken plus uw andere parameters) voordat u de regels in uw productie omgeving inzet.

Oinkmaster laat u de risico’s van het downloaden van dubieuze updates vermijden door u de optie te geven een backup te maken van oude regels en door een log van zijn acties naar de console te sturen. Bekijk deze uitvoer, die verwijderde regels, gewijzigde actieve regels, niet-regel revisies en nieuwe bestanden toont, om te bevestigen dat Oinkmaster zijn taken met succes heeft voltooid en om de regels die Oinkmaster heeft gewijzigd te bevestigen. Als u er voor kiest om Oinkmaster automatisch te laten lopen, overweeg dan om de resultaten per e-mail te versturen om de controle te vergemakkelijken, zoals afbeelding 2 laat zien. Het volgende voorbeeld laat zien hoe Oinkmaster dagelijks om 6:15 uur uitgevoerd moet worden met behulp van het Linux crontab commando (met crontab kunt u taken in Linux plannen):

15 6 * * * /home/snort/oinkmaster.pl -o /home/snort/rules -b /home/snort/backup 2>&1 | mail -s "Oinkmaster" 

De Oinkmaster parameters specificeren de regelmap (-o), de backup regelmap (-b), en een commando om de resultaten naar de eigenaar te e-mailen. Het commando 2>&1 stuurt de StdErr-uitvoer naar StdOut (de console) voordat het naar de e-mailtoepassing wordt verzonden.

Kijken naar een Snort-regel
Naast het uitschakelen of het maken van basiswijzigingen in de standaardregels, kunt u uw eigen regels maken en de Snort-regels rechtstreeks op uw omgeving afstemmen. Neem bijvoorbeeld een sensor opstelling die verkeer binnen en buiten uw firewall controleert. Hoewel het u misschien interesseert hoeveel worm aanvallen uw firewall afslaat, is het waarschijnlijk nog interessanter om te weten of één van die aanvallen van binnen uw netwerk afkomstig is. Recentelijk hebben Snort regels “afgestemde” regels zoals het bovenstaande voorbeeld, maar er zijn er nog vele andere die u misschien op dezelfde manier wilt aanpassen. Listing 1 toont een standaard regel die waarschuwt wanneer hij de SQL Slammer (aka Sapphire) worm detecteert. Laten we deze regel eens snel deconstrueren. (Voor gedetailleerde informatie over alle beschikbare parameters die de regels definiëren, zie de grondige Snort regels documentatie op http://www.snort.org/docs/writing_rules/chap2.html#tth_sec2.3.26.)

Alle regels moeten op één regel staan en beginnen met een regel-actie, die in dit geval

alert

De regel-actie definieert hoe Snort reageert op de regel als deze wordt getriggerd. Je kan het regeltype wijzigen (bv. in een string zoals ‘sev1’) om een aangepaste behandeling te voorzien-bijvoorbeeld, om de actie te escaleren in geval van een overeenkomst. Deze stap verschilt van het vorige voorbeeld, waarin we Oinkmaster gebruikten om het waarschuwingstype van een bestaande regel te wijzigen; in dit voorbeeld maken we een nieuwe regel met een bestaande regel als sjabloon.

De set parameters

udp $EXTERNAL_NET any -> $HOME_NET 1434

geeft het protocol, IP adres, poort informatie, en verkeersrichting voor de regel. Deze regel vertelt Snort om elk UDP pakket te vinden van een netwerk bron (die de variabele $EXTERNAL_NET definieert) dat probeert naar de variabele $HOME_NET op poort 1434 te gaan. De meeste standaard regels gebruiken hoofdzakelijk de variabelen $EXTERNAL_NET en $HOME_NET. Sommige regels gebruiken echter meer specifieke variabelen. Bijvoorbeeld, de regels die betrekking hebben op DNS servers (in het dns.rules bestand) gebruiken de variabele $DNS_SERVERS. Definieer deze variabelen in het Snort configuratie bestand (typisch snort.conf). Optioneel, maak je eigen variabelen om je topologie weer te geven (b.v. $MAIL_SERVERS) en voor gebruik in aangepaste regels. Definieer een variabele door zijn naam te gebruiken (bv. var MAIL_SERVERS= 192.168.0.20/30), verwijs dan naar de variabele door deze te laten voorafgaan door een dollarteken ($-e.g., $MAIL_SERVERS). De regel actie en deze parameters vormen de regel header.

De regel opties verfijnen de regel verder zodat een verdacht pakket (en alleen een verdacht pakket) een antwoord zal triggeren. Zoals je kan raden, kunnen deze handtekeningen heel gedetailleerd worden en veel verder gaan dan eenvoudige poortmatching. Bijvoorbeeld, stel u de valse positieven voor die zouden resulteren indien deze Slammer regel u eenvoudigweg zou waarschuwen voor om het even welk UDP poort 1434 verkeer.

De msg optie

msg:"MS-SQL Worm propagation attempt"

levert een eenvoudige beschrijving van de waarschuwing voor gebruik in waarschuwings- en rapporteringsactiviteiten. De inhoudsoptie

content:"|04|"; depth:1; content:"|81 F1 03 01 04 9B 81 F1 01|";content:"sock"; content:"send";

bevat de hoofdlettergevoelige payload pattern matching string, in ASCII of hexadecimale waarden (sluit hex waarden in met het pipe teken-|). U kunt meerdere inhoudsopties opgeven. De diepte-optie volgt op elke inhoudsoptie en specificeert hoeveel bytes in de payload u wilt doorzoeken naar de gespecificeerde inhoud. In dit voorbeeld zal een pakket een reactie triggeren als het de hex waarde 04 bevat in de eerste byte of de resterende inhoud waar dan ook in de payload.

Gedownloade regels bevatten vaak verwijzingen naar gedetailleerde informatie over het verdachte exploit of de reden achter de creatie van de regel. Sommige meldingssystemen ondersteunen de referentie-optie door directe links naar deze informatie te bieden:

reference:bugtraq,5310; reference:bugtraq,5311;reference:url,vil.nai.com/vil/content/v_99992.htm;

Snort wijst regels toe aan klassen en kent deze klassen een prioriteit toe van hoog, gemiddeld, of laag. Momenteel bestaan er meer dan 30 classificaties, waaronder poging tot beheer, trojan-activiteit, poging tot ontzegging van de dienst, en netwerk-scan. In ons voorbeeld is de classificatie

classtype:misc-attack

Snort registreert de reactieprioriteit voor gedetecteerde inbraken. U kunt een extern hulpmiddel of een script gebruiken om deze prioriteit verder te ontleden en met uw rapportagetoepassing actie te ondernemen.

In het laatste segment

sid:2003; rev:2;

sid vertegenwoordigt een unieke Snort-regel, en rev geeft het revisienummer aan. Deze eigenschappen identificeren de regel op unieke wijze.

De regel aanpassen
Laten we eens bekijken hoe we deze regel kunnen wijzigen om een geëscaleerde waarschuwing te geven wanneer hij intern geïnfecteerde hosts detecteert. Omdat we te maken hebben met dezelfde exploit als de originele regel, blijft de inhoudsdefinitie van de regel hetzelfde. We hoeven alleen de IP adressen en de richting van het verkeer aan te passen. Laten we het bron IP adres veranderen in $HOME_NET, als volgt:

udp $HOME_NET any -> $EXTERNAL_NET 1434

Snort.conf definieert $EXTERNAL_NET als “any,” dus deze regel zal nog steeds corrupte pakketten afvangen die interne hosts als doel hebben (net als de originele regel). Echter, nu we een toegewijde regel hebben die alleen interne bron IP adressen volgt, kunnen we het actie type veranderen in een aangepast actie type dat een geëscaleerde waarschuwing triggert.

De huidige Snort regels bevatten deze uitgaande Slammer worm detectie regel in de standaard regelset. Echter, wanneer een nieuwe worm, virus, of andere exploit zich begint te verspreiden, overweeg dan het maken van nieuwe regels die specifieke inbraken markeren.

Het maken van uw regels
Naast bestaande of aangepaste regels die u kunt wijzigen of maken, wilt u misschien regels toevoegen die u van een andere bron krijgt. Bijvoorbeeld, wanneer nieuws over een nieuwe worm zich verspreidt over het Internet, publiceren beveiligingssites en nieuwsgroepen al snel eenmalige Snort regels die de nieuwe worm kunnen detecteren. Plak deze nieuwe regels in het local.rules bestand, herstart dan Snort om de nieuwe regels van kracht te laten worden.

Snort biedt het raamwerk voor een goedkoop en aanpasbaar IDS. Gesteund door een community-ondersteunde regelset, blijft Snort een flexibel en effectief systeem. Het actueel houden van uw regels zal uw waakzaamheid verhogen en de ruis verminderen die resulteert uit ineffectieve waarschuwingen. Zoals met elk open-source project, zal de tijd nemen om te begrijpen hoe het werkt en jezelf vertrouwd maken met de community-ontwikkelde add-ons je comfort met het systeem drastisch verbeteren en de effectiviteit in je omgeving verhogen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.