Categories:

Wer nutzt mein WLAN? Einfaches Intrusion Detection System (IDS) mit Aruba Instant und Graylog erstellen

Veröffentlicht von empy
Lesezeit: 15 Minuten

WLAN ist kabellos und damit unsichtbar. Rein kommt, wer das WLAN-Passwort kennt und in Funkreichweite des WLAN-Signals ist. Oft reicht dieses Signal weiter als man denkt. In den meisten Fällen reicht es sogar über die eigenen vier Wände hinaus. So wie ihr die WLAN-Signale eurer Nachbarn empfangt, empfängt der Nachbar die Signale eurer eigenen WLAN-SSID. Und genau das macht WLAN grundsätzlich angreifbar: Um in euer WLAN zu kommen, ist kein physischer Zugang zu eurer Wohnung notwendig. Gleichzeitig lässt sich WLAN recht einfach knacken, wenn euer Passwort zu wenig Zeichen hat. Man muss nur einmal kurz in Funkreichweite gewesen sein.

Deshalb möchte ich euch zeigen, wie ich mir ein einfaches WLAN Intrusion Detection System (IDS) für mein eigenes WLAN gebaut habe. Ich habe das System so eingerichtet, dass ich bei jedem Zugriffsversuch mit falschen WLAN-Passwort (PSK) eine E-Mail erhalte. Mein IDS informiert mich auch, wenn sich ein mir unbekanntes Endgerät erfolgreich im WLAN anmeldet. So würde ich erkennen, wenn jemand ohne Erlaubnis (und eventuell mit geknacktem WLAN-Passwort) mein WLAN nutzt. Im Beispiel nutze ich dazu meine Aruba Instant WLAN Access Points und das kostenlose Logging-Tool Graylog. Klappt aber auch mit anderen WLAN-Routern, sofern diese aussagekräftige Logs an einen Syslog-Server senden können.

1. Debian 11 installieren

Für das eigene kleine IDS nutzen wir die Systemfunktionen von Aruba Instant (oder anderer APs, aber Syslog müssen sie können). Die eigentliche Logik des Alarmsystems findet dann in Graylog statt. Graylog ist ein kostenloses Analysetool für Logs. Es speichert Logs, wertet sie aus und kann dann Alarme und Benachrichtigungen erzeugen.

Da Graylog unter Linux läuft, habe ich mich für ein Debian entschieden. Auch Kali Linux basiert auf Debian, daher kenne ich mich mit dieser Distribution ganz gut aus. Ihr könnt aber auch jedes andere Linux nehmen, Graylog bietet dazu sehr gute Anleitungen.

Mein IDS sollte sogar auch auf einem Raspberry Pi funktionieren. Immerhin basiert das Raspberry-Pi-OS Betriebssystem ohnehin auf Debian 11, sogar in der neuesten Version! Ansonsten nutzt einfach diese Anleitung, um das originale Debian 11 auf dem Raspberry Pi zu installieren.  

Anmerkung: Wenn euer Speichermedium des Rasperry Pi sehr wenig Speicherplatz besitzt, müsst ihr die Größe der Graylog-Datenbank wie in Punkt 5 entsprechend anpassen.

Ladet euch also Debian 11 herunter. Je nach Vorgehensweise erstellt ihr damit entweder einen Boot-Stick mit Rufus oder ladet das Image direkt in eine VM. Ich verwende heute einen kleinen Hardware-Server (eine ehemalige Sophos-Appliance), auf dem später Graylog laufen wird.

Graphische Installation von Devian 11.

Die Installation ist selbsterklärend, wenn ihr den grafischen Installer nutzt: Wählt die Sprache aus, legt das Tastaturlayout fest und lasst Debian die Systemkomponenten erkennen. Richtet dann das Netzwerk ein (statische IP-Adresse). Ich lege keinen Root-User fest (Felder also leer lassen), sondern gebe die Root-Rechte direkt meinem ersten eingerichteten Benutzer. Formatiert/partitioniert dann die Festplatte entsprechend.

Keine GUI, sondern CLI und SSH-Server

