Viele Kleinstcomputer sind permanent online, um ihre Aufgaben als VPN-Gateway, in der Hausautomation oder als Server für verschiedene andere Zwecke zu erfüllen. Damit sind sie permanent Angriffsversuchen ausgesetzt. Daran ist grundsätzlich nichts zu ändern, jedoch sollte man es möglichen Angreifern so schwer wie irgend möglich machen. Schnell sind auch für den Raspberry Pi Portfreigaben und DynDNS eingerichtet, damit ist er aus dem Internet erreichbar. Tun sich dann ungewollte Lücken auf, kann der Pi als Sprungbrett auf das interne Netzwerk und zum Schaden anhängiger Hardware missbraucht werden.
Immer ist es die Konfiguration des Gesamtsystems, die die Sicherheit bestimmt. Bevor man also daran geht, spezielle Komponenten wie den SSH-Zugang zu härten, sollte man die vermeintlich einfachen Dinge angehen, einen Blick auf Nutzerrechte und Passworte werfen und sein System aktuell halten. Auf grundlegende Möglichkeiten soll im Folgenden eingegangen werden.
Risiko Nummer 1 – der Standardnutzer
Am einfachsten hat es jeder Angreifer mit einem System, das mit voreingestellten Standards aktiv ist. Beginnen Sie daher damit, dem Standardnutzer (bei Raspbian „pi“) ein neues Passwort zu geben. Es sollte möglichst lang sein und auch Sonderzeichen enthalten. Dazu genügt es, ein Terminal zu öffnen und dort
passwd
einzugeben.Damit wäre der erste wichtige Schritt erledigt. Niemand sollte mit dem allgemein bekannten Standardpasswort arbeiten. Auch der Name des Standardnutzers „pi“ ist potenziellen Angreifern bekannt. Legen Sie deshalb zunächst einen Benutzer mit individuellem Namen an, mit dem Sie dann standardmäßig arbeiten. Folgender Befehl
sudo useradd -m [benutzer] -G sudo
fügt einen neuen Benutzer hinzu, der auch zur Gruppe „sudo“ gehört. Damit kann er auch root-Kommandos ausführen. Auch diesem Benutzer weisen Sie nach sudo passwd [benutzer] ein sicheres Passwort zu. Und wenn Sie schon dabei sind, ist es auch eine gute Idee, ein neues Rootpasswort zu vergeben. Dazu lautet das Kommando
sudo passwd root
Da Sie jetzt ein neues Konto besitzen, das auch alle Aufgaben mit root-Rechten ausführen kann, können Sie nun den Standardbenutzer „pi“ deaktivieren. Dieses Konto, von dessen Existenz jeder Angreifer ausgeht, hat nach
sudo passwd --lock pi
erst einmal gar keine Rechte mehr.
Lesetipp Raspberry Pi 3 als Desktop-Ersatz verwenden
Das System aktuell halten
Wie bei jedem modernen Computer gilt auch für den Raspberry, dass er möglichst aktuell gehalten werden muss. Um also Angriffspunkte, insbesondere beim SSH-Zugriff, zu minimieren, sollten Sie in regelmäßigen Abständen die installierten Pakete aktualisieren und die Distribution frisch halten.
sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
Nebenbei: Zu „apt-get“ gibt es auch das neuere „apt“, was einen Fortschrittsbalken bietet und weitere Befehle unter einem Hut vereinigt. An Stelle von „apt-get dist-upgrade“ wird dann „apt full-upgrade“ notwendig. In speziellen Situationen reagiert „apt“ etwas anders. Aber das soll uns nicht kümmern, denn nach wie vor kann man die Eingaben zur Aktualisierung genau so wie oben machen.
Wenn Sie es besonders bequem haben wollen, recherchieren Sie im Internet einmal nach dem Programm „unattended-upgrades“. Die Installation des Pakets geschieht mit
sudo apt-get install unattended-upgrades
Mittels
sudo dpkg-reconfigure -priority=low unattended-upgrades
ruft man die Konfiguration auf. Beim ersten Dialog stimmen Sie automatischen Updates zu, im zweiten Dialog kann man Suchmuster abändern.
Das Programm kann dann sogar als Cronjob im System hinterlegt werden und wird in regelmäßigen Abständen automatisiert ausgeführt. Dann brauchen Sie sich um die Updates nicht mehr manuell kümmern.
SSH-Fernzugriff absichern
Der Zugriff per SSH ist sicherlich eines der mächtigsten Werkzeuge im täglichen Umgang mit einem Raspberry. Denn erst dieser Fernzugriff ermöglicht es, alle Systemfunktionen zu erreichen, ohne Tastatur oder Monitor an den Kleinstcomputer anschließen zu müssen.
Mit Erscheinen der Zero Pi W-Modelle ist der Zugang per SSH zwar anfangs deaktiviert, aber die meisten Anwender möchten diesen Zugang im Rahmen ihrer Projekte einsetzen. Der Erstzugang zu SSH kann leicht bewerkstelligt werden, in dem man im Verzeichnis „/boot“ eine leere Datei „ssh“ anlegt. Beim nächsten Boot wird der Dienst dann wieder aktiviert. Um die Beliebtheit des SSH-Zugangs wissen auch die Angreifer, und deswegen sollten Sie sich um die Absicherung von SSH kümmern.
Bevor Sie diverse Veränderungen vornehmen, sollten Sie sich fragen, ob Sie nach der Ersteinrichtung des Systems diesen Zugang später überhaupt noch brauchen. Wenn nicht, lässt sich der Zugang auch wieder abschalten und der Server deinstallieren:
sudo apt-get remove ssh
Ist SSH weiterhin notwendig, macht man sich am besten ein Backup der Konfiguration in eine anders benannte Datei, um jederzeit zum alten Setup zurückkehren zu können:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk
Da Sie im Abschnitt oben schon einen Benutzer angelegt haben, der sich auch root-Rechte verschaffen kann, ist es nicht mehr notwendig, dass es eine Anmeldung des Kontos root auf diesem Weg gibt. Versuche, sich per ssh als root anzumelden, können Sie leicht unterbinden. Öffnen Sie dazu mit einem Editor die entsprechende Konfigurationsdatei:
sudo nano /etc/ssh/sshd_config
Suchen Sie dort nach dem Eintrag „Permit-RootLogin“ und setzen Sie dort den Wert auf „no“. Eigentlich sollten auf Ihrem System keine Nutzer ohne Passwort existieren. Um die Anmeldung solcher Nutzer an SSH zu verhindern, suchen Sie noch nach dem Eintrag „PermitEmptyPasswords“ und setzen Sie dort den Wert ebenfalls auf „no“.
Lesetipp Raspbian: Das kann das OS für den Raspberry Pi

