===== SSH, OpenSSH usw. ===== == sichere, verschlüsselte Verbindungen mit UNIX == ((1)) Absicherung //step-by-step// Folgende Vorgaben sollten umgesetzt werden: 1) Kein ROOT-Login von außen 1) nur normaler Benutzer! 1) Aber auch dieser nur mit Zertifikat! 1) bei Bedarf: Zugriff auf bestimmte IP-Adressen begrenzen ((2)) ROOT-Zugang sperren Grundlegendes Prinzip ist, den ROOT-Zugang per SSH von außen zu blockieren. Nachstehend wird die Vorgehensweise für //debian// behandelt, wo ein ROOT-Konto grundsätzlich existiert und per ##su -## jederzeit aufgerufen werden kann (Thema SUDO wird also nicht behandelt): %%(perl) # Benutzer hinzufügen und ihm Möglichkeit der Anmeldung einräumen adduser [myusername] # dann Passwörter etc. auch eingeben ---- # Datei "/etc/ssh/sshd_config" bearbeiten: nano /etc/ssh/sshd_config # => darin muss folgende Zeile enthalten sein: PermitRootLogin no # Server neu starten systemctl reload sshd %% ((2)) Anmeldung mit Zertifikaten ermöglichen Die Anmeldung mit Zertifikat ist zu empfehlen... Auch wenn künftig eine Umstellung auf Teleportiert angestrebt wird, ist grundlegende Sicherheit nur über Zertifikate auch vorübergehend wichtig... Dafür sind insgesamt folgende Schritte notwendig: ((3)) Einfache Variante (nicht immer möglich) %%(perl) # auf dem Client-Rechner (Linux oder Mac) ssh-keygen # für höchste Sicherheit auch Passphrase angeben / für komfortable bzw. für Zugriff über Skripte ohne # Schlüssel auf Server kopieren: ssh-copy-id [-i pfad/id_rsa.pub] user@server %% ((3)) Ältere, meist aber zuverlässigere Variante %%(perl) # Schlüssel generieren - wie oben (einfache Variante): ssh-keygen # (kein Passwort bei Nachfrage eingeben, wenn remote-Zugriff erwünscht) # komplexere Variante ssh-keygen -t dsa -b 1024 -f /pfad/dateiname-schlüssel # über Fernzugriff Schlüssel auf dem zweiten Rechner installieren ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners mkdir -p .ssh #... password: #(hier pwd eingeben, weil dies Login ist) # dann geht es weiter: cat /pfad/dateiname-schlüssel.pub | ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners 'cat >> .ssh/authorized_keys' #... password:## # (letztes mal pwd eingeben) %% Jetzt funktioniert der login folgendermaßen: ##ssh username@ip-des-anderen-rechners## ((2)) Anmeldung mit Passwort verhindern %%(perl) # Datei "/etc/ssh/sshd_config" bearbeiten: nano /etc/ssh/sshd_config # => darin muss folgende Zeile enthalten sein: PasswordAuthentication no ChallengeResponseAuthentication no # Server neu starten systemctl reload sshd %% ((2)) Zugriff auf bestimmte Adressen begrenzen Der Zugriff kann über die hosts gesteuert werden (deny|allow) %%(perl) touch /etc/hosts.{allow,deny} nano /etc/hosts.deny # eingeben: sshd: ALL - nano /etc/hosts.allow sshd: 10.111.0.2 %% ---- **Achtung!** Da im RasPI die o. g. Beschreibung nicht funktionierte, hier einige Hinweise [[https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu aus der Beschreibung bei Thomas Krenn]]: ## ssh-keygen -b 4096 ssh-copy-id -i .ssh/key_rsa.pub user@IP-to-my-Machine## ----