Schritt 1 – Betriebssystem herunterladen und einrichten
Schritt 2 – Raspbian anpassen und Software installieren
Schritt 3 – Wifi-Shepherd Skript anpassen und Maildienst konfigurieren
Update 2020-05-11: Dar erste Release eines Wifi-Shepherd Abbildes (540 MB) ist nun als Download verfügbar. Dazu die 7zip-Datei herunterladen und entpacken. Dann das Image auf die SD Karte schreiben und für das Setup den Anweisungen auf der Github-Seite folgen. Im zweiten Teil der Artikelserie haben wir einige optionale Veränderungen bzw. Verbesserungen vorgenommen.
Was ist der Wifi-Shepherd?
Der Wifi-Shepherd ist ein kleines Werkzeug auf der Basis eines Raspberry Pi Zero W mit dessen Hilfe Sie kleine WLAN Netzwerke (z.B. zu Hause) stromsparend überwachen können.
Er scannt in regelmäßigen Abständen das Netzwerk und lernt, welche Geräte darin aktiv sind. Das Ergebnis stellt er auf einer übersichtlichen Webseite dar, die dann über das Netzwerk abgerufen werden kann.
Wird ein neues Gerät in Ihrem WLAN erkannt, so sendet er eine E-Mail mit den relevanten Informationen.
Was ist der Wifi-Shepherd nicht?
Das Gerät ergreift keine weiteren Schutzmaßnahmen, wenn sich z.B. ein Angreifer im Netzwerk befindet. Sie müssen anhand der zugestellten E-Mail selbst entscheiden, ob es sich um einen legitimen Nutzer bzw. Gerät handelt.
Wie arbeitet der Wifi-Shepherd?
Da der Raspberry Pi Zero W standardmäßig über WLAN verfügt, erfolgt die gesamte Kommunikation über diese Schnittstelle. Um seine Arbeit verrichten zu können, benötigt er also nur den Strom eines externen Gerätes, eines Netzteils oder einer Power Bank.
Das Gerät ist optional mit einem USB-A Addon Board ausgestattet. Das bedeutet, dass er an fast allen Geräten verwendet werden kann, die Strom über eine USB-Schnittstelle zur Verfügung stellen. Wer möchte, der kann das Gerät auch über die USB-Schnittstelle des Raspberry mit einem Kabel verbinden.
Der Wifi-Shepherd muss einmalig vom Nutzer im lokalen WLAN eingerichtet werden und speichert dann alle relevanten Daten. Dabei lernt er, welche Geräte sich im Netzwerk befinden und behält diese Informationen auch, wenn er mal abgeschaltet wurde.
Als Betriebssystem wird Raspbian Buster Lite verwendet, das die meisten Komponenten wie Nmap, Python und ssmtp bereits an Bord hat. Der Rest wird von verschiedenen Skripten erledigt.
Der Wifi-Shepherd verwendet den freien Portscanner Nmap, um das WLAN-Netzwerk in bestimmten Zeitabständen zu scannen. Das Ergebnis wird zunächst über die Option -oN in eine Datei umgeleitet. Eigentlich wir nur ein sogenannter „Ping Sweep“ (-sP) über den gesamten Netzwerkbereich durchgeführt. Es erfolgt weder ein Portscan, noch werden die laufenden Services auf den angeschlossenen Geräten getestet. Da wir die MAC-Adressen der verbundenen Geräte ermitteln wollen, muss Nmap zwingend mit administrativen Rechten (sudo) gestartet werden.
Das Ergebnis wird dann in eine csv-Datei umgewandelt. Dies erfolgt mit Hilfe eines Python-Skriptes von Thomas D. (maaaz). Um alles darstellen zu können, wird die html-Ausgabe über ein Shell-Skript genierte und mit Hilfe von DataTables ausgegeben.
In diesem ersten Teil werden wir zeigen, wie Sie den Wifi-Shepherd installieren und einrichten. Der zweite Teil ist für zusätzliche Informationen vorbehalten und soll weitere Einblicke in die Funktionsweise des Wifi-Shepherd geben.
Wifi-Shepherd installieren und einrichten in drei Schritten
Schritt 1 – Betriebssystem herunterladen und einrichten
Als Grundlage wird das „Raspbian Buster Lite“ Abbild benötig, das ca. 450 MB umfasst. Das aktuelle Image kann auf der Produkt-Webseite heruntergeladen werden.
Entpacken Sie die ZIP-Datei und schreiben Sie die darin enthaltene IMG-Datei auf die Speicherkarte. Dafür können Sie Ihre bevorzugte Software entsprechend Ihres Betriebssystems verwenden. Unter Windows hat sich der Win32DiskImager bewährt. Eine kurze Anleitung finden Sie z.B. hier.
Nun müssen Sie noch folgende zwei Dateien erstellen, die ebenfalls im Wurzelverzeichnis der Boot-Partition zu platzieren sind:
ssh
wpa_supplicant.conf
Die Datei ssh ist leer und kann so übernommen werde. In der Datei wpa_supplicant.conf müssen Sie die Informationen Ihres WLAN-Netzwerkes hinterlegen, damit sich der Wifi-Shepherd dort einloggen kann. Passen Sie daher die Variablen „ssid“ und „psk“ Ihren Bedingungen an. Leider ist das Passwort hier in Klartext anzugeben, was ein stückweit unsicher ist. Beachten Sie dies, wenn Sie den Wifi-Shepherd verwenden:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
ssid="your-SSID"
scan_ssid=1
psk="your-Password"
}
In einigen Fällen scheint es erforderlich zu sein das Managementprotokoll anzugeben. Das würde dann wie folgt aussehen:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
ssid="your-SSID"
scan_ssid=1
psk="your-Password“
proto=WPA
key_mgmt=WPA-PSK
}
Ich empfehle erstmal mit der oberen Datei zu beginnen und dann evtl. auf die zweite Variante auszuweichen.
Sollten Sie diese Datei unter Windows (z.B. mit Notepad++) schreiben, so muss darauf geachtet werden, dass sie im Unix-Format abgelegt wird. Die Einstellungen in Notepad++ findet man und Bearbeiten – Format Zeilenende. Siehe dazu auch folgende weitere Informationen.
Erfolgskontrolle für Schritt 1
Sie sollten nun in der Lage sein, einen ping auf den Wifi-Shepherd abzusetzen. Dies könnte je nach Netzwerkeinstellungen per Hostname raspberry oder auf die IP-Adresse erfolgen. Notfalls müssen Sie diese über Ihren WLAN-Router ermitteln. Wenn alles funktioniert, empfehle ich später dem Wifi-Shepherd über den DHCP-Server eine feste IP-Adresse zu vergeben.
Als nächstes loggen Sie sich per ssh über den Hostnamen oder der IP-Adresse mit folgendem Befehl ein. Als Passwort verwenden Sie raspberry:
ssh pi@IP-Adresse
Über folgenden Befehl können Sie nochmals prüfen, ob die WLAN-Netzwerkeinstellungen greifen und der Wifi-Shepherd das Internet erreichen erreicht.
sudo service dhcpcd status
ping google.de
Schritt 2 – Raspbian anpassen und Software installieren
Wir sind immer noch mit dem Wifi-Shepherd per ssh verbunden und werden mit Hilfe des Konfigurationswerkzeuges weitere Einstellungen vornehmen. Dazu rufen Sie das Programm wie folgt auf:
sudo raspi-config
Nutzen Sie die erste Option, um ein neues Passwort festzulegen.
Danach wechseln Sie in die Option 4 und dort zu I1 um die regionalen Einstellungen vorzunehmen.
Wählen Sie nun über die Option I2 die Zeitzone für Ihre Region aus und passen bei Notwendigkeit die Tastatureinstellungen mit der Option I3 an.
Bevor Sie ein Update des Betriebssystems vornehmen, sollte Sie zunächst prüfen, ob der gesamte Speicherbereich Ihrer SD-Karte für den Wifi-Shepard nutzbar ist. Hierzu wechseln Sie mit der Option 7 in die „Advanced Options“ und wählen dort die Option A1 aus. Nach einem Neustart des Wifi-Shepherd sollte dann die gesamte Kapazität zur Verfügung stehen.
Nun kann ein Update der Software mit folgendem Befehl durchgeführt werden:
sudo apt update && sudo apt upgrade
Beachten Sie hierbei, dass der Raspberry Pi nicht der schnellste ist und das Update über das Internet je nach verfügbarer Geschwindigkeit ein wenig dauern kann.
Jetzt wird es Zeit, die benötigten Software Pakete für den Wifi-Shepherd zu installieren. Dies erledigt folgende Kommandozeile:
sudo apt install nmap python apache2 ssmtp mailutils git
Ich habe mich hier für den Apache-Webserver entschieden, da das Paket für Raspbian verfügbar ist. Natürlich könnte auch ein anderes Produkt Verwendung finden. Da bereits Python installiert ist, könnte alternativ auch ein einfacher Webserver über folgenden Befehl z.B. auf dem Port 9000 realisiert werden:
python -m SimpleHTTPServer 9000
Der Apache Webserver wird nach dem Reboot automatisch gestartet. Falls dies bei Ihnen nicht der Fall sein sollte, können Sie dies mit folgender Kommandozeile aktivieren:
sudo update-rc.d apache2 enable
Zum Abschluss dieses Schrittes wechseln sie nochmal in das Verzeichnis /home/pi/ und laden von Github das Wifi-Shepherd Repository und das Python-Skript von Thomas D. herunter. Beachten Sie dabei genau die Reihenfolge der folgenden Kommandos:
cd /home/pi
git clone https://github.com/eaglefn/wifi-shepherd.git
cd wifi-shepherd
git clone https://github.com/maaaaz/nmaptocsv.git
chmod +x csvtohtml.sh wifi-shepherd.sh
Erfolgskontrolle für Schritt 2
Jetzt sollten alle relevanten Dateien auf dem Wifi-Shepherd vorhanden sein und die notwendigen Dienste laufen. Prüfen Sie, ob die Daten im richtigen Verzeichnis vorliegen und der Apache-Service gestartet ist.
Schritt 3 – Wifi-Shepherd Skript anpassen und Maildienst konfigurieren
Öffnen Sie dazu das Skript wifi-shepherd.sh und nehmen dazu die notwendigen Einstellungen am Kopf des Skriptes vor. Wichtig sind vor allem folgende Parameter:
# Make your settings here!
Wifi_Shepherd_Hostname="raspberrypi.lan"
Wifi_Network="192.168.1.0/24"
EmailReceiver="your@email.com"
Der Hostname wir benötigt, um den Wifi-Shepherd selbst bei den Netzwerkscans auszuschließen. Er wird für Ihr System mit folgendem Befehl ermitteln:
hostname -A
Außerdem sind der Netzwerkbereich Ihres WLAN-Netzes und der gewünschte Empfänger der E-Mails anzugeben.
Um E-Mail versenden zu können, müssen Sie über einen entsprechenden Account verfügen. Hier wird die Installation anhand eines Freemail-Kontos bei GMX erläutert. Ich gehe im Weiteren davon aus, dass die Zugangsdaten und die entsprechende E-Mail-Adresse bekannt sind.
Die notwendigen Komponenten für den E-Mail-Versand haben wir bereits im vorhergehenden Schritt installiert. Nun müssen nur noch die Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases angepasst werden.
sudo nano /etc/ssmtp/ssmtp.conf
Verwenden Sie hier die Zugangsdaten für Ihren Account:
root=email@gmx.de
mailhub=mail.gmx.net:465
AuthUser=email@gmx.de
AuthPass=Passwort
UseTLS=YES
rewriteDomain=gmx.net
hostname=gmx.net
FromLineOverride=NO
Jetzt noch die zweite Datei:
sudo nano /etc/ssmtp/revaliases
Gehen Sie hier analog wie oben vor:
root:email@gmx.de:mail.gmx.net:465
pi:email@gmx.de:mail.gmx.net:465
Das war es fast auch schon. GMX hat für das versenden von E-Mails, noch eine zusätzliche Sicherheit eingebaut, die Sie aktivieren müssen, wenn E-Mails nicht über den Webmail-Client verschickt werden. Gehen Sie dazu in die Einstellungen und setzen ein Harken bei „POP3 und IMAP Zugriff“ erlauben.
Erfolgskontrolle für Schritt 3
Wenn alles richtig eingestellt ist und die Zugangsdaten stimmen, sollte Sie eine Testmail über folgendes Kommando absetzen können:
echo "Hello world email body" | mail -s "Test Subject" empfaenger@domain.com
Damit der Wifi-Shepherd seine Scans in bestimmten Zeitabschnitten durchführen kann, wird zum Abschluss noch ein cronjob eingerichtet. Rufen Sie dazu folgenden Befehl auf tragen hier die gewünschten Daten ein:
crontab -e
In unserem Beispiel soll der Wifi-Shepherd alle 10 Minuten seine Arbeit verrichten:
*/10 * * * * /home/pi/wifi-shepherd/wifi-shepherd.sh
Siehe auch Github Projektseite. Im zweiten Teil der Artikelserie werden wir einige optionale Veränderungen bzw. Verbesserungen am Wifi-Shepherd vornehmen.