Im Folgenden möchte ich die Implementierung und Einrichtung eines Network Intrusion Detection Systems auf Basis von Security Onion zeigen.

Security Onion ist eine Linux-Distribution welche speziell auf Intrusion Detection und Security Monitorting ausgerichtet ist. Die Distribution basiert auf Ubuntu Server und beinhaltet vorinstallierte Tools wie Snort, Suricata, Bro, Sguil, Squert, ELSA und viele Weitere.

Was ist ein Network Intrusion Detection System?

Ein Network Intrusion Detection System, kurz NIDS, ist ein Überwachungssystem welches unerwünschte Netzwerkzugriffe, Inhalte und Angriffe erkennt und bei Forensik unterstützt. Sobald das NIDS einen Angriff erkennt, erfolgt z. B. eine Alarmierung an die Administratoren.

Um Angriffe zu erkennen analysiert das NIDS den Netzwerkverkehr. Bei modernen geswitchten Netzwerken reicht es aber nicht aus das NIDS wie einen normalen Host ins Netzwerk zu integrieren. Stattdessen muss der Traffic an einer zentralen Stelle abgegriffen und in das NIDS geleitet werden. Hier bietet sich ein Coreswitch oder eine Firewall an.

Eine einfache Möglichkeit zum Abgreifen von Netzwerktraffic ist das sogenannte Port Mirroring, das Spiegeln von Netzwerkinterfaces. Hierbei werden Kopien von Frames der beobachteten Ports an einen dafür ausgewählten Port weitergeleitet. Port Mirroring wird von vielen Switchen und Firewalls unterstützt.

IDS mit SecurityOnion 01 – Im folgendem Beispiel wurde das NIDS direkt hinter der Firewall implementiert

Sizing

Security Onion kann sowohl als virtuelle Maschine als auch Bare Metal betrieben werden. Für große Installationen wird die Installation auf physischer Hardware empfohlen. Außerdem besteht die Möglichkeit den Security Onion Masterserver und ein oder mehrere Sensoren getrennt zu betreiben.

Die integrierten Netzwerksniffer Snort oder Suricata sind sehr CPU-intensiv. Je mehr Traffic analysiert werden soll desto mehr CPU-Kerne werden folglich benötigt. Eine Faustformel der Entwickler empfiehlt pro 200 Mbps zwei CPU-Cores. Bei einem voll ausgelasteten 1Gbit-Port liegt die Empfehlung also bei 10 Cores.

Minimal werden 3 GB RAM benötigt. Die RAM-Empfehlung in Abhängigkeit zur Bandbreite sind in der folgende Tabelle ersichtlich.

Bandbreite RAM
<=50Mbps 8GB
50Mbps – 500Mbps 16GB – 128GB
500Mbps – 1000Mbps 128GB – 256GB

Standardmäßig werden 50% des verfügbaren Festplattenspeicherplatzes für ELSA Logs reserviert. Die andere Hälfte steht für Packet Captures zur Verfügung. Wenn der Speicher zur Neige geht, werden alte Logs und Captures gelöscht. Es gilt also festzulegen, wie lange Logs und Captures vorgehalten werden sollen. Folgendes Rechenbeispiel zeigt die Speicherbelegung der Überwachung einer ausgelasteten 50Mbps Leitung.

50Mb/s = 6.25 MB/s = 375 MB/minute = 22,500 MB/hour = 540,000 MB/day

Vorbereitung VM und Netzwerk

In diesem Beispiel wurde Security Onion auf einer virtuellen Maschine auf einem VMware ESXi-Host realisiert. Der VM wurden 8 CPU-Kerne und 8 GB Ram zugewiesen. Die Größe der virtuellen Festplatte beträgt 512 GB.

Wie in der Grafik zu sehen wurden alle vier Quellports an jeweils einen Port pro Coreswitch gespiegelt. Die gespiegelten Switchports werden über vSwitches an die VM weitergereicht.

IDS mit SecurityOnion 02 – Cisco Nexus SPAN

Wichtig bei der Vmware V-Switch Konfiguration ist die Aktivierung des „Promiscuous Mode“, durch welchen der eingehende Traffic  an alle verbundenen VMs weitergeleitet wird. Wenn an den Quellports VLAN-Tagging stattfindet, muss ebenfalls die Optionen „alle VLAN-IDs“ aktiviert werden.

