Um einen Raspberry Pi zu nutzen muss man erstmal ein Betriebssystem aufspielen. Danach sollte man sich darum kümmern, dass dieser im Betrieb sicher und stabil läuft.
Hierfür habe ich ein paar Best Practices zusammen getragen:
Setup User vor dem ersten Booten
Um einen User automatisch anzulegen erstellt man auf der SD Karte in der boot Partition ein File namens “userconfig” mit folgendem Inhalt:
USERNAME:HASHED_PASSWORD
Um das gehashte Passwort zu erhalten kann man folgenden Befehl ausführen:
openssl passwd -6
Danach 2 Mal das Passwort eintippen und den ausgegebenen Hash ins File eintragen / kopieren.
Setup SSH vor dem ersten Booten
Falls kein Keyboard / Monitor zur Verfügung steht, kann man zusätzlich zur Useranlage noch SSH aktivieren, damit sollte (!) man zu dem Pi remote verbinden können.
TODO: Mit dem nächsten Pi testen und hier das Ergebnis nachtragen.
SSH Absichern
Um die Sicherheit beim SSH zu erhöhen, empfehle ich, den Login über Passwort zu deaktivieren und nur über ssh keys zu authentifizieren:
Sicherstellen, dass auf dem normalen PC / Laptop ein ssh key vorhanden ist.
Unter Linux wäre das zB:
cat ~/.ssh/id*.pub
Dann den ssh key auf den Raspi übertragen:
scp ~/.ssh/id*.pub USERNAME@IP:~/.ssh
Danach sicherstellen, dass eine ssh Session offen ist – diese bleibt auch offen wenn wir auf Key basierten Login einschränken und ist unser Recovery Mechanismus falls etwas schief geht.
Dann 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.