Außerdem ist es möglich, nur bestimmte Nutzer zum Zugriff zuzulassen. In der Konfigurationsdatei gibt es dazu den Eintrag „Allowusers“, hinter dem die Namen der erlaubten Benutzer auf einer Zeile folgen. Besser löst man das aber über die Anlage einer Gruppe mittels „AllowGroups“, gefolgt vom Gruppennamen. Zu dieser Gruppe kann man bei Bedarf später neue Nutzer zufügen und muss nicht jedes Mal in die Konfigurationsdatei eingreifen.
Nach getanen Änderungen muss der SSH-Dienst neu gestartet werden:
sudo /etc/init.d/ssh restart
Je nachdem, wie man sein Projekt aufgesetzt hat, wird man mitunter direkten Zugang zum Pi haben. Dann kann man das Startskript auch zum temporären Einschalten von SSH nutzen, in dem man mittels
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
den Dienst nur aktiviert, wenn er eben gebraucht wird.
Nicht zuletzt kann SSH auch über Zertifikate und wahlweise mit zusätzlicher Passworteingabe abgesichert werden. Wenn der Pi öffentlich erreichbar sein soll, dann sind Zertifikate auf den jeweiligen Rechnern eine gute Wahl. Für die Einrichtung gibt es mehrere Methoden. Gängig ist, im Home-Verzeichnis des Rechners, zu dem sich der Pi verbinden soll, zuerst ein neues Schlüsselpaar mittels
ssh-keygen (-t rsa)
zu erzeugen. Während des Erstellens der Keys können Sie noch eine Passphrase angeben, die in die Verschlüsselung eingeht. Öffentlicher ( id_rsa.pub ) und geheimer Schlüssel ( id_rsa ) befinden sich nun im Unterverzeichnis „ .ssh “. Jetzt melden Sie sich am Pi mit genau dem Account an, der später per SSH zugänglich sein soll und erstellen, falls noch nicht vorhanden, den Unterordner „ .ssh “ und darin die Datei „authorized_keys“. In die müssen nun die Inhalte vom gerade erzeugten öffentlichen Schlüssel „id_rsa.pub“ ans Ende eingefügt werden. Wieder muss der SSH-Dienst neu gestartet werden und Sie können fortan die neue Verbindung testen.
Standard-Ports modifizieren
Werden SSH oder vergleichbare Protokolle nur im lokalen Netzwerk genutzt, ist alles noch überschaubar. Sicherheitstechnisch interessant wird es vor allem, wenn ein oder mehrere Ports konfiguriert wurden, um aus dem Web von außen Zugang zu unserem Host zu ermöglichen.
In aller Regel arbeiten automatisierte Angriffe mit Portscans: Dabei werden wahlweise Datenpakete an Systeme gesendet und geprüft, ob bestimmte Ports geöffnet sind. Wie Sie sicherlich wissen, sind für die verschiedenen Protokolle Standardports definiert. Bei SSH ist dies Port 22 – ein Port, den angreifende Portscans in jedem Fall abfragen. Mit dem Ziel, schnelle Erfolge zu generieren. Denn der Angreifer weiß, SSH erreicht man im Normalfall über genau diesen Port und horcht zuerst hier auf entsprechende Rückmeldungen.
Ein System kann aber jederzeit so eingerichtet werden, dass ein Dienst wie SSH auf einem anderen Port angeboten wird, dann muss der Angreifer erst aufwändig nach dem Dienst suchen. Dies ändern Sie beim Raspberry ebenfalls in der Konfigurationsdatei „ sshd_config “. Sie müssen allerdings etwas aufpassen, denn die Portnummer darf nicht von einer anderen Anwendung oder einem Dienst belegt werden. Wer sich da unsicher ist, findet als Unterstützung auf Wikipedia eine Liste mit standardisierten Port-Nutzungen.
Jetzt suchen Sie in der Datei „ sshd_config “ nach der Zeile „Port“. Statt der 22 vergeben Sie dort einen anderen Wert (theoretisch 65 536 Möglichkeiten). Verändern Sie also zum Beispiel den Wert auf „22078“.
Änderungen der Konfigurationsdatei werden erst nach einem Neustart des Dienstes mit
sudo service ssh restart
wirksam.