Der VM wurden drei NICs zugewiesen, ein Management-Interface und zwei Sniffing-Interfaces.

VM erstellen – virtuelle Switches zuweisen

NIC 1 eth0 Management
NIC 2 eth1 SPAN Core01
NIC 3 eth2 SPAN Core02

Security Onion Installation

Nun kann das aktuelle Security Onionen ISO-Image heruntergeladen und die Installation gestartet werden. Offiziell wird nur die Sprache Englisch unterstützt. Eine Installation auf Deutsch führt zu einem reproduzierbaren Abbruch des Installers.

SecurityOnion Installation – Sprachauswahl

SecurityOnion Installation – Überprüfung

SecurityOnion Installation – Partitionierung

SecurityOnion Installation – Partitionierung bestätigen

SecurityOnion Installation – User anlegen

Nach Abschluss des Assistenten wird die VM neu gestartet und der Login mit dem angelegten Benutzer ist nun möglich. Nach dem Anmelden wird die weitere Konfiguration über das Setup auf dem Desktop gestartet.

Security Onion Setup starten

Zunächst muss das Management Interface konfiguriert werden, welches für den Zugriff der Web-Tools sowie das Herunterladen von Updates benötigt wird.

Security Onion Setup – Statische oder dynamische IP Konfiguration

Nun folgt die Auswahl der Sniffing Interfaces. Über die Sniffing Interfaces wird Security Onion später den Netzwerkverkehr aufzeichnen und untersuchen können.

Security Onion Setup – Sniffing Interfaces auswählen

Anschließend hat man die Wahl zwischen zwei verschiedenen Installationsmodi. Für dieses Beispiel wurde Production Mode gewählt.

Security Onion Setup – Production Mode

Möchte man eine verteilte Umgebung schaffen, kann man sich hier für einen Server oder Sensor entscheiden. Möchte man alle Funktionen auf einer Maschine, empfiehlt sich die Standalone-Installation.

Security Onion – Standalone Installation

Security Onion – Best Practices

Nun wird der Sguil-User erstellt. Dieser dient später als Login für alle Anwendungen und Websites.

Security Onion – User erstellen

Die Wahl der IDS Engine ist wohl eher eine Glaubensfrage. Ich habe mich für Suricata entschieden, aufgrund der Engine Multi-Threat Fähigkeit. Die verfügbaren IDS-Rules können mit beiden Engines verwendet werden.

Security Onion – Engine Auswahl

Ich habe mich in diesem Beispiel für die Emerging Threats Open entschieden. Diese freien Definitionen stehen unter der BSD Lizenz. Im Gegensatz zu Emerging Threats Pro und den Snort Rules ist hier keine Authentifizierung in Form eines Oikcodes für den Abruf der Regeln notwendig.

Security Onion – IDS rules

PF_RING min_num_slots auf maximalen Wert gesetzt.

Security Onion – PF_RING_min_num_slots

Der Wert PF_RING min_num_slots kann später wie folgt angepasst werden.

echo "options pf_ring transparent_mode=0 min_num_slots=65534" | sudo tee /etc/modprobe.d/pf_ring.conf

PF_RING module neu starten

sudo nsm_sensor_ps-stop
sudo rmmod pf_ring
sudo nsm_sensor_ps-start

Nun noch einmal die zu überwachenden Interfaces auswählen.

Security Onion – Auswahl Monitoring Interfaces

Jetzt kann das eigene Netzwerk definiert werden. Dies hilft Security Onion dabei interne und externe Netzwerke zu unterscheiden.

Security Onion – eigenes Netzwerk definieren

Das Setup ist nun abgeschlossen. Security Onion beginnt nun umgehend mit der Überwachung.

Mit folgenden Webtools stehen nun zur Verfügung. Der Login erfolgt mit dem angelegten Sguil-User.

https://IP-ADDRESS/squert

https://IP-ADDRESS/elsa

https://IP-ADDRESS/capme

Firewall konfigurieren

Damit die Webdienste auch von anderem Devices aufrufbar sind, muss die Firewall noch entsprechend konfiguriert werden.

ufw allow https

Links

Homepage

Download

Roadmap

Hardwarempfehlung