Grundlegende Ratschläge, um Ihren Raspberry Pi sicherer zu machen...
Sichern Sie Ihren Raspberry Pi
Die Sicherheit Ihres Raspberry Pi ist wichtig.Sicherheitslücken lassen Ihren Raspberry Pi für Hacker offen, die ihn dann ohne Ihre Erlaubnis verwenden können.
Welche Sicherheitsstufe Sie benötigen, hängt davon ab, wie Sie Ihren Raspberry Pi verwenden möchten.Wenn Sie beispielsweise Ihren Raspberry Pi einfach in Ihrem Heimnetzwerk hinter einem Router mit einer Firewall verwenden, ist er standardmäßig bereits ziemlich sicher.
Wenn Sie Ihren Raspberry Pi jedoch direkt dem Internet aussetzen möchten, entweder mit einer direkten Verbindung (unwahrscheinlich) oder indem Sie bestimmte Protokolle über Ihre Router-Firewall (z. B. SSH) zulassen, müssen Sie einige grundlegende Sicherheitsänderungen vornehmen.
Selbst wenn Sie sich hinter einer Firewall verstecken, ist es sinnvoll, die Sicherheit ernst zu nehmen.In dieser Dokumentation werden einige Möglichkeiten zur Verbesserung der Sicherheit Ihres Raspberry Pi beschrieben.Bitte beachten Sie jedoch, dass es nicht erschöpfend ist.
Ändern Sie Ihr Standardkennwort
Der Standardbenutzername und das Standardkennwort werden für jeden einzelnen Raspberry Pi verwendet, auf dem Raspberry Pi OS ausgeführt wird.Wenn Sie also Zugriff auf einen Raspberry Pi erhalten können und diese Einstellungen nicht geändert wurden, haben SierootZugriff auf diesen Raspberry Pi.
Als erstes müssen Sie das Passwort ändern.Dies kann über die Anwendung raspi-config oder über die Befehlszeile erfolgen.
sudo raspi-config
Wählen Sie Option 2 und befolgen Sie die Anweisungen zum Ändern des Kennworts.
Tatsächlich startet raspi-config lediglich die Befehlszeilenanwendungpasswd, die Sie über die Befehlszeileausführenkönnen.Geben Sie einfach Ihr neues Passwort ein und bestätigen Sie es.
passwd
Ändern Sie Ihren Benutzernamen
Sie können Ihren Raspberry Pi natürlich noch sicherer machen, indem Sie auch Ihren Benutzernamen ändern.Alle Raspberry Pis werden mit dem Standardbenutzernamen geliefertpi. Wenn Sie diesen ändern, wird Ihr Raspberry Pi sofort sicherer.
Geben Sie Folgendes ein, um einen neuen Benutzer hinzuzufügen:
Sudo Adduser Alice
Sie werden aufgefordert, ein Kennwort für den neuen Benutzer zu erstellen.
Der neue Benutzer hat ein Home-Verzeichnis unter/home/alice/.
So fügen Sie sie dersudoGruppe hinzu, um ihnensudoBerechtigungen sowie alle anderen erforderlichen Berechtigungenzu erteilen:
sudo usermod -a -G adm, dialout, cdrom, sudo, audio, video, plugdev, spiele, benutzer, eingabe, netdev, gpio, i2c, spi alice
Sie können überprüfen, ob Ihre Berechtigungen vorhanden sind (dh Sie können sie verwendensudo), indem Sie Folgendes versuchen:
sudo su - alice
Wenn es erfolgreich ausgeführt wird, können Sie sicher sein, dass sich das neue Konto in dersudoGruppe befindet.
Sobald Sie bestätigt haben, dass das neue Konto funktioniert, können Sie denpiBenutzerlöschen.Dazu müssen Sie den Vorgang zunächst wie folgt abschließen:
sudo pkill -u pi
Bitte beachten Sie, dass bei der aktuellen Raspberry Pi OS-Distribution einige Aspekte erforderlich sind, bei denen derpiBenutzer anwesend sein muss.Wenn Sie sich nicht sicher sind, ob Sie davon betroffen sind, lassen Sie denpiBenutzer an Ort und Stelle.Es wird daran gearbeitet, die Abhängigkeit vompiBenutzerzu verringern.
Geben SiepiFolgendes ein,um denBenutzerzu löschen:
sudo deluser pi
Dieser Befehl löscht denpiBenutzer, verlässt jedoch den/home/piOrdner.Bei Bedarf können Sie den folgenden Befehl verwenden, um gleichzeitig den Basisordner für denpiBenutzerzu entfernen.Beachten Sie, dass die Daten in diesem Ordner dauerhaft gelöscht werden. Stellen Sie daher sicher, dass alle erforderlichen Daten an anderer Stelle gespeichert sind.
sudo deluser -remove-home pi
Dieser Befehl führt zu einer Warnung, dass die Gruppepikeine Mitglieder mehr hat.DerdeluserBefehl entfernt jedoch sowohl denpiBenutzer als auch diepiGruppe, sodass die Warnung ignoriert werden kann.
Machen Siesudoein Passwort erforderlich
Wenn Siesudovor einem Befehl stehen, wird dieser als Superuser ausgeführt. Standardmäßig ist kein Kennwort erforderlich.Im Allgemeinen ist dies kein Problem.Wenn Ihr Pi jedoch dem Internet ausgesetzt ist und irgendwie ausgenutzt wird (z. B. über einen Webseiten-Exploit), kann der Angreifer Dinge ändern, für die Superuser-Anmeldeinformationen erforderlich sind, es sei denn, Sie habensudoein Kennwort festgelegt.
Geben SiesudoFolgendes ein, um die Anforderung eines Kennwortszu erzwingen:
sudo visudo /etc/sudoers.d/010_pi-nopasswd
und ändern Sie denpiEintrag (oder den Benutzernamen, der Superuser-Rechte hat) in:
pi ALL = (ALL) PASSWD: ALL
Speichern Sie dann die Datei: Sie wird auf Syntaxfehler überprüft.Wenn keine Fehler festgestellt wurden, wird die Datei gespeichert und Sie kehren zur Shell-Eingabeaufforderung zurück.Wenn Fehler festgestellt wurden, werden Sie gefragt, was jetzt?Drücken Sie die Eingabetaste auf Ihrer Tastatur. Daraufhin wird eine Liste mit Optionen angezeigt.Möglicherweise möchten Sie 'e' erneut für '(e) dit sudoers file' verwenden, damit Sie die Datei bearbeiten und das Problem beheben können.Beachten Sie, dass durch Auswahl der Option 'Q' die Datei mit noch vorhandenen Syntaxfehlern gespeichert wird, sodasskeinBenutzer den Befehl sudo verwenden kann.
Stellen Sie sicher, dass Sie über die neuesten Sicherheitskorrekturen verfügen
Dies kann so einfach sein, als ob Sie sicherstellen möchten, dass Ihre Version von Raspberry Pi OS auf dem neuesten Stand ist, da eine aktuelle Distribution die neuesten Sicherheitskorrekturen enthält.Eine vollständige Anleitung finden Siehier.
Wenn Sie SSH verwenden, um eine Verbindung zu Ihrem Raspberry Pi herzustellen, kann es sich lohnen, einen Cron-Job hinzuzufügen, der den SSH-Server speziell aktualisiert.Der folgende Befehl, möglicherweise als täglicher Cron-Job, stellt sicher, dass Sie unabhängig von Ihrem normalen Aktualisierungsprozess umgehend über die neuesten SSH-Sicherheitsupdates verfügen.Weitere Informationen zum Einrichten von cron finden Siehier
apt install openssh-server
Verbesserung der SSH-Sicherheit
SSH ist eine übliche Methode, um remote auf einen Raspberry Pi zuzugreifen.Für die Anmeldung mit SSH ist standardmäßig ein Paar aus Benutzername und Kennwort erforderlich. Es gibt verschiedene Möglichkeiten, dies sicherer zu machen.Eine noch sicherere Methode ist die Verwendung der schlüsselbasierten Authentifizierung.
Verbesserung der Sicherheit von Benutzernamen und Passwörtern
Das Wichtigste ist, dass Sie ein sehr robustes Passwort haben.Wenn Ihr Raspberry Pi dem Internet ausgesetzt ist, muss das Passwort sehr sicher sein.Dies hilft, Wörterbuchangriffe oder ähnliches zu vermeiden.
Sie könnenbestimmte Benutzerauchzulassenoderablehnen, indem Sie diesshdKonfigurationändern.
sudo nano / etc / ssh / sshd_config
Fügen Sie am Ende der Datei die folgende Zeile hinzu, bearbeiten Sie sie oder hängen Sie sie an. Diese enthält die Benutzernamen, die Sie für die Anmeldung zulassen möchten:
AllowUsers alice bob
Sie können auch verwendenDenyUsers, um die Anmeldung einiger Benutzernamen gezielt zu verhindern:
DenyUsers jane john
Nach der Änderung müssen Sie densshdDienst mitneu startensudo systemctl restart sshoder neustarten,damit die Änderungen wirksam werden.
Verwenden der schlüsselbasierten Authentifizierung.
Schlüsselpaare sind zwei kryptografisch sichere Schlüssel.Einer ist privat und einer ist öffentlich.Sie können verwendet werden, um einen Client bei einem SSH-Server (in diesem Fall dem Raspberry Pi) zu authentifizieren.
Der Client generiert zwei Schlüssel, die kryptografisch miteinander verknüpft sind.Der private Schlüssel sollte niemals freigegeben werden, aber der öffentliche Schlüssel kann frei geteilt werden.Der SSH-Server erstellt eine Kopie des öffentlichen Schlüssels und verwendet diesen Schlüssel, wenn ein Link angefordert wird, um dem Client eine Challenge-Nachricht zu senden, die der Client mit dem privaten Schlüssel verschlüsselt.Wenn der Server den öffentlichen Schlüssel verwenden kann, um diese Nachricht wieder in die ursprüngliche Challenge-Nachricht zu entschlüsseln, kann die Identität des Clients bestätigt werden.
Das Generieren eines Schlüsselpaars unter Linux erfolgt mit demssh-keygenBefehl auf demClient.Die Schlüssel werden standardmäßig im.sshOrdner im Home-Verzeichnis des Benutzersgespeichert.Der private Schlüssel wird aufgerufenid_rsaund der zugehörige öffentliche Schlüssel wird aufgerufenid_rsa.pub.Der Schlüssel wird 2048 Bit lang sein: Das Aufheben der Verschlüsselung für einen Schlüssel dieser Länge würde extrem lange dauern, daher ist er sehr sicher.Sie können längere Schlüssel erstellen, wenn die Situation dies erfordert.Beachten Sie, dass Sie den Generierungsprozess nur einmal ausführen sollten: Wenn er wiederholt wird, werden alle zuvor generierten Schlüssel überschrieben.Alles, was auf diesen alten Schlüsseln basiert, muss auf die neuen Schlüssel aktualisiert werden.
Während der Schlüsselgenerierung werden Sie zur Eingabe einer Passphrase aufgefordert: Dies ist eine zusätzliche Sicherheitsstufe.Lassen Sie dieses Feld für den Moment leer.
Der öffentliche Schlüssel muss jetzt auf den Server verschoben werden: SieheKopieren Sie Ihren öffentlichen Schlüssel auf Ihren Raspberry Pi.
Schließlich müssen wir die Kennwortanmeldungen deaktivieren, damit die gesamte Authentifizierung von den Schlüsselpaaren durchgeführt wird.
sudo nano / etc / ssh / sshd_config
Es gibt drei Zeilen, in die geändert werden mussno, wenn sie nicht bereits so eingestellt sind:
ChallengeResponseAuthentication-Nr PasswordAuthentication No. UsePAM-Nr
Speichern Sie die Datei und starten Sie das SSH-System entweder mit neusudo service ssh reloadoderstarten Sie esneu.
Installieren Sie eine Firewall
Es gibt viele Firewall-Lösungen für Linux.Die meisten verwenden das zugrunde liegendeiptables-Projekt, um die Paketfilterung bereitzustellen.Dieses Projekt befindet sich über dem Linux-Netzfiltersystem.iptableswird standardmäßig unter Raspberry Pi OS installiert, ist jedoch nicht eingerichtet.Eine Einstellung kann eine komplizierte Aufgabe, und ein Projekt, das eine einfachere Schnittstelle bietet alsiptablesistufw, die für ‚Unkompliziertes Fire Wall‘ steht.Dies ist das Standard-Firewall-Tool in Ubuntu und kann problemlos auf Ihrem Raspberry Pi installiert werden:
sudo apt install ufw
ufwist ein ziemlich einfaches Kommandozeilen-Tool, obwohl einige GUIs dafür verfügbar sind.In diesem Dokument werden einige grundlegende Befehlszeilenoptionen beschrieben.Beachten Sie, dassufwdies mit Superuser-Berechtigungen ausgeführt werden muss, damit allen Befehlen vorangestellt wirdsudo.Es ist auch möglich, die Option--dry-runbeliebigeufwBefehle zu verwenden, die die Ergebnisse des Befehls anzeigen, ohne tatsächlich Änderungen vorzunehmen.
Verwenden Sie Folgendes, um die Firewall zu aktivieren, die auch sicherstellt, dass sie beim Booten gestartet wird:
sudo ufw aktivieren
Verwenden Sie Folgendes, um die Firewall zu deaktivieren und den Start beim Booten zu deaktivieren:
sudo ufw deaktivieren
Ermöglichen Sie einem bestimmten Port den Zugriff (in unserem Beispiel haben wir Port 22 verwendet):
sudo ufw erlauben 22
Das Verweigern des Zugriffs auf einen Port ist ebenfalls sehr einfach (wir haben wieder Port 22 als Beispiel verwendet):
sudo ufw leugnen 22
Sie können auch angeben, welchen Dienst Sie an einem Port zulassen oder verweigern.In diesem Beispiel verweigern wir TCP an Port 22:
sudo ufw leugnen 22 / tcp
Sie können den Dienst auch dann angeben, wenn Sie nicht wissen, welchen Port er verwendet.Dieses Beispiel ermöglicht den Zugriff des SSH-Dienstes über die Firewall:
sudo ufw erlaube ssh
Der Statusbefehl listet alle aktuellen Einstellungen für die Firewall auf:
sudo ufw status
Die Regeln können recht kompliziert sein, da bestimmte IP-Adressen blockiert werden können, in welche Richtung der Datenverkehr zulässig ist oder die Anzahl der Verbindungsversuche begrenzt wird, um beispielsweise einen Denial-of-Service-Angriff (DoS) zu verhindern.Sie können auch angeben, auf welche Geräteregeln angewendet werden soll (z. B. eth0, wlan0).Weitere Informationen findenSie in derufwManpage (man ufw). Hier finden Sie einige Beispiele für komplexere Befehle.
Beschränken Sie Anmeldeversuche am SSH-Port mit TCP: Dies verweigert die Verbindung, wenn eine IP-Adresse in den letzten 30 Sekunden sechs oder mehr Mal versucht hat, eine Verbindung herzustellen:
sudo ufw limit ssh / tcp
Verweigern Sie den Zugriff auf Port 30 über die IP-Adresse 192.168.2.1
sudo ufw verweigern von 192.168.2.1 Port 30
Fail2ban installieren
Wenn Sie Ihren Raspberry Pi als eine Art Server verwenden, z. B. einensshoder einen Webserver, weist Ihre Firewall absichtliche "Lücken" auf, um den Serververkehr durchzulassen.In diesen Fällen kannFail2banhilfreich sein.Fail2ban, geschrieben in Python, ist ein Scanner, der die vom Raspberry Pi erzeugten Protokolldateien untersucht und auf verdächtige Aktivitäten überprüft.Es erfasst beispielsweise mehrere Brute-Force-Anmeldeversuche und kann jede installierte Firewall informieren, um weitere Anmeldeversuche von verdächtigen IP-Adressen zu stoppen.Sie müssen die Protokolldateien nicht manuell auf Eindringversuche überprüfen und dann die Firewall (überiptables)aktualisieren, um sie zu verhindern.
Installieren Sie fail2ban mit dem folgenden Befehl:
sudo apt install fail2ban
Bei der Installation erstellt Fail2ban einen Ordner,/etc/fail2banin dem sich eine Konfigurationsdatei namens befindetjail.conf.Dies muss kopiert werdenjail.local, um es zu aktivieren.In dieser Konfigurationsdatei befinden sich eine Reihe von Standardoptionen sowie Optionen zum Überprüfen bestimmter Dienste auf Anomalien.Gehen Sie wie folgt vor, um die Regeln zu überprüfen / zu ändern, für die verwendet wirdssh:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Fügen Sie derjail.localDateiden folgenden Abschnitt hinzu.In einigen Versionen von fail2ban ist dieser Abschnitt möglicherweise bereits vorhanden. Aktualisieren Sie diesen bereits vorhandenen Abschnitt, falls vorhanden.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Wie Sie sehen können, heißt dieser Abschnitt ssh, ist aktiviert, untersucht den ssh-Port, filtert anhand dersshdParameter, analysiert die/var/log/auth.logböswilligen Aktivitäten und ermöglicht sechs Wiederholungsversuche, bevor der Erkennungsschwellenwert erreicht ist.Wenn Sie den Standardabschnitt überprüfen, sehen Sie, dass die Standardverbotsaktion lautet:
# Standard-Banning-Aktion (z. B. iptables, iptables-new, # iptables-multiport, shorewall usw.) Wird zum Definieren von # action_ * -Variablen verwendet. Kann global oder pro # Abschnitt innerhalb der Datei jail.local überschrieben werden banaction = iptables-multiport
iptables-multiportbedeutet, dass das Fail2ban-System die/etc/fail2ban/action.d/iptables-multiport.confDateiausführt,wenn der Erkennungsschwellenwert erreicht ist.Es gibt verschiedene Aktionskonfigurationsdateien, die verwendet werden können.Multiport verbietet jeglichen Zugriff auf alle Ports.
Wenn Sie eine IP-Adresse nach drei fehlgeschlagenen Versuchen dauerhaft sperren möchten, können Sie den maximalen Wiederholungswert im[ssh]Abschnittändernund die Bantime auf eine negative Zahl setzen: