Einleitung
Der Raspberry Pi ist ein vielseitiger Mini-Computer, der sich ideal für eine Vielzahl von Projekten eignet, von Heimautomatisierung bis hin zu Servern. Ein Headless Setup, bei dem der Raspberry Pi ohne Monitor, Tastatur oder Maus betrieben wird, ist besonders nützlich für Serveranwendungen oder wenn der Pi an einem schwer zugänglichen Ort betrieben wird. In diesem Artikel führen wir durch die Schritte, um einen Raspberry Pi für ein Headless Setup einzurichten.
Im Bereich der Heimautomatisierung, in dem ich meine Raspberry Pis einsetze, sollte die Sicherheit keinesfalls vernachlässigt werden. Daher gehe ich hier auf einige grundlegende Sicherheitsmaßnahmen ein, die dazu beitragen, das System vor unerwünschten Zugriffen und potenziellen Bedrohungen zu schützen.
Vorbereitung
Benötigte Materialien
- Raspberry Pi (Modell je nach Bedarf)
- MicroSD-Karte (mindestens 8 GB empfohlen)
- Raspberry Pi Imager (am Besten von der offiziellen Raspberry Pi Website herunterladen bzw. für Linux aus dem snap Store)
- Netzwerkkabel oder WiFi-Adapter / Zugang
Raspberry Pi Imager herunterladen und installieren
- Besuche die offizielle Raspberry Pi Download-Seite.
- Lade den Raspberry Pi Imager für dein Betriebssystem herunter.
- Installiere den Imager gemäß den Anweisungen für dein Betriebssystem.
Headless Setup mit Raspberry Pi Imager
Betriebssystem auswählen
- Öffne den Raspberry Pi Imager.
- Klicke auf “Choose OS” und wähle das gewünschte Betriebssystem aus. Für ein Headless Setup ist “Raspberry Pi OS Lite” eine gute Wahl, da es ohne grafische Oberfläche kommt. Je nach Modell muss entweder die 64-bit oder die 32-bit Variante ausgewählt werden.
SD-Karte vorbereiten
- Lege die MicroSD-Karte in den Kartenleser des Computers ein.
- Wähle im Raspberry Pi Imager unter “Choose SD Card” die entsprechende SD-Karte aus.
Konfiguration vor dem Flashen
- SSH aktivieren: Klicke auf das Zahnradsymbol für erweiterte Einstellungen. Aktiviere SSH, um später eine Remote-Verbindung herstellen zu können.
- Benutzer einrichten: Lege einen Benutzernamen und ein sicheres Passwort fest.
- WiFi konfigurieren: Gebe deine WiFi-Netzwerkdetails ein, falls du eine drahtlose Verbindung verwenden möchtest.
- SSH-Schlüssel statt Passwort: Für erhöhte Sicherheit solltest du SSH-Schlüssel einrichten. Lade deinen öffentlichen Schlüssel hoch.
SSH Sicherheit
Ich empfehle einen beliebigen Benutzernamen zu vergeben, welcher ausser root. Das hat den Vorteil, dass ein Angreifer nicht nur das Passwort “erraten” muss, sondern zusätzlich noch den Benutzernamen. Im Falle von root hätte er diesen nämlich bereits, da das unter Linux basierten Systemen früher automatisch der erste User war.
Um die Sicherheit beim Zugriff über SSH zu erhöhen, empfehle ich, den Login über Passwort zu deaktivieren und nur über ssh keys zu authentifizieren. Dafür gehen wir wie folgt vor:
Sicherstellen, dass auf dem normalen PC / Laptop ein ssh key vorhanden ist.
Unter Linux wäre das zB:
cat ~/.ssh/id*.pub
Dann hinterlege den ssh key im Imager.
TODO Prüfen: Im Imager gibt es eine Checkbox um den remote Zugriff über Passwort zu sperren. Falls du dich das hier noch nicht traust, kannst du das auch später nachholen, wenn du erfolgreich über SSH verbinden kannst.
Flashen des Betriebssystems
Klicke auf “Write”, um das Betriebssystem auf die SD-Karte zu flashen.
Warte bis der Vorgang abgeschlossen ist, und entferne die SD-Karte sicher vom Computer.
Erstes Hochfahren und Verbindung herstellen
SD-Karte einlegen und Raspberry Pi starten
- Lege die geflashte SD-Karte in den Raspberry Pi ein.
- Schließe den Raspberry Pi an die Stromversorgung an, um ihn zu starten.
Verbindung über SSH herstellen
Öffne ein Terminal auf Ihrem Computer.
Stelle eine SSH-Verbindung mit dem Befehl ssh user@raspberrypi.local
her, wobei “user” der von Ihnen gewählte Benutzername ist und raspberrypi.local der Rechner – dies kann je nach Netzwerksetup mit der IP Adresse ersetzt werden müssen.
Gib dein Passwort ein, wenn du dazu aufgefordert wirst – idealerweise sollte das nicht der Fall sein, da wir ja den öffentlichen SSH Schlüssel deines Rechners hinterlegt haben.
Security Hardening
Grundsätzlich sollte vor dem Heimnetzwerk immer ein Router bzw. eine Firewall stehen, welche erstmal keine Zugriffe nach Innen weitergeben. Diese sollte nur punktuell für von Aussen genutzte Services geöffnet werden.
Da ich in einem Artikel aber nicht alle möglichen IT / sicherheitsrelevanten Aspekte abdecken kann, fokussiere ich mich hier auf die Maßnahmen, die wir am Raspberry Pi treffen sollten.
System aktualisieren
- Führe die folgenden Befehle aus, um das System zu aktualisieren:
sudo apt update && sudo apt upgrade
Automatische Updates einrichten
Um sicherzustellen, dass der Raspberry Pi immer auf dem neuesten Stand ist, sollte man automatische Updates einrichten. Dies ist besonders wichtig für die Sicherheit des Systems.
Installiere das unattended-upgrades-Paket:
sudo apt install unattended-upgrades
Konfiguriere unattended-upgrades:
Öffne die Konfigurationsdatei mit einem Texteditor, z.B. Nano:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Stelle sicher, dass die folgenden Zeilen enthalten sind und nicht auskommentiert sind:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}"; "${distro_id}:${distro_codename}-security"; "${distro_id}ESM:${distro_codename}"; };
Speichere die Datei und schließe den Editor.
Aktivieren und starte den unattended-upgrades Dienst:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Überprüfe die Protokolle:
Die Protokolle der automatischen Updates findest du in /var/log/unattended-upgrades/
. Du kannst diese mit folgendem Befehl anzeigen:
cat /var/log/unattended-upgrades/unattended-upgrades.log
Durch die Einrichtung automatischer Updates stellst du sicher, dass Ihr Raspberry Pi regelmäßig mit den neuesten Sicherheitsupdates und Verbesserungen versorgt wird, ohne dass du manuell eingreifen musst.
Standardpasswörter ändern
- Änder das Passwort für den Standardbenutzer mit:
passwd
Firewall einrichten
- Installiere UFW (Uncomplicated Firewall):
sudo apt install ufw
Aktiviere die Firewall – und sperre alle Zugriffe ausser ssh:
sudo ufw default deny incoming sudo ufw allow OpenSSH sudo ufw enable
Sollte noch ein Webserver aktiviert werden, kann mittels folgenden Befehlen http / https freigeschaltet werden:
sudo ufw allow http
sudo ufw allow https
Fail2Ban installieren
- Installiere Fail2Ban, um Brute-Force-Angriffe zu verhindern:
sudo apt install fail2ban
Regelmäßige Backups
Richte regelmäßige Backups aller wichtigen Daten ein, um Datenverluste zu vermeiden.
OPTIONAL: SSH Zugang per Passwort nachträglich deaktivieren
Als ersten Schritt öffne eine remote ssh Verbindung wie vorher beschrieben. Ganz wichtig: Diese darf erst geschlossen werden, wenn wir in einem anderen Terminal erfolgreich (ohne Passorteingabe) mit dem Raspberry Pi verbinden konnten. Das ist nämlich unsere Backup Session, wenn etwas schief läuft und wir die Konfiguration anpassen / korrigieren / zurück rollen müssen.
Nachdem wir verbunden sind können wir mittels folgendem Kommando ein neues File anlegen:
nano /etc/ssh/sshd_config.d/99-no-pwd.conf
und folgenden Inhalt einfügen:
# sshd_config defaults on Arch Linux
KbdInteractiveAuthentication no
UsePAM yes
PrintMotd no
abspeichern (STRG + X, und dann Y).
Nun muss der sshdaemon neu geladen werden, folgender Befehl macht das. Hier nochmal der Hinweis, unsere Recovery Session sollte noch offen sein, denn bei einem Fehler können wir sonst nur noch direkt auf das System zugreifen und nicht mehr remote.
sudo systemctl reload sshd
Wenn das funktioniert hat, dann öffnen wir eine zweite remote Session und prüfen, ob wir erfolgreich verbunden werden können, und ob keine Passworteingabe mehr notwendig ist.
Sollte kein erfolgreicher Login möglich sein, dann gehen wir in unsere Recovery Session und verschieben das config file mit
mv /etc/ssh/sshd_config.d/99-no-pwd.conf ~/
und laden wieder den sshdaemon neu:
sudo systemctl reload sshd
Dann prüfen wir wieder ob wir eine neue remote Session verbinden können, Danach können wir uns auf die Fehlersuche machen.
Fazit
Ein Headless Setup für den Raspberry Pi ist eine effiziente Möglichkeit, den Pi ohne zusätzliche Peripheriegeräte zu betreiben. Durch die Implementierung grundlegender Sicherheitsmaßnahmen stellen wir sicher, dass das Gerät sicher und geschützt ist. Wir hoffen, dass dir dieser Artikel geholfen hat, einen Raspberry Pi mittels Headless Setup einzurichten und für seine Aufgaben im Home Automation Bereich vorzubereiten.