Signaturregeln mit Snort und Suricata
Netzwerkregeln schreiben und lesen
Signaturregeln mit Snort und Suricata ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Snort und Suricata
Snort und Suricata sind die beiden führenden Open-Source-Engines für IDS/IPS. Sie verwenden eine weitgehend kompatible Regelsprache, sodass eine für die eine Engine geschriebene Regel normalerweise auch auf der anderen läuft.
Suricata ergänzt Multithreading, native Protokollparser, Dateiextraktion und umfangreiche Protokollierung (EVE JSON); Snort 3 hat seine eigene Engine in ähnlicher Weise modernisiert. Wenn Sie die Regelsyntax einmal lernen, können Sie beide effektiv einsetzen.
Aufbau einer Regel
Jede Regel besteht aus zwei Teilen: einem Header und einem in Klammern gesetzten Body mit Optionen. Der Header legt Aktion, Protokoll und Verkehrsrichtung fest; der Body definiert, wonach gesucht wird und wie das Ergebnis gemeldet wird.
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
msg:"WEB suspicious request"; \
content:"/admin.php"; http_uri; \
sid:1000001; rev:1; )Die Headerfelder
Der Header wird von links nach rechts gelesen:
- action — alert, drop, reject, pass
- protocol — tcp, udp, icmp, ip (oder Anwendungsprotokolle in Suricata: http, dns, tls)
- source IP/port und destination IP/port
- direction —
->unidirektional oder<>bidirektional
Variablen wie $HOME_NET und $EXTERNAL_NET stammen aus Ihrer Konfiguration, damit Regeln standortübergreifend portierbar bleiben.
drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )Aktionen: Alert vs. Drop
Die action bestimmt, ob sich diese Regel wie ein IDS oder IPS verhält:
alert— protokolliert und benachrichtigt, stoppt den Datenverkehr aber nicht (IDS)drop— verwirft das Paket stillschweigend (IPS, nur inline)reject— verwirft das Paket und sendet einen TCP-Reset oder ICMP-Fehler „unreachable“pass— erlaubt den Datenverkehr ausdrücklich und überspringt spätere Regeln
Dieselbe Engine fungiert als IDS oder IPS – je nachdem, ob sie inline eingesetzt wird und welche Aktionen Sie verwenden.
Inhaltsabgleich
Das Schlüsselwort content gleicht ein Byte-Muster in der Payload ab. Text steht in Anführungszeichen; Binärdaten werden in Pipes als Hexadezimalwerte angegeben.
Schlüsselwörter zur Verankerung präzisieren die Treffer: offset, depth, distance und within schränken ein, an welcher Stelle das Muster vorkommen darf, und verbessern dadurch Genauigkeit und Performance.
alert tcp any any -> $HOME_NET any ( \
msg:"Malware magic bytes"; \
content:"|4D 5A|"; offset:0; depth:2; \
sid:1000003; rev:1; )Sticky Buffers
Moderne Regeln gleichen Muster mit protokollspezifischen Buffern statt mit dem rohen Datenstrom ab. Nach einem Buffer-Schlüsselwort beziehen sich nachfolgende content-Treffer auf den entsprechenden Teil des geparsten Protokolls.
http_uri— die Request-URIhttp_header— Request- und Response-Headerhttp_user_agent— der User-Agenttls_sni/dns_query— TLS-Servername / DNS-Abfrage
Das ist deutlich zuverlässiger, als das gesamte Paket nach einer Teilzeichenkette zu durchsuchen.
alert http any any -> any any ( \
msg:"Suspicious user agent"; \
http.user_agent; content:"sqlmap"; nocase; \
sid:1000004; rev:1; )PCRE und nocase
Wenn feste Zeichenketten nicht ausreichen, stellt pcre Perl-kompatible reguläre Ausdrücke bereit. Kombinieren Sie einen kostengünstigen content-Vorfilter mit pcre, damit der reguläre Ausdruck nur auf mögliche Treffer angewendet wird und die Performance erhalten bleibt.
Der Modifikator nocase macht einen content-Abgleich unabhängig von Groß- und Kleinschreibung – wichtig für Header und benutzergesteuerte Felder, die Angreifer variieren können.
alert http any any -> $HOME_NET any ( \
msg:"SQLi attempt in URI"; \
http.uri; content:"select"; nocase; \
pcre:"/union\s+select/i"; \
sid:1000005; rev:1; )Flow- und Zustands-Schlüsselwörter
Die Option flow beschränkt eine Regel auf den Verbindungsstatus und die Richtung und reduziert so Fehlalarme und Ressourcenaufwand.
established— nur bei abgeschlossenen TCP-Sitzungento_server/to_client— Richtung von Request bzw. Response
Wenn Sie Serverantworten nur bei established und to_client abgleichen, vermeiden Sie Treffer bei verirrten oder gefälschten Paketen.
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
msg:"Beacon response"; \
flow:established,to_client; \
content:"|00 01 02 03|"; \
sid:1000006; rev:1; )Metadaten: sid, rev, msg, reference
Verwaltungsoptionen halten einen Regelsatz wartbar:
sid— eindeutige Signatur-ID (für lokale Regeln 1000000+ verwenden)rev— Revisionsnummer, bei jeder Änderung erhöhenmsg— der Alarmtext, den Analysten sehenclasstype— Kategorie, die die Priorität bestimmtreference— Link auf eine CVE oder ein Advisory
Stabile sids und fortlaufend erhöhte revs ermöglichen es Ihnen, Regeln nachzuverfolgen und zu aktualisieren, ohne Dashboards und Suppressions zu beeinträchtigen.
alert tcp any any -> $HOME_NET 445 ( \
msg:"EternalBlue exploit attempt"; \
flow:to_server,established; content:"|FF|SMB"; \
classtype:attempted-admin; \
reference:cve,2017-0144; sid:1000007; rev:2; )Unterschiede zwischen Snort und Suricata
Obwohl die Regeln kompatibel sind, unterscheiden sich die Engines in ihrem Funktionsumfang:
- Suricata ist multithreadfähig, analysiert Anwendungsprotokolle nativ, extrahiert Dateien, berechnet JA3 und erzeugt EVE JSON
- Snort 3 hat seine Engine für bessere Performance und ein modulares Plugin-System neu geschrieben
Einige Schlüsselwörter sind enginespezifisch. Suricata ergänzt Schlüsselwörter für die Anwendungsschicht (tls.sni, dns.query, http.method) sowie Funktionen für Datasets und Flowbits. Wenn Sie Regeln gemeinsam nutzen, richten Sie sie auf den kleinsten gemeinsamen Nenner aus oder pflegen Sie enginespezifische Regelsätze.
Ratenfilterung und Schwellenwerte
Um zu verhindern, dass eine Regel die Konsole mit Meldungen überflutet, wenden Sie Schwellenwerte an. detection_filter wird erst nach N Ereignissen innerhalb eines Zeitfensters ausgelöst; threshold mit limit begrenzt die Zahl der Alarme.
Das ist für die Erkennung von Brute-Force-Angriffen und Scans entscheidend, da ein einzelnes Ereignis bedeutungslos ist, während eine Häufung das eigentliche Signal darstellt.
alert tcp any any -> $HOME_NET 22 ( \
msg:"SSH brute force"; flow:to_server; \
detection_filter:track by_src, count 5, seconds 60; \
sid:1000008; rev:1; )Kurztest
Lesen Sie eine Regel und sagen Sie ihr Verhalten voraus.
Zusammenfassung
Sie können jetzt Snort-/Suricata-Signaturen lesen und schreiben:
- Eine Regel besteht aus einem Header (action, proto, src/dst, direction) und Body-Optionen
- Die action legt IDS oder IPS fest:
alert,drop,reject,pass contentgleicht mit offset/depth und Hexadezimalwerten Payload-Bytes ab- Sticky Buffers (http.uri, tls.sni, dns.query) gleichen geparste Protokollfelder ab
pcreundnocaseverarbeiten variable Musterflowbeschränkt den Abgleich auf Status und Richtungsid/rev/msg/referencehalten Regeln wartbar- Schwellenwerte reduzieren das Rauschen durch Brute-Force-Angriffe und Scans
Als Nächstes: Bedrohungen ohne jede Signatur erkennen.
Häufig gestellte Fragen
Ist die Lektion „Signaturregeln mit Snort und Suricata“ kostenlos?
Ja — der vollständige Text von „Signaturregeln mit Snort und Suricata“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Signaturregeln mit Snort und Suricata“?
Netzwerkregeln schreiben und lesen Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Signaturregeln mit Snort und Suricata“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Konzepte zu IDS und IPS
- Signaturregeln mit Snort und Suricata
- Anomalie- und Verhaltenserkennung
- Abstimmung und Bereitstellung