Im nächsten Schritt wird der Paketmanager konfiguriert. Wählt hier Deutschland aus, dann könnt ihr ruhig deb.debian.org verwenden. Ich selbst nehme als Spiegelserver allerdings lieber den Server der Hochschule Regensburg, gefühlt ist der für mich am schnellsten.

Mein Server soll möglichst ressourcenschonend laufen, daher installiere ich kein GUI. Umso wichtiger ist aber der SSH-Server: So kann ich später über Putty den Debian-11-Server überprüfen und per CLI Graylog installieren. Ist kinderleicht, versprochen.

Setzt die Installation von Debian 11 fort, der Installer lädt nun die Komponenten herunter und installiert alle Pakete. Abschließend müsst ihr noch den GRUB-Bootloader installieren, damit ihr dann im Anschluss Debian 11 endlich starten könnt. Nach Systemstart könnt ihr euch nun übrigens per SSH auf den Server mit euren Userdaten einloggen.

2. Kostenlosen Syslog-Server „Graylog“ installieren

Der Debian-11-Server ist nun bereit für die Installation von Graylog. Denkt aber daran, den Server vorher ordentlich abzusichern! Erst nachdem dies geschehen ist, solltet ihr mit folgender Installationsanleitung von Graylog fortfahren. Gerne schaut ihr dazu auch direkt bei Graylog vorbei.

Debian 11 wird um benötigte Komponenten ergänzt, welche wir später für MogoDB, Elasticsearch und Graylog benötigen.

Zunächst prüfen wir Debian auf Aktualität und installieren dann weitere Systemkomponenten, welche wir für die Installation von Graylog benötigen.

sudo apt update && sudo apt upgrade
sudo apt install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen dirmngr gnupg wget

MongoDB installieren

Als erstes müssen wir MongoDB installieren. Graylog benötigt die MongoDB, um Systemeinstellungen abzulegen.

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org

Anschließend wird MongoDB so eingestellt, dass es beim Hochfahren des Servers automatisch mit gestartet wird.

sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
sudo systemctl --type=service --state=active | grep mongod

Elasticsearch installieren

Graylog benötigt nun noch die Elasticsearch, eine sehr mächtige Search-Engine auf Basis von Lucene. Installiert sie in Version 7 (aber unter 7.11), sonst gibt es später Schwierigkeiten mit Graylog.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update && sudo apt install elasticsearch-oss

Achtung: Bevor es nun weitergeht, muss die Konfigurationsdatei der Elasticsearch angepasst werden.

Dazu im CLI die Datei mit folgendem Befehl öffnen:

sudo nano /etc/elasticsearch/elasticsearch.yml
Vor dem Start der Elasticsearch muss die Konfiguration angepasst werden!

Setzt dann die folgende Werte für die folgenden Parameter wie folgt:

cluster.name: graylog
action.auto_create_index: false

Mit STRG+S werden die Änderungen gespeichert, STRG+X verlässt den Editor wieder und ihr kommt zurück zur CLI. Abschließend wird die Elasticsearch noch gestartet.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl restart elasticsearch.service

Graylog 4.2 installieren

Endlich kann dann Graylog installiert werden. Dazu nutzt wieder folgende Befehle, um das Paket herunterzuladen und zu installieren.

wget https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.deb
sudo dpkg -i graylog-4.2-repository_latest.deb
sudo apt-get update && sudo apt-get install graylog-server

Bevor der Graylog-Dienst abschließend gestartet werden kann, muss auch hier die Konfigurationsdatei unter /etc/graylog/server/server.conf angepasst werden. Dort müsst ihr für den ersten Start von Graylog die Werte bei password_secret und root_password_sha2 anpassen, sonst startet Graylog nicht. Sinn macht es auch, direkt die IP-Adresse von Graylog anzugeben.

Wichtig: Ihr müsste beide Passwort-Werte mit 256-SHA hashen. Dazu im CLI folgenden Befehl eingeben und anschließend euer gewünschtes Passwort eingeben, welches ihr später für den Login des Graylog-Admin-Users verwenden wollt:

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Passwort für die Konfigurationsdatei hashen. Das Bild zeigt ein Beispielpasswort.

