NIDS – network intrusion detection system – und Raspberry Pi, geht das zusammen? Die schlichte Antwort ist, ja!
Ziel
Erfassen und protokollieren des Verkehrs in und aus LAN Segmenten. Aktive Maßnahmen werden nicht angestossen. Der Verkehr selber wird analysiert und aufbereitet. Es soll eine mehrstufige Darstellung möglich sein.
Ausgangslage
Zum Einsatz kommt ein Raspberry Pi4 mit 4 GB RAM und ein USB 3 Festplatte mit 1 TB Speicher. Als Betriebssystem ist Ubuntu 20.04 LTS 64 Bit installiert. Die Firmware vom EEPROM des Raspberry Pi ist aus dem Stabel Zweig – pieeprom-2020-07-16.bin. Die Startreihenfolge ist zuerst SD-Karte, dann USB Anschluss. SD-Karte wird keine verwendet, aber bei Notfällen, kann von dieser wieder gestartet werden. Die USB Festplatte hat zwei Partitionen, eine Ext4 Partition und eine XFS. Die XFS Partition ist vor allem für den Mongo Datenbank Server. Der Netzwerkverkehr zwischen allen LAN Segmenten und dem Internet Gateway werden auf einen Anschluss am Switch gespiegelt. Die Backplane des Gigabit Switches schafft 3Gbit/s Durchsatz. Der Verkehr wird über die Ethernetschnittstelle des Raspberry PI abgegriffen. Die Ethernetschnittstelle wird ohne IP Adresse im „promiscous“ Modus betrieben. Die Verbindung erfolgt über ein eigenes WLAN Segment.
Software
- Maltrail
Malicious traffic detection system – Fokus vor allem auf Malware und nicht so sehr die Zugriffe von aussen, wie Massenscans, etc. Es wird vor allem mit Listen gearbeitet, um Muster zu erkennen. Es gibt aber auch ein heuristisches Element, „selbstlernend“, um neue, bis dato unbekannte Bedrohungen zu erkennen. - zeek (vormals bro)
Zeek ist das eigentliche Herzstück. Hier etwas mehr Information dazu.
Zeek bietet nicht nur die Möglichkeit (Snort) Regeln zu verwenden und Verhaltensweisen zu protokollieren, sondern auch am Informationsaustausch über Bedrohungen (vgl.: MISP-Threat Sharing) teilzunehmen. - RITA
RITA ist das Akronym für Real Intelligence Threat Analytics, wurde von Black Hills Information Security als Open Source Projekt ins Leben gerufen und wird durch die Firma Active Countermeasures finanziert und unterstützt.
Zusammenspiel
Maltrail besteht aus drei Komponenten. Einem Sensor und einem Server, beides in Python geschrieben, und dem (Browser) Client. Sensor und Server laufen auf dem Raspberry PI. Der Sensor greift den Verkehr ab und der Server kümmert sich um die Verwaltung, wie Update, Mustererkennung, Aufbereitung Daten etc. Die aufbereiteten Daten werden tageweise zusammengefasst. Der Client kann die Auswertung im Browser mittels Javascript darstellen. Anzumerken ist, dass hier Bing als Suchmaschine in iFrames verwendet wird, um weiterführende Informationen abzurufen. Eine Änderung in der Form ist nicht möglich, da die meisten anderen Suchmaschinenbetreiber die Einbindung über iFrames nicht unterstützen. Maltrail ermöglich es einen schnellen Überblick zu bekommen und einen Hinweis auf mögliche Vorfälle. Die Schwere der möglichen Verletzung wird in drei Stufen eingeteilt, Protokoll, Quell- und Zieladresse, wie auch Ports werden inklusive Verweis auf die Referenzliste ausgegeben.
Rita ist dann der zweite Schritt. Rita kann auf der Konsole vorgefertigte Berichte ausgeben. Gesucht wird zum Beispiel nach regelmäßige Kommunikation bei der die zeitliche Ablage und die Größe der Übertragungspakete mit bewertet wird. Eine Bewertung der Standardabweichung von 85% und höher ist ein mögliches Indiz für eine Kommunikation zwischen einem gekaperten Rechner und einem Kontrollserver.
Rita hat natürlich noch einige andere Reports vorgefertigt.
Schlussendlich kann man dann noch genau nachsuchen mit Hilfe der Protokolle, die Zeek angelegt hat. Zeek erstellt auf Tagesbasis die Protokolldateien – dient vor allem der Kohärenz mit Maltrail.
Der Umgang, die Konfiguration, Schreiben von eigenen Plugins ist in der offiziellen Dokumentation ersichtlich. Eine Idee was man mit Zeek machen kann, findet sich zum Beispiel hier.