SSH vor Angriffen schützen

Wir haben den Raspberry Pi erfolgreich aufgesetzt und er ist online und via SSH erreichbar, wie im Artikel Raspbian SSH aktivieren beschrieben. Eventuell gibt es noch eine Portweiterleitung, aber Vorsicht, damit ist der Raspi ganz leicht aus dem Internet erreichbar. Dann könnte die Möglichkeit bestehen, dass der Angreifer einfach auf unser Heimnetzwerk zugreifen kann oder Schadsoftware installiert. Es klingt unwahrscheinlich für viele, weil sie sagen, was habe ich schon zuverbergen, aber es ist dennoch möglich. Es gibt die Möglichkeit uns davor zuschützen. Mit wenigen Einstellungen sichern wir unseren Raspberry Pi ab.

Zuerst erstellen wir einen neuen Benutzer, geben ihm sudo Rechte und sperren anschließend den User Pi. Natürlich besteht auch die Option den Pi User zu löschen. aber das kann jeder für sich entscheiden.

sudo adduser deinBenutzername
sudo usermod -aG sudo deinBenutzername
sudo usermod -L pi

Weiterer Angriffspunkt ist eine nicht aktuelle Softwareversion, was auch SSH betreffen könnte, Um uns auch hier abzusichern, führen wir mit dem folgenden Befehl ein Update durch.

sudo apt-get update && sudo apt-get upgrade

Im Normalfall erreicht man den SSH Port über die Portnummer 22. Durch Portscanner besteht die Möglichkeit einfach und schnell den gewünschten Dienst zu finden. Änderen wir den Port, so mag man natürlich bedenken, dass die meisten Portscanner bis 20005 gehen. Daher wäre es sinnvoll etwas oberhalb der Grenze zunehmen. In meinen Beispiel nehmen wir den Port 65432. Eins sollten wir beim aussuchen des Ports aber immer bedenken, dass wir keinen Port wählen der bereits vergeben ist. Auf Wikipedia finden wir eine Liste der standardisierten Ports. Ein Beispielbild, eines Portscans, bei Raspberry Pi, welches uns zeigt, dass der Port 80 offen ist.

sudo nano /etc/ssh/sshd_config

Wir ersetzen in der sshd_config den Port durch unseren neuen Port 65432 und starten anschließend den SSHd Dienst neu.

sudo systemctl restart sshd

Es ist ebendfalls ratsam sich immer über einen dritten Benutzer einzuloggen, statt über den Root, was nicht nur für den Pi, sondern auch allgemein für Linux gilt. Auch hier müssen wir wieder die sshd_config öffnen und PermitRootLogin von yes auf no ändern! Anschließend starten wir den SSHd neu.
Anmerkung: Natürlich ist es ratsam, alles gemeinsam mit der Portänderung durchzuführen. So spart man sich Arbeit und den zweimaligen restart von SSHd.

sudo nano /etc/ssh/sshd_config
sudo systemctl restart sshd

Jetzt nehmen wir mal an, der Angreifer hat herausgefunden unter welchem Port unser SSH arbeitet und weiß eueren Benutzernamen. Was ihm jetzt noch fehlt ist das Passwort, aber das könnte man durch probieren herausfinden und alles selber eintippen oder aber man lässt eine sogenannte Brute-Force Attacke starten. Das bedeutet, der Angreifer benutzt ein kleines Programm, was sich nun verbindet und testet ihm alle bekannten Passwörter durch und das sind einige.
Unsere Möglichkeit für eine Abwehr beruht auf dem kleinen Programm Fail2Ban in Verbindung mit IPTables. Es zählt je nach Einstellung die fehlgeschlagenen Loginversuche und sperrt die IP-Adresse auf eine bestimmte Zeit aus. Der Angreifer sieht so den Raspi, bzw Server nicht mehr und muss später wieder von vorne anfangen. Installieren tun wir Fail2Ban ganz simpel mit:

sudo apt-get install fail2ban

Fail2Ban muss nur noch eingestellt werden. Beim Raspberry Pi reichen die Standard Einstellungen, aber bei einem Server im Internet mit mehr Leistung empfehle ich den Artikel Fail2Ban von Peter auf crycode.de. Ich möchte noch darauf verweisen, dass man mit einer manuellen Installation besser fährt, da man dort Fail2Ban v0.10.x installiert.