Das Skript gibt euch ein gehaschtes Passwort zurück, welches ihr dann für password_secret bzw. root_password_sha2 in der /etc/graylog/server/server.conf verwenden könnt. Legt zudem auch den gerade erwähnten Wert für http_bind_address fest, damit ihr auf das Web-Interface von Graylog zugreifen könnt. Als IP vergebt ihr die gleiche statische IP-Adresse, die auch euer Debian-Server hat.

sudo nano /etc/graylog/server/server.conf

http_bind_address = 192.168.186.78:9000
password_secret = 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
root_password_sha2 = 
532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25

Speichert wieder mit STRG+S und schließt die Datei mit STRG+X. Dann kann Graylog endlich aktiviert und bei Systemstart mit hochgefahren werden. Dazu folgende Befehle eingeben:

sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
Graylog startet erfolgreich!

Es ist geschafft. Nun könnt ihr in einem Webbrowser die IP von Debian bzw. Graylog eingeben. Wenn alles funktioniert, sollte nun die GUI von Graylog erscheinen. Dort könnt ihr euch mit eurem zuvor festgelegten Passwort einloggen.

3. Graylog über server.conf anpassen

Graylog ist nun einsatzfähig und funktioniert. Macht euch gerne schon mit der GUI vertraut. Damit es später allerdings zu keinen Problemen beim Empfang von Syslog-Nachrichten kommt, sollten ein paar Anpassungen durchgeführt werden. Leider, und das finde ich schade, müssen diese Anpassungen hauptsächlich über das CLI gemacht werden.

Und das geschieht in der Konfigurationsdatei /etc/graylog/server/server.conf, welche wir bei der Installation bereits kennengelernt haben. Beim ersten Start von Graylog wird diese Datei von Graylog aber umgeschrieben, sodass wir die notwendigen Anpassungen erst in diesem Schritt vornehmen können.

Zeitzone korrigieren

Zunächst korrigieren wir die Zeitzone, mit der unser Admin-User im System arbeitet. Öffnet die Konfigurationsdatei und navigiert dann zum Eintrag „root_timezone“, kommentiert die Zeile aus und setzt den Wert „Europe/Berlin“ für die deutsche Zeitzone. Tut ihr dies nicht, funktioniert Graylog zwar, die Logdateien haben dann für den Admin-Benutzer aber einen falschen Zeitstempel in den Darstellungen.

# The time zone setting of the root user. See http://www.joda.org/joda-time/tim>
# Default is UTC
root_timezone = Europe/Berlin

E-Mail-Einstellungen anpassen

Und da wir bereits die server.conf-Datei geöffnet haben, legen wir direkt noch die Einstellungen für erfolgreichen E-Mail-Versand fest, welche sich im letzten Drittel der Datei befinden. Denkt daran, die Kommentarauszeichnung zu entfernen, bevor ihr die Einstellung entsprechend eurem E-Mail-Anbieter festlegt. Überprüft gegebenenfalls eure Firewall, damit Graylog auch zum Mailserver durchkommt.

# Email transport
transport_email_enabled = true
transport_email_hostname = smtp.mailserver.de
transport_email_port = 587
transport_email_use_auth = true
transport_email_auth_username = info@mailserver.de
transport_email_auth_password = Passwort
transport_email_subject_prefix = [graylog]
transport_email_from_email = info@mailserver.de
transport_email_use_tls = true
transport_email_use_ssl = false

Sobald wir fertig sind, können wir die Änderungen mit STRG+S speichern und anschließend den Editor mit STRG+X wieder verlassen.

Syslog-Port 514 UDP berechtigen

Eine letzte Anpassung per CLI wird noch benötigt. Dies ist immer dann notwendig, wenn System-Ports an Graylog gebunden werden sollen. Per Default fehlt Graylog zu allen Ports unter Port 1024 die Berechtigung und kann auf die Daten, welche an diesen Ports aufschlagen, nicht zugreifen.

Da wir aber später Syslog-Daten auf Port 514 per UDP von Aruba Instant empfangen wollen (und bei Aruba Instant leider keinen anderen Syslog-Port festlegen können), müssen wir Graylog mit den notwendigen Rechten für Port 514 UDP ausstatten.