Gescheiterte Log-in-Versuche limitieren
Die meisten Hackerangriffe versuchen ganz plump, eine Anmeldung mit Standardkontonamen und zufälligen Passwörtern auszuprobieren. Das System antwortet auf die Fehlversuche natürlich mit einer Fehlermeldung. Hackerskripte sind aber in der Lage, eine Vielzahl an unterschiedlichen Passwörtern in kurzer Zeit automatisiert zu übermitteln.
Ein Softwarepaket wie fail2ban kann solche gescheiterten Versuche nach einer bestimmten Anzahl einfach verbieten:
sudo apt-get install fail2ban
Nun kann es natürlich immer einmal zu Fehlversuchen beim Anmelden kommen. Einmal die Umstelltaste festgestellt und das an sich korrekte Passwort landet als Fehlangabe auf der anderen Seite. Über die Konfigurationsdatei des Programms sollten Sie daher festlegen, wie viele Fehlversuche Sie zulassen wollen und welche Sperre das zur Folge hat. Dazu laden Sie mit
sudo nano /etc/fail2ban/jail.conf
die maßgebliche Datei in den Editor. Die Zahl der erlaubten Fehlversuche definieren Sie mit „Maxretry“. „Findtime“ bestimmt, innerhalb welcher Zeitspanne die Fehlversuche erfolgen müssen, damit diese gezählt werden. Die Dauer der Blockade für die zugreifende IP definiert die Variable „bantime“. Die Angaben erfolgen in beiden Fällen in Sekunden.
In den meisten Fällen weiß man, wo man sich selbst oder die vorgesehene Nutzergruppe beim Fernzugriff auf den Pi gewöhnlich befindet. Im Wiki von fail2ban ist dazu beschrieben, wie man mit „geolookup“ gezielt IPs aus verschiedenen Regionen vom Zugriff per SSH aussperren kann.
Damit steht Ihnen ein flexibler Schutz zur Verfügung, welcher automatisierte Angriffe von „normalen“ Fehleingaben unterscheiden und gut auf die eigenen Bedürfnisse angepasst werden kann.
Auch interessant Linux-Top-20 – So finden Sie Ihr Lieblings-Linux
VPN statt Portfreigabe
Handelt es sich nur um einen begrenzten Kreis von Personen, die von außen auf den Pi zugreifen, und nicht um einen allgemein zugänglichen Server, dann empfiehlt sich der Zugang per VPN. Ein „Virtual Private Network“ bietet gegenüber Port-Weiterleitungen bessere Sicherheit und lässt sich heutzutage auch im privaten Bereich recht einfach einrichten. Dank der Unterstützung in modernen Routern ist das im Allgemeinen ziemlich schnell erledigt.
Nach der Einrichtung in der Router-Konfiguration erhalten Sie dort den erforderlichen Account sowie Gruppennamen und ein „Shared Secret“, um anschließend die zum Zugriff vorgesehenen Geräte zu konfigurieren.
Ist das erledigt, kann man sich vom mobilen Gerät oder PC aus über eine verschlüsselte Verbindung im heimischen Netzwerk anmelden und auf den dort befindlichen Pi zugreifen.
Firewall installieren und aktivieren
Ist der Rechner mehr oder weniger die gesamte Zeit online, dann sollte darauf eine Firewall aktiviert sein. Am besten arbeitet diese nach dem Prinzip, nur den Datenverkehr durchzulassen, der explizit erlaubt worden ist. Versuchen Sie ferner, sofern es die eingesetzte Software zulässt, ähnlich wie beim SSH-Zugang den Port der Anwendung zu verändern. Ein System, das auf Anfragen an den Standardports nicht reagiert, ist für automatisierte Angriffe zu kompliziert.
Lesetipp Der Raspberry Pi als Firewall
Router nicht vergessen: Die Absicherung eines Raspberry-Systems ist die eine Sache, die andere ist die des Routers. Die meisten Modelle sind herstellerseitig mit einer zuverlässigen Firewall geschützt. Weichen Sie diesen Schutz nach Möglichkeit nicht durch unnötige Port-Freigaben auf. Der Router sollte unter den Port-Freigaben (Fritzbox: „Internet -> Freigaben -> Portfreigaben“) nur genau die Freigabe(n) anzeigen, die ein Dienst wie SSH oder ein Raspi-Projekt erfordert.

Weniger ist mehr
Mit ein paar Handgriffen also kann man sein System ein ganzes Stück besser schützen.
Wie so oft gilt: „Weniger ist mehr“. So ist es schließlich auch sinnvoll, zu überprüfen, welche weiteren Dienste und Software man beim Betrieb seines Kleinrechners überhaupt noch braucht. Hat man sich erst mal einen Überblick verschafft, ist es ein geringer Aufwand, weitere Dienste abzuschalten und überflüssige Software zu deinstallieren.
Bevor Sie weiter eingreifen, können Sie sich zur Sicherheit ein Image der SD-Karte des Pi machen. Haben Sie sich versehentlich vom WLAN oder SSH-Zugang ausgesperrt, hilft, den Pi per HDMI direkt an einem Monitor anzuschließen.
Auch wenn man am Ende kein „100-prozentig“ sicheres System bekommt, hat man damit dann die Messlatte hoch genug gelegt – damit der Pi im Netzwerk nur schwer gehackt und beispielsweise als Mailschleuder missbraucht werden kann – für einen möglichst langen reibungslosen Betrieb und Freude daran…