Suricata: Unterschied zwischen den Versionen

Aus Foxwiki
 
(46 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Beschreibung ==
== Beschreibung ==
; Suricata ist ein leistungsfähiges Intrusion Detection und Intrusion Prevention System, das sich auf vielfältige Weise an den jeweiligen Einsatzzweck anpassen lässt.
; Hochleistungsfähiges Netzwerk-IDS, IPS und Network Security Monitoring engine
* Über den NFQUEUE-Mechanismus gibt es eine sehr leistungsfähige und flexible Anbindung an die Linux-Firewall »Netfilter«.
[[Datei:Suricata IDS.png|mini|400px | Suricata mit Echtzeit-Analyse und grafischer Oberfläche]]
; [[Intrusion Detection System#Netzwerk-basierte IDS|Network Intrusion Detection System]] (NIDS)
* Auch als [[Intrusion Prevention System|Network Intrusion Prevention System]] (NIPS) einsetzbar
: in Datenverkehr eingreift und Pakete blockieren
 
; Suricata ist ein Intrusion Detection und Intrusion Prevention System
* Kann auf vielfältige Weise an verschiedene Einsatzzwecke angepasst werden
* Über den NFQUEUE-Mechanismus gibt es eine leistungsfähige und flexible Anbindung an die Linux-Firewall [[Netfilter]]


; Bei allen Möglichkeiten, die Suricata bietet, darf man aber nicht vergessen, dass ein IDS/IPS nicht vor (unbekannten) Sicherheitslücken schützen kann.
; Lizenz
* Suricata kann und muss nur ein Baustein in einem globaleren Sicherheitskonzept sein.
* [[GNU General Public License|GPL]]
* Suricata wird von der OISF und den sie unterstützenden Anbietern entwickelt
* [[Open Source]]
* Im Besitz einer gemeinschaftlich geführten gemeinnützigen Stiftung
* [[Open Information Security Foundation]] (OISF)


[[Datei:Suricata IDS.png|mini|400px]]
* [[Intrusion Detection System#Netzwerk-basierte IDS|Network Intrusion Detection System]] (NIDS)
** [[Open Information Security Foundation]] (OISF)
* Auch als [[Intrusion Prevention System|Network Intrusion Prevention System]] (NIPS) einsetzbar
: (in Datenverkehr eingreift und Pakete blockieren)


; Lizenz
; Anwendung
; Anwendung
Freie [[Firewall]]-[[Distribution (Software)|Distributionen]]
Freie [[Firewall]]-[[Distribution (Software)|Distributionen]]
Zeile 27: Zeile 32:
{| class="wikitable sortable options"
{| class="wikitable sortable options"
|-
|-
|Hersteller || [https://oisf.net/ Open Information Security Foundation]
 
|-
|-
|Betriebssystem || [[FreeBSD]], [[Linux]], [[Unix]], [[macOS]], [[Microsoft Windows|Windows]]
|Betriebssystem || [[FreeBSD]], [[Linux]], [[Unix]], [[macOS]], [[Microsoft Windows|Windows]]
Zeile 43: Zeile 48:
* seit 2008 durch Matt Jonkman, Will Metcalf und Victor Julien
* seit 2008 durch Matt Jonkman, Will Metcalf und Victor Julien


; Funktionen
; Sicherheit
; Ein IDS/IPS kann nur vor bekannten Angriffen und Sicherheitslücken schützen!
* nicht vor unbekannten
 
; Daher kann ein IDS/IPS nur ''ein'' Baustein in einem Sicherheitskonzept sein
 
== Funktionen ==
; System zur Erkennung und Abwehr von Angriffen auf IT-Infrastrukturen
 
; Auf Netzwerkebene
* Ein- und ausgehenden Datenverkehr auf verdächtige Muster überprüfen
 
; Aktionen
* Information über  Unregelmäßigkeiten
* Unerwünschte Kommunikation unterbinden
** über eine Rückschaltung zur Firewall
 
; Suricata beschreibt sich selbst als Next-Generation IDS
* da es neben der Erkennung und Abwehr von netzwerkbasierten Angriffsmustern zusätzlich über Möglichkeiten verfügt, Protokolle wie HTTP oder DNS auf Anwendungsebene zu überwachen und zu protokollieren.
* Durch Funktionen wie Multithreading, Scripting und High Performance Detection hat sich Suricata mittlerweile fest als Alternative zu snort, dem bisherigen IDS-Platzhirsch, etabliert.
 
{| class="wikitable sortable options"
{| class="wikitable sortable options"
|-
|-
Zeile 61: Zeile 86:
| [[HTTP]]-Engine (libhtp) ||  
| [[HTTP]]-Engine (libhtp) ||  
|-
|-
| PCRE-Support ||  
| [[PCRE]]-Support ||  
|-
|-
| [[Lua]]-Skripte ||  
| [[Lua]]-Skripte ||  
Zeile 84: Zeile 109:
|}
|}


=== Multithreading ===
* Ein wesentliches Merkmal, das Suricata auszeichnet und von anderen bekannten IDS/IPS unterscheidet, ist die Möglichkeit des Multithreadings und der dadurch gewonnene Performancegewinn.
* So können bei einer aktuellen Multicore-CPU die Analyseaufgaben auf mehrere gleichzeitig laufende Prozesse aufgeteilt werden, was eine parallele Paketverarbeitung ermöglicht.


; Systeme zur Erkennung und Abwehr von Angriffen auf eine IT-Infrastruktur können auf Netzwerkebene den ein- und ausgehenden Datenverkehr auf verdächtige Muster überprüfen.
; Multithread-fähige Vorgänge
* So kann der Systemadministrator bei Unregelmäßigkeiten informiert werden oder über eine Rückschaltung zur Firewall die unerwünschte Kommunikation gänzlich unterbunden werden.
* Paketempfang
* Im Folgenden soll die grundlegende Funktionalität von Suricata, einem signaturbasierten Intrusion Detection System (IDS) beschrieben werden.
* Paketdekodierung
 
* Paketanalyse
; Suricata beschreibt sich selbst als Next-Generation IDS, da es neben der Erkennung und Abwehr von netzwerkbasierten Angriffsmustern zusätzlich über Möglichkeiten verfügt, Protokolle wie HTTP oder DNS auf Anwendungsebene zu überwachen und zu protokollieren.
* Paketverarbeitung
* Durch Funktionen wie Multithreading, Scripting und High Performance Detection hat sich Suricata mittlerweile fest als Alternative zu snort, dem bisherigen IDS-Platzhirsch, etabliert.
 


Suricata is a high performance Network IDS, IPS and Network Security Monitoring engine. Open Source and owned by a community run non-profit foundation, the Open Information Security Foundation (OISF). Suricata is developed by the OISF and its supporting vendors.
Jeder dieser Vorgänge kann nicht nur individuell auf eine oder mehrere CPUs aufgeteilt, sondern auch zusätzlich noch priorisiert werden.  
 
== Installation ==
# '''apt install suricata'''
 
== Konfiguration ==
[[Suricata/Konfiguration]]
 
== Starting Suricata ==
; Manual startup
You may start the suricata service manually with:
# /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0
 
; systemd service configuration
To start Suricata automatically at system boot, enable suricata.service
 
== Multithreading ==
; Ein wesentliches Merkmal, das Suricata auszeichnet und von anderen bekannten IDS/IPS unterscheidet, ist die Möglichkeit des Multithreadings und der dadurch gewonnene Performancegewinn.
* So können bei einer aktuellen Multicore-CPU die Analyseaufgaben auf mehrere gleichzeitig laufende Prozesse aufgeteilt werden, was eine parallele Paketverarbeitung ermöglicht.
 
; Suricata unterscheidet dabei zwischen vier Multithread-fähigen Vorgängen:
* Paketempfang, Paketdekodierung, Paketanalyse und Paketverarbeitung.
* Jeder dieser Vorgänge kann nicht nur individuell auf eine oder mehrere CPUs aufgeteilt, sondern auch zusätzlich noch priorisiert werden.  
* In den Standardeinstellungen nutzt Suricata für den rechenintensivsten Prozess, die Paketanalyse, einen Thread pro CPU.
* In den Standardeinstellungen nutzt Suricata für den rechenintensivsten Prozess, die Paketanalyse, einen Thread pro CPU.


Zeile 122: Zeile 126:
; Multithreading-Standardeinstellungen bei 4 CPUs
; Multithreading-Standardeinstellungen bei 4 CPUs


; Folgende Begriffe werden dabei verwendet
; Begriffe
* Empfang  
{| class="wikitable options"
* Pakete werden vom Netzwerk gelesen.
|-
* Decodierung  
! Begriff !! Beschreibung
* Pakete werden auf TCP-Ebene decodiert und der Original-Datenstrom wird restauriert.
|-
* Analyse  
| Empfang || Pakete vom Netzwerk lesen
* Der Datenstrom wird mit den hinterlegten Signaturen verglichen.
|-
* Output  
| Decodierung || Pakete auf TCP-Ebene decodieren und Original-Datenstrom restaurieren
|-
| Analyse || Datenstrom mit aktivierten Signaturen vergleichen
|-
| Output || Alarmierungen und Ereignisse verarbeiten
|}


Evtl. auftretene Alarmierungen und Ereignisse werden verarbeitet.
<noinclude>


== Betrieb ==
== Anhang ==
; Suricata lässt sich in zwei Modi betreiben
=== Siehe auch ===
* Im normalen Modus hängt sich Suricata lauschend an eine (oder mehrere) Netzwerkschnittstellen und erlaubt so eine passive Analyse des Datenverkehrs und das Detektieren unerwünschter Kommunikation (Intrusion Detection)
{{Special:PrefixIndex/Suricata}}
 
----
; In welchem Modus Suricata arbeiten soll, muss bereits beim Start-Kommando angegeben werden
* Der Start im normalen Modus (Intrusion Detection-Modus, IDS-Modus) über zwei Netzwerkschnittstellen erfolgt mit
# suricata -i eth0 -i eth1
 
; Zur Analyse von Netzwerkschnittstellen jenseits der 1 Gbit/s reicht die Rechenleistung u.U. nicht aus, um die Pakete mit der gleichen Geschwindigkeit zu analysieren
* Um einzelne, kurzzeitig auftretende Lastspitzen abzufangen, bietet Suricata die Unterstützung von <tt>PF_RING</tt> an
* Dafür ist jedoch das Kernel-Modul <tt>pf_ring</tt> erforderlich und Suricata muss mit <tt>--enable-pfring</tt> kompiliert worden sein
# suricata --pfring-int=eth0 --pfring-cluster-id=99 --pfring-cluster-type=cluster_flow
 
== Inline-Modus (IPS) ==
; Im inline-Modus werden die Pakete über das Netfilter-Queueing (<tt>NFQUEUE</tt>) an Suricata geleitet.
* Dabei kann Suricata aktiv in die Kommunikation eingreifen und einzelne Pakete verwerfen.
* So kann das Suricata-System als Firewall arbeiten und Angriffe direkt unterbinden (Intrusion Prevention).
* Pakete können zur Analyse per iptables an Suricata geleitet werden.
* Dies ermöglicht eine deutlich flexiblere Auswahl des zu analysierenden Netzwerkverkehrs, da man auf die umfangreichen Filtermöglichkeiten von iptables zurückgreifen kann.
* Außerdem erlangt man die Möglichkeit, unerwünschte Pakete zu filtern und eine Kommunikation zu blockieren (Intrusion Prevention).
* Der Befehl, um Suricata mit zwei <tt>NFQUEUE</tt>-Warteschlangen zu starten, lautet:
# suricata -q0 -q1
 
; Über <tt>NFQUEUE</tt> gibt es eine praktische und einfach zu nutzende Möglichkeit, Filterprogramme im Userspace laufen zu lassen.
* Dazu leitet Netfilter (iptables) das Paket zur individuellen Analyse weiter.
* Somit lässt sich <tt>NFQUEUE</tt> wunderbar nutzen, um die für das IDS/IPS relevanten Pakete an Suricata zu leiten:
# iptables -A FORWARD -j NFQUEUE
 
; Es gibt jedoch ein Problem: Die Entscheidungen, die von iptables getroffen werden, sind endgültig.
* Das heißt, <tt>ACCEPT</tt>-Regeln, die vor obiger <tt>NFQUEUE</tt>-Regel stehen, führen dazu, dass iptables die Abarbeitung der Regelkette schon vorher beendet und diese Pakete nicht mehr an Suricata leitet.
* Gleiches gilt für den <tt>NFQUEUE</tt>-Prozess, der für ein Paket nur zwei Möglichkeiten hat: <tt>NF_DROP</tt> oder <tt>NF_ACCEPT</tt>.
* In beiden Fällen ist iptables danach beendet und eventuell nachfolgende Regeln werden ignoriert.
* Solange das System nicht gleichzeitig als Paketfilter eingesetzt werden soll, stört das nicht und Suricata kann über eine Angabe in der Konfigurationsdatei '''suricata.yaml''' auf Durchzug geschaltet werden:
 
nfq:
  mode: accept
 
So werden alle Pakete erlaubt und es erfolgt keine weitere Filterung über iptables.
 
Soll Suricata aber in ein bestehendes Firewall-Regelwerk integriert werden, ist ein Trick notwendig. Über ein drittes Sprungziel <tt>NF_REPEAT</tt> durchläuft ein Paket die Firewallkette erneut und wird gleichzeitig markiert.
 
nfq:
  mode: repeat
  repeat_mark: 1
  repeat_mask: 1
 
So kann iptables genutzt werden, um nur neue, also nicht markierte, Pakete an Suricata zu leiten
# iptables -A FORWARD ! -m mark ! --mark 0x1/0x1 -j NFQUEUE
 
Steht diese Regel am Anfang der <tt>FORWARD</tt>-Chain, haben bereits markierte Pakete das IDS schon durchlaufen und können danach wie üblich mit allen Möglichkeiten von iptables behandelt werden.
 
Läuft Suricata im Multithreading-Modus und wurde mit mehreren, z.B. vier <tt>NFQUEUEs</tt> gestartet, kann iptables die Paketanalyse auf die verschiedenen Warteschlangen 0, 1, 2 und 3 aufteilen:
# iptables -A FORWARD ! -m mark ! --mark 0x1/0x1 -j NFQUEUE --queue-balance 0:3
 
Über
# cat /proc/net/netfilter/nfnetlink_queue | awk '{print $6,$7}'
 
kann überprüft werden, ob Pakete verworfen werden mussten, weil die Queue voll war (erste Zahl), bzw. ob Suricata die Pakete nicht korrekt verarbeiten konnte (zweite Zahl).
* Im Idealfall sollten also beide Zahlen <tt>0</tt> sein.
 
 
== Siehe auch ==
# [[Stateful Packet Inspection]]
# [[Stateful Packet Inspection]]
# [[Snort]]
# [[Snort]]


=== Dokumentation ===
==== Sicherheit ====
==== Dokumentation ====
# https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Installation
# https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Installation
# https://suricata.readthedocs.io/en/latest/index.html
# https://suricata.readthedocs.io/en/latest/index.html


==== RFC ====
==== Links ====
==== Man-Pages ====
===== Projekt =====
==== Info-Pages ====
=== Links ===
 
==== Projekt ====
# [https://suricata.io/ Offizielle Website]
# [https://suricata.io/ Offizielle Website]
# [https://oisf.net/ Open Information Security Foundation]


==== Weblinks ====
===== Weblinks =====
# [http://oisf.net/ OISF] – Foundation hinter Suricata
# [http://oisf.net/ OISF] – Foundation hinter Suricata
# [http://www.emergingthreats.net/ emergingthreats.net] – Community für Suricata Signaturen
# [http://www.emergingthreats.net/ emergingthreats.net] – Community für Suricata Signaturen
Zeile 221: Zeile 170:
# https://www.pro-linux.de/artikel/2/1751/6,ausgabe-und-alarmierung.html
# https://www.pro-linux.de/artikel/2/1751/6,ausgabe-und-alarmierung.html


==== Einzelnachweise ====
[[Kategorie:OPNsense/IDS]]
<references />
[[Kategorie:Suricata]]
 
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


 
</noinclude>
[[Kategorie:Unix-Software]]
[[Kategorie:OPNsense/IDS]]
[[Kategorie:Intrusion Detection]]

Aktuelle Version vom 30. Mai 2023, 22:49 Uhr

Suricata ist ein Network Intrusion Detection System (NIDS)

Beschreibung

Hochleistungsfähiges Netzwerk-IDS, IPS und Network Security Monitoring engine
Suricata mit Echtzeit-Analyse und grafischer Oberfläche
Network Intrusion Detection System (NIDS)
in Datenverkehr eingreift und Pakete blockieren
Suricata ist ein Intrusion Detection und Intrusion Prevention System
  • Kann auf vielfältige Weise an verschiedene Einsatzzwecke angepasst werden
  • Über den NFQUEUE-Mechanismus gibt es eine leistungsfähige und flexible Anbindung an die Linux-Firewall Netfilter
Lizenz


Anwendung

Freie Firewall-Distributionen

Kommerzielle Anbieter

Übersicht
Betriebssystem FreeBSD, Linux, Unix, macOS, Windows
Kategorie Intrusion Detection System
Programmiersprache C, Rust
Lizenz GPL
Website suricata.io
Entwicklung
  • seit 2008 durch Matt Jonkman, Will Metcalf und Victor Julien
Sicherheit
Ein IDS/IPS kann nur vor bekannten Angriffen und Sicherheitslücken schützen!
  • nicht vor unbekannten
Daher kann ein IDS/IPS nur ein Baustein in einem Sicherheitskonzept sein

Funktionen

System zur Erkennung und Abwehr von Angriffen auf IT-Infrastrukturen
Auf Netzwerkebene
  • Ein- und ausgehenden Datenverkehr auf verdächtige Muster überprüfen
Aktionen
  • Information über Unregelmäßigkeiten
  • Unerwünschte Kommunikation unterbinden
    • über eine Rückschaltung zur Firewall
Suricata beschreibt sich selbst als Next-Generation IDS
  • da es neben der Erkennung und Abwehr von netzwerkbasierten Angriffsmustern zusätzlich über Möglichkeiten verfügt, Protokolle wie HTTP oder DNS auf Anwendungsebene zu überwachen und zu protokollieren.
  • Durch Funktionen wie Multithreading, Scripting und High Performance Detection hat sich Suricata mittlerweile fest als Alternative zu snort, dem bisherigen IDS-Platzhirsch, etabliert.
Funktion Beschreibung
Multithreading
PCAP-Analyse
IPv6-Support
Automatische Protokollerkennung
Protokoll-Parser
HTTP-Engine (libhtp)
PCRE-Support
Lua-Skripte
Intel-Hyperscan
Eve JSON-Log-Ausgabe
Redis
Datei-Extrahierung
High-Performance-Packetaufzeichnung
AF_PACKET
PF_RING
NETMAP
IP-Reputation

Multithreading

  • Ein wesentliches Merkmal, das Suricata auszeichnet und von anderen bekannten IDS/IPS unterscheidet, ist die Möglichkeit des Multithreadings und der dadurch gewonnene Performancegewinn.
  • So können bei einer aktuellen Multicore-CPU die Analyseaufgaben auf mehrere gleichzeitig laufende Prozesse aufgeteilt werden, was eine parallele Paketverarbeitung ermöglicht.
Multithread-fähige Vorgänge
  • Paketempfang
  • Paketdekodierung
  • Paketanalyse
  • Paketverarbeitung

Jeder dieser Vorgänge kann nicht nur individuell auf eine oder mehrere CPUs aufgeteilt, sondern auch zusätzlich noch priorisiert werden.

  • In den Standardeinstellungen nutzt Suricata für den rechenintensivsten Prozess, die Paketanalyse, einen Thread pro CPU.

"Multithreading-Standardeinstellungen bei 4 CPUs"

Multithreading-Standardeinstellungen bei 4 CPUs
Begriffe
Begriff Beschreibung
Empfang Pakete vom Netzwerk lesen
Decodierung Pakete auf TCP-Ebene decodieren und Original-Datenstrom restaurieren
Analyse Datenstrom mit aktivierten Signaturen vergleichen
Output Alarmierungen und Ereignisse verarbeiten


Anhang

Siehe auch


  1. Stateful Packet Inspection
  2. Snort

Sicherheit

Dokumentation

  1. https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Installation
  2. https://suricata.readthedocs.io/en/latest/index.html

Links

Projekt
  1. Offizielle Website
  2. Open Information Security Foundation
Weblinks
  1. OISF – Foundation hinter Suricata
  2. emergingthreats.net – Community für Suricata Signaturen
  3. http://suricata-ids.org/
  4. https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Ubuntu_Installation_from_GIT
  5. http://www.emergingthreats.net/
  6. http://oinkmaster.sourceforge.net/
  7. http://www.hosfeld.de/
  8. http://www.freiesmagazin.de/20150201-februarausgabe-erschienen
  9. https://www.pro-linux.de/artikel/2/1751/6,ausgabe-und-alarmierung.html