Dazu installieren wir zunächst das Paket „authbind“, welches uns genau bei dieser Aufgabe hilft:

sudo apt-get install authbind -y

Dann öffnen wir die Datei /etc/default/graylog-server mit dem folgenden Befehl:

sudo nano /etc/default/graylog-server

In der Datei passen wir den Wert von „GRAYLOG_COMMAND_WRAPPER“ auf „authbind“ an, welches wir soeben heruntergeladen haben.

GRAYLOG_COMMAND_WRAPPER="authbind"

Die Datei wird dann wieder mit STRG+S gespeichert und mit STRG+X geschlossen. Im Anschluss nutzen wir Authbind, um per CLI die Rechte an Graylog zu manövrieren:

sudo touch '/etc/authbind/byport/!514'
sudo chown graylog:graylog '/etc/authbind/byport/!514'
sudo chmod 755 '/etc/authbind/byport/!514'

Startet abschließend den Debian-11-Server einmal neu, damit alle Einstellungen sauber und korrekt von Graylog übernommen und verarbeitet werden.

sudo reboot

4. Index, Input und Stream anlegen

Nachdem alle Vorbereitungen erledigt sind, können wir schließlich Graylog so konfigurieren, dass es Daten von Aruba Instant per Syslog entgegennimmt. Und ja, der gesamte Vorgang ist diesmal bequem per GUI im Browser machbar!

Index für Aruba Instant anlegen und Speicherdauer festlegen

Als erstes müssen wir einen eigenen Index in Graylog erstellen, welcher sämtliche Daten speichert, die von Aruba Instant in Graylog ankommen. Der Schritt ist optional, hilft euch aber, die Daten sauber im System abzulegen und zu verwalten.

Index in Graylog erstellen: Alle Daten von Aruba Instant sollen hier rein.

Im Hauptmenü unter „System -> Indices“ wird über den Knopf „Create index set“ ein neuer Index angelegt. Vergebt die Werte wie im Beispiel und passt die Werte unter „Rotation Period“ und „Max number of indices an“, um die Speicherdauer der Dateien festzulegen.

TitleAruba Instant
DescriptionAruba Instant Syslog 514
Index shards4
Index replicas0
Max. number of segments1
Field type refresh interval5 seconds
Select rotation strategyIndex Time
Rotation period (ISO8601 Duration)P1M
Select retention strategyDelete Index
Max number of indices24
Einstellungen für den neuen Index.

Zur Erklärung von „Select rotation strategy“, „Rotation period“, „Retention strategy“ und „Max number of indices“: Mit den oben genannten Einstellungen wird der Index nach einem Monat gewechselt (P1M). So wächst der Index nicht ins Unendliche, die schnelle Durchsuchbarkeit der Daten bleibt gegeben. Monat für Monat wird der Index gewechselt, bis zu einer maximalen Anzahl von 24 Indizes. Jeder Index beinhaltet 1 Monat, insgesamt also 24 Monate an Daten. In Monat 25 wird der erste Index gelöscht, bevor ein neuer Index angelegt werden darf. Das Logging beinhaltet also immer die letzten zwei Jahre. Der Zeitraum ist komplett durchsuchbar.

Achtung: Wenn ihr sehr wenig Speicherplatz habt (zum Beispiel auf dem Raspberry Pi), müsst ihr die Speicherdauer bitte passend reduzieren.

Input für UDP Syslog einrichten

Im vorherigen Schritt haben wir die Datenbank, den sogenannten Index, für die Daten aus Aruba Instant erstellt. Nun bereiten wir Graylog so vor, dass es die Daten von Aruba Instant entgegennimmt. Dazu nutzen wir das Hauptmenü und navigieren zu „System -> Inputs“.

Im Auswahlfenster wird nun „Raw/Plaintext UDP“ ausgewählt. Anschließend auf den Knopf „Launch new input“ klicken und die Feineinstellungen vornehmen.

Den Input für Syslog UDP auf Port 514 einrichten.

