Das „ungesicherte“ Raspberry Pi im Internet

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Wie die Geschichte beginnt

Vor kurzem ging mir mein Raspberry Pi kaputt. Ein Ersatz war schnell beschafft, jedoch war durch das Ableben des Altgeräts sämtlich Informationen auf der Speicherkarte unbrauchbar. Also musste ich ein neues Betriebssystem aufspielen. Nach dem expandieren des Dateisystems und das Setzten des Taktes auf 900 MHz war es Zeit für einen Reboot.

Nun kommt der (eigentlich normale) Teil: Restore der Dienste. Mein Pi übernimmt im LAN folgende Dienste:

In meiner Fritz!Box ist eine Portweiterleitung von Port 22 auf das Pi Port 22 definiert. Beim Einrichten war es schon spät und zudem ein Freitag. Am nächsten Tag wollte ich nach Hause fahren. Ich habe mich dazu entschlossen nur die wichtigsten Dienste DHCP, DNS und Fail2Ban aufzusetzen und den Rest am Wochenende zu Hause zu machen.

„Den Rest mache ich dann morgen!“

Am nächsten Morgen also Zeug zusammen gepackt und ab nach Hause. Am besagten Wochenende habe ich aber den kompletten Sonntag verschlafen. Das Pi lief einfach vor sich hin.

Nun ist knapp ein Monat vergangen. Dann kam eine Mail mit folgendem Betreff „Login auf pi from 137.116.161.62„. Shiiiitttt!!! Das ist keine IP-Adresse die ich kenne und ich wusste auch, dass ich aktuell keine Shell offen habe. Also ganz schnell eingeloggt und das Raspberry Pi runtergefahren. Eine Sunde vor dem Feierabend. Noch nie hat sich ein Fremder auf einer meiner Instanzen erfolgreich eingeloggt.

Die Panik und Verwirrung war also groß. Gedanken wie „wurde mein SSH Key geklaut“?, „sind andere Maschinen von mir betroffen?“, „Wurden schon KiPo verteilt?“. Ziemlich zeitnah bin ich dann nach Hause und wollte nach meinem Pi schauen. Zuerst wollte ich aber die Portweiterleitung rausnehmen, was etwas schwierig war, da mein PC keine IP Adresse bekommen hat (Das Pi vergibt ja die IP Adressen :-( ). Kurz statisch eine vergeben und eingeloggt auf die Fritz!Box.

Auf Ursachen suche

Danach alle Netzwerkeinstellungen zurückgesetzt und das Pi kurz vorm Strom getrennt und wieder angestöpselt. Nach einer Minute hat dann mein PC eine IP Adresse bekommen und ich loggte mich ein. Erstmal die auth.log anschauen. Mit einer kurzen cat-grep-awk-sort-uniq-Kombo habe ich gesehen, dass sich folgende IP Adressen erfolgreich per Passwort authentifiziert haben:

116.98.135.137
137.116.161.62
189.203.240.61
207.46.145.11
23.97.69.149

Passwort?!? Ich hab für root das Passwort nach dem installieren geändert und meinen sshmanager aufgespielt. Und dann habe ich meinen extrem dummen (Anfänger-)Fehler gefunden: Ich habe niemals die Passwortauthentifizierung im SSH Dienst ausgemacht. Zwar war das root Passwort verändert, aber der Benutzer pi existiert standardmäßig mit dem Passwort „raspberry“.

Alles in allem stand das Pi circa 3 Wochen so im Netz. Es ist ein Wunder, dass nur 5 Bots sich eingeloggt haben. Gott sei Dank hat sich nie eine Person eingeloggt (nach dem erfolgreichen Login kam sofort ein Disconnect). Glück gehabt! Es kam also kein Spam durch mich ins Internet. Mein Internet bekomme ich von der Arbeit und die Abuse Abteilung ist nur eine Türe weiter. Keine Meldungen – zum Glück.

Die Lehre

Natürlich habe ich das Pi nochmal komplett neu installiert – man kann ja nie wissen :-). Diesmal habe ich zuerst die Sicherheitsmaßnahmen installiert/konfiguriert bevor ich die Portweiterleitung wieder aktiviert habe. Die Dienste diesmal wieder aufzuspielen war einfacher, da ich Backups der Konfigurationen machen konnte. Lediglich mein Relay-Passwort für meinen Mailserver musste ich ändern.

Die IP-Adressen habe ich zusätzlich noch in meine iptables geschrieben. Die IP 137.116.161.62 ist ziemlich aggressiv. Seitdem die Maschine offline war versucht sich der Bot minütlich einzuloggen. Hier mal ein Auszug der iptables-Chain:

Chain sshBlocks (1 references)
 pkts bytes target prot opt in out source destination
 3347 170K REJECT all -- * * 137.116.161.62 0.0.0.0/0 reject-with icmp-port-unreachable
 567 28728 REJECT all -- * * 23.97.69.149 0.0.0.0/0 reject-with icmp-port-unreachable
 225 11400 REJECT all -- * * 207.46.145.11 0.0.0.0/0 reject-with icmp-port-unreachable
11243 1388K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

Meine Lehren habe ich gezogen: Nie wieder „ich mach das morgen“ bei Maschinen, die im Internet hängen.

 


Du hast einen Kommentar, einen Wunsch oder eine Verbeserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.

🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg)
Zurück