iX 5/2017
S. 132
Praxis
Sicherheit
Aufmacherbild

Konfiguration und Betrieb von Suricata

Geregelter Verkehr

Wer das eigene Netz vor Angriffen schützen will, greift zu Intrusion-Detection- und -Prevention-Systemen. Soll so ein Produkt wenig kosten und viele Möglichkeiten für Einstellungen und Auswertungen bieten, eignet sich das freie Suricata.

Nach einem Überblick über Intrusion-Detection-Systeme (IDS) in iX 2/2017 [1] geht dieser Artikel auf Installation, Konfiguration und Betrieb des freien Suricata ein. Es arbeitet ebenfalls als Intrusion-Prevention-System (IPS) und Network Security Monitor (NSM). Dazu analysiert es den Netzverkehr und ermöglicht das Erkennen von Angriffen sowie unerwünschtem Traffic. Umfangreiche Konfigurationsoptionen eröffnen Administratoren einen tiefen Einblick in ihr Netz.

Zum Erkennen gefährlicher Pakete und Verbindungen nutzt Suricata gängige Signaturen; dieses System lässt sich durch Lua-Skripte erweitern. Unterschiedliche Ausgabeformate bieten Administratoren die Wahl beim Auswerten der Informationen. Um auch Geschwindigkeiten bis 100 GBit/s zu verarbeiten, ist Suricata auf Mehrkernprozessoren optimiert und nutzt spezialisierte Bibliotheken wie Intels Hyperscan. Das Programm lässt sich auf den meisten aktuellen Linux-Distributionen und BSD-Derivaten sowie macOS installieren, für Windows steht ein experimenteller Cygwin-Port bereit. Als Plattform eignet sich jede nicht zu alte x86- und ARM-Maschine, zu schwache Hardware dürfte jedoch zu Performanceproblemen führen.

Für die Installation von Suricata gibt es mehrere Wege. Dieser Artikel beschränkt sich auf das Übersetzen aus den Quellen, was das einfache Einbinden optionaler Features erlaubt. Für einige Linux-Distributionen stellen die Maintainer fertige Pakete bereit, von den Suricata-Entwicklern selbst gibt es sie für Ubuntu und Debian („Alle Links“, [a]). Die Installation der aktuellen stabilen Version 3.2.1 [b] auf einem Linux-System erfordert zunächst eine kurze Vorbereitung:

wget https://www.openinfosecfoundation.org/\
  download/suricata-3.2.1.tar.gz
tar -xvzf suricata-3.2.1.tar.gz
cd suricata-3.2.1
./configure

Fehlermeldungen beim Aufruf von ./configure betreffen meist fehlende Pakete, die man per Paketmanager nachrüsten muss. Es bietet sich an, mit configure --help die Optionen anzuschauen, da nicht alle Funktionen von vornherein aktiviert sind. Informationen zum Einsatz von Suricata als IPS enthält der Kasten „Suricata als Intrusion-Prevention-System“.

Suricata mit allen Regeln installieren

Nach dem Aufruf von configure schließt

make
sudo make install-full

die Installation ab. Die zweite Zeile erstellt Standardkonfigurationsdateien, lädt die freien Regelsätze von EmergingThreats [c] herunter und aktiviert sie. Wer nur die Konfigurationsdateien hinterlegen möchte, benutzt make install-conf.

Listing 1: Suricata-Features (Auszug)

 Suricata Configuration:
  AF_PACKET support:                  yes
  PF_RING support:                    no
  NFQueue support:                    no
  Netmap support:                     no
  Unix socket enabled:                yes
  Detection enabled:                  yes
  LUA support:                        no
  Hyperscan support:                  no
  Suricatasc install:                 yes

Einen Überblick über die aktivierten Suricata-Features liefert sudo suricata --build-info. Neben der Version und Compiler-spezifischen Flags ist der in Listing 1 gezeigte Ausschnitt relevant. Hier steht das Linux-spezifische AF_PACKET für die aktivierte Paketaufzeichnung. Alternativ könnte man das von ntop entwickelte PF_RING verwenden. Aktiviert sind weiterhin die Kommunikation per Socket, die Detection Engine sowie einige Bibliotheken für Regeln und Signaturen. Auf FreeBSD wäre beispielsweise statt AF_PACKET der Netmap-Support eingeschaltet. Wer mit Lua definierte Regeln verwenden will, muss das explizit beim Kompilieren einschalten. Für aktuelle Intel-Systeme bietet sich die Hyperscan-Optimierung [d] an, für die dedizierte Pakete erforderlich sind, die man bei den meisten Distributionen von Hand installieren muss.

Damit Suricata den Netzverkehr untersucht, genügt der folgende Aufruf:

sudo suricata -i en0 -v \
  -c /usr/local/etc/suricata/suricata.yaml 

Hier ist suricata.yaml die mitgelieferte Konfigurationsdatei (dazu später mehr), en0 die zu überwachende Schnittstelle, und v liefert mehr Details über den Startprozess. Man erfährt so die Anzahl der verwendeten Prozessorkerne, Regeldateien samt enthaltener Signaturen und die Liste der aktivierten Ausgabeformate (hier fast.log, eve.json und stats.log). Erscheint die Meldung … engine started., ist Suricata aktiv.