Aktiviert nun die Option „Global“, vergebt einen aussagekräftigen Titel, legt den Port auf 514 fest und lasst die restlichen Einstellungen im Standard. 514 ist der UDP-Port von Aruba Instant für Syslog.

Speichert den Input nun und vergesst danach nicht, den Input zu starten. Nutzt dazu die entsprechende Schaltfläche. Erst dann ist Graylog bereit für den Datenstrom und nimmt diesen entgegen. Ist der Input gestoppt, verwirft Graylog alle Datenpakete, die am Port eingehen. Startet der Input nicht, habt ihr einen Fehler beim Authbind gemacht.

Stream für Aruba Instant anlegen

Sobald Aruba Instant nun Daten an den Syslog-Server schickt, nimmt Graylog die Daten entgegen und speichert sie im Default Index. Das wollen wir so nicht, schließlich haben wir gerade eben extra dafür einen eigenen Index mit 24 Monaten Laufzeit angelegt. Dort sollen die Daten nun abgelegt werden.

Dazu nutzen wir das Hauptmenü unter „Streams“ und legen mit der Schaltfläche „Create Stream“ einen neuen Stream für Aruba Instant an. Wir vergeben sowohl einen treffenden Titel als auch eine passende Beschreibung. Als Index Set wählen wir den eigens dafür angelegten Index „Aruba Instant“ an. Wichtig: Setzt unbedingt den Haken bei „Remove matches from ‘All messages’ stream“, damit die Daten nicht doppelt gespeichert werden.

Der Stream verbindet Input und Index.

Der Stream ist nun angelegt. Bevor er gestartet werden kann, müssen die Kriterien festgelegt werden, welche darüber entscheiden, wie er die Daten verarbeitet.

Wir wollen folgendes festlegen: Alle Daten, welche über den vorhin erstellen Input in Graylog eingehen, sollen im passenden Index „Aruba Instant“ gespeichert werden, aber nur, wenn der Absender der Dateien einer meiner WLAN-Access-Points ist.

Nachdem der Stream also erstellt wurde, können die passenden Kriterien über die Schaltfläche „Manage Rules“ festgelegt werden. Über „Add stream rule“ lege ich fest, dass die Datenquelle (also „source“) exakt mit der IP-Adresse meines Access Points übereinstimmen muss. Ich verwende aktuell 3 Access Points, also lege ich eine Regel für jede dieser IP-Adressen an. Wichtig: Legt als Filtermodus fest, dass nur eine der Regeln greifen muss, sonst widersprechen sich die Kriterien. Immerhin kann jede Syslog-Meldung nur eine Quelle haben.

Im Stream werden die Bedingungen festgelegt, die eintreffen müssen, damit die Daten in den Aruba-Index verschoben werden.

Habt ihr die Regeln angelegt, bestätigt die Einstellung und vergesst im Anschluss nicht, den Stream mit der entsprechenden Schaltfläche zu starten. Ansonsten landen die Daten von Aruba nach wie vor im Default Index.

5. Aktivieren von Syslog unter Aruba Instant

Apropos Daten. Graylog ist nun vorbereitet und wartet auf die passenden Daten. Noch kommt aber nichts am Syslog-Server an. Dies möchten wir nun ändern. Dazu loggen wir uns bei Aruba Instant ein und passen die Parameter für Syslog an.

Dazu wechseln wir unter „Konfiguration -> System -> Erweiterte Optionen einblenden“ auf den Bereich „Überwachung“. Unter Server kann nur der Syslog-Server spezifiziert werden. Gebt hier die IP-Adresse des Debian-11-Graylog-Servers ein.

Syslog-Server wird in Aruba Instant angegeben.

Log-Level einstellen

Wichtig sind nun die Syslog-Funktionsstufen, die sogenannten Log-Level. Vergebt die Einstellung wie in meinem Beispiel, damit Graylog die notwendigen Daten bekommt, um als IDS zu fungieren.

SyslogDebug
SystemFehler
AP-DebugDebug
BenutzerFehler
NetzwerkFehler
Benutzer-DebugFehler
SicherheitWarnung
WLANFehler
Log-Level in Aruba Instant, damit die notwendigen Log-Meldungen überhaupt erzeugt werden.

Natürlich könnt ihr auch mehr Logdateien erheben und zum Beispiel alle Log-Level auf „Debug“ stellen. Dann fallen bisweilen aber sehr viele Daten an.

Wichtig ist hier vor allem, den Log-Level im Bereich Sicherheit auf mindestens die Stufe „Warnung“ zu stellen. Sonst fehlt in den Logs die Information, wenn eine fehlerhafte PSK eingegeben wurde.

Zudem müsst ihr im Bereich Syslog und AP-Debug den höchsten Log-Level „Debug“ nutzen, ansonsten sehen wir die erfolgreichen, fehlerfreien Anmeldungen im WLAN nicht in den Logdaten. Doch genau diese Informationen benötigen wir für das Intrusion Detection System.

Speichert die Einstellungen in Aruba Instant ab. Ab sofort schicken alle Access Points im Cluster die Daten an Graylog. Passt gegebenenfalls eure Firewall an, damit die APs auch zum Syslog-Server durchkommen.

6. Parameter für WLAN-Ereignisse festlegen

Wechselt nun zurück zu Graylog. Dort sollten nun die Daten von Aruba Instant ankommen und im korrekten Index landen. Überprüft sowohl Input, Index und Stream, welche euch die aktuelle Übertragungsrate bzw. die Log-Meldungen in Echtzeit anzeigen.

Wenn alles funktioniert, geht es im nächsten Schritt jetzt darum, die relevanten Log-Meldungen zu identifizieren, die wir für das IDS benötigen. Wir müssen genau diejenigen Ereignisse herausfiltern, welche erzeugt werden, wenn ein falsches WLAN-Passwort bei einem Verbindungsversuch eingegeben wird oder ein Endgerät sich erfolgreich im WLAN mit richtiger PSK authentifiziert, uns jedoch unbekannt ist.

Fehlerhafter Login-Versuch mit falschem PSK

Stimmt beim Verbindungsversuch der WLAN-Schlüssel (PSK) nicht mit dem WLAN überein, schlägt der sogenannte 4-Way-Handshake fehl. Die WLAN-Schlüssel können nicht vollständig ausgetauscht werden und die Verbindung mit dem WLAN kann nicht fortgeführt werden.

Konkret bedeutet das: Passt das Passwort nicht zum WLAN, schlägt Schritt 2 im Handshake fehl. In den Logs weist Aruba auf diesen Zustand mit der Warnung „MIC failed in WPA2 Key Message 2 from Station“ hin, gefolgt von den Details zur MAC-Adresse des Endgeräts, welches den Verbindungsversuch gestartet hat.

Wenn wir in der Suchfunktion von Graylog genau nach dieser Phrase suchen, werden uns alle fehlerhaften Verbindungsversuche angezeigt.

Log-Meldungen, bei denen der 4-Way-Handshake in Schritt 2 fehlschlägt.

Sollten die Suchergebnisse keine Treffer vorweisen, kam es bisher zu keinem fehlerhaften Verbindungsversuch. Versucht euch dann mit eurem WLAN zu verbinden, gebt aber ein falsches Passwort ein. Wiederholt nun im Anschluss die Suche in Graylog. Ihr solltet dann den fehlerhaften Verbindungsversuch in den Suchergebnissen vorfinden.

Anmerkung: Wenn ihr euer WLAN nicht über Aruba Instant Access Points betreibt, solltet ihr zunächst einen fehlerhaften Verbindungsversuch erzeugen. Stellt vorher das maximale Log-Level an eurem WLAN-Router ein. Überprüft dann die Log-Meldungen in Graylog, um diejenigen Meldungen zu identifizieren, die in Verbindung mit dem Verbindungsversuch unter falschem Passwort stehen. Verwendet dann den dort verwendeten Wortlaut, um die Suchabfrage zu bauen.

Erfolgreiche Authentifizierung eines unbekannten Endgerätes

Ähnlich gehen wir nun vor, um erfolgreiche Anmeldungsversuche mit korrektem Passwort zu identifizieren. Aruba Instant meldet derartige Ereignisse mit folgender Debug-Info „/event/clients/client{xx:xx:xx:xx:xx:xx}/wpa2_key4 success“, wobei die MAC-Adresse natürlich korrekte Werte beinhaltet.

Wenn wir in Graylog nun nach der Phrase „/wpa2_key4 success“ suchen, erhalten wir alle erfolgreichen Verbindungsversuche von Endgeräten im eigenen WLAN. Und das können durchaus viele Ergebnisse sein, je nachdem wie viele Endgeräte ihr habt oder wieviel Roaming-Vorgänge zwischen APs die Regel sind.

Für mein WLAN Intrusion Detection System (IDS) möchte aber nur diejenigen Verbindungsversuche sehen, welche von Geräten stammen, die ich nicht kenne. Mir bekannte Endgeräte möchte ich daher von der Beobachtung ausschließen. Graylog bietet dazu logische Operatoren an, mit denen ich meine Ergebnisse verfeinern kann. Der folgende Suchstring beinhaltet alle Meldungen, welche „/wpa2_key4 success“ beinhalten, sofern sie nicht auch eine der mit aufgeführten MAC-Adressen beinhaltet:

"/wpa2_key4 success" AND NOT ("xx:xx:xx:xx:xx:xx" OR "xx:xx:xx:xx:xx:xx" OR "xx:xx:xx:xx:xx:xx" OR "xx:xx:xx:xx:xx:xx")

Nur wenn „/wpa2_key4 success“ Teil des Ergebnisses ist, gleichzeitig aber keine der mir bekannten oben aufgeführten MAC-Adressen in der Log-Meldung steckt, habe ich ein Endgerät identifiziert, das sich mit korrektem WLAN-Passwort in mein WLAN authentifiziert, aber keines meiner Endgeräte ist.

Suchstring zeigt alle Log-Meldungen an, wenn unbekannte Endgeräte erfolgreich im WLAN einbuchen.

Mit dieser Information kann ich das Endgerät dann überprüfen und gegebenenfalls sofort mein WLAN-Passwort ändern.

7. IDS scharf schalten: Alarme und E-Mail-Benachrichtigung

So weit so gut. Selbstverständlich möchte ich nicht jede Minute manuell im Graylog nachsehen müssen, ob Endgeräte mit falschem Passwort in mein WLAN wollen oder ob sich mir unbekannte Geräte im WLAN befinden. Das wäre kein wirkliches Intrusion Detection System für mein WLAN, nicht wahr? Vielmehr möchte ich automatisch und in Echtzeit informiert werden, wenn einer der beiden Fälle eintritt.

Graylog bietet dazu die Möglichkeit zur Erstellung von Alarmen. Für jeden Alarm kann in Echtzeit eine E-Mail an einen beliebigen Empfängerkreis verschickt werden. Bei fehlerhaften Anmeldeversuchen oder unbekannten Geräte im WLAN kommt so sofort die passende Information per eMail.

Die entsprechende Funktion von Graylog findet sich im Hauptmenü unter „Alerts“. Ein Alarm wird dabei über eine Suchabfrage definiert. Immer dann, wenn diese Suchabfrage zu einem Ergebnis führen würde, wird der Alarm ausgelöst. Gleichzeitig kann dann die Notification getriggert werden.

Alle Alarme auf einen Blick.

Erstellt zunächst zwei Notifications im entsprechenden Bereich („Notifications -> Create Notification“). Vergebt dazu Titel, Beschreibung sowie den Notification Type „Email Notification“. Vergebt dort die Informationen zu Betreff, Empfänger und passt, wenn ihr wollt, das eMail-Template an. Ich verwende folgende vereinfachte Vorlage:

--- [Event Definition] ---------------------------
${event_definition_description}
${event.timestamp}
${if backlog}
--- [Backlog] ------------------------------------
Last messages accounting for this alert:
${foreach backlog message}
${message}
${end}
${end}
<table width="100%" border="0" cellpadding="10" cellspacing="0" style="background-color:#f9f9f9;border:none;line-height:1.2"><tbody>
<tr style="line-height:1.5"><th colspan="2" style="background-color:#e6e6e6;text-align: left;">Event Definition</th></tr>
<tr><td>${event_definition_description}</td></tr>
<tr><td>${event.timestamp}</td></tr>
</tbody></table>
${if backlog}
<br /><table width="100%" border="0" cellpadding="10" cellspacing="0" style="background-color:#f9f9f9;border:none;line-height:1.2"><tbody>
<tr><th style="background-color:#e6e6e6;line-height:1.5;text-align: left;">Backlog (Last messages accounting for this alert)</th></tr>
${foreach backlog message}
<tr><td>${message}</td></tr>
${end}
</tbody></table>
${end}

Testet unbedingt, ob die Notification bei euch im Postkorb ankommt. Nutzt dazu die passende Schaltfläche. Sollte der Versand fehlschlagen, müsst ihr die E-Mail-Einstellungen in der Graylog-Konfiguration überprüfen.

Legt sowohl eine Notification für fehlerhaften Login-Versuch mit falschem PSK als auch für erfolgreiche Authentifizierung eines unbekannten Endgerätes an, dann seid ihr flexibel.

Die erstellte Benachrichtigung.

Alarm bei fehlerhaftem Login-Versuch mit falschem PSK

Die Notifications können nun einem Alarm zugewiesen werden. Dazu wird im Bereich „Event Definitions -> Create Event Definition“ eine neue Event-Definition erstellt. Es folgt ein mehrstufiger Prozess, bei dem die Auslöser sowie Benachrichtigungen zum Alarm definiert werden.

Folgt einfach der Bildgalerie. Schritt 1 fragt grundlegende Parameter wie Titel und Beschreibung ab. Beides wird in der Alarmübersicht und den E-Mail-Benachrichtigungen verwendet.

Legt in Schritt 2 als unter Condition Type „Filter & Aggregation“ fest und gebt bei Search Query genau denjenigen String sein, welchen ihr in Kapitel 6 identifiziert habt. In meinem Fall ist das „MIC failed“. Wählt dann noch den Aruba-Stream aus. Legt gleiche Werte für Suchzeitraum und Suchintervall fest. Ich möchte in Echtzeit informiert werden, daher wähle ich für beide Werte 1 Sekunde. Vergesst den Haken bei „Enable“ nicht, damit die Alarme auch wirklich erzeugt werden. Zuletzt wählt ihr in die Option „Filter has results“, damit ihr jedes Mal benachrichtig werdet, wenn ein Ereignis eintritt.

Schritt 3 kann übersprungen werden, während in Schritt 4 die Notification für den Alarm zugewiesen wird. Wählt die passende Notification aus und bestätigt dann unbedingt mit der Schaltfläche „Done“, bevor ihr den bei den Notification Settings den Wert für „Message Backlog“ auf 1 festlegt. Dann schließt ihr den Prozess mit „Next“ und einem Blick auf die Zusammenfassung ab. Dort müsst ihr erneut mit „Done“ bestätigen.

Alarm bei erfolgreicher Authentifizierung eines unbekannten Endgerätes

Wiederholt den gesamten Prozess und legt einen zweiten Alarm für die erfolgreiche Authentifizierung eines unbekannten Endgerätes an. Nutzt dazu wieder den Suchstring aus dem obigen Kapitel.

Alle Alarme sind eingerichtet. Das WLAN Intrusion Detection System ist scharf und informiert euch, wer in eurem WLAN ist.

Und Glückwunsch, ihr habt euch euer eigenes WLAN Intrusion Detection System gebaut! Damit könnt ihr sehr einfach und in Echtzeit sehen, was in eurem WLAN vor sich geht. Wer nutzt euer WLAN, wann und womit? Wer versucht sich mit fehlerhaftem Passwort zu verbinden? Analysiert alles bequem in Graylog oder lehnt euch entspannt zurück, bis ein entsprechender Alarm per eMail eingeht. Dann könnt ihr reagieren.

So seid ihr immer auf der sicheren Seite und habt die volle Kontrolle über euer WLAN. Denn nur wer weiß was passiert, kann entsprechende Vorkehrungen treffen!