SSH ohne Root-Zugang #
Wer einen Rechner ins Internet stellt, möchte natürlich auch darauf zugreifen, um auf ihm zu arbeiten. Dafür ist Ssh natürlich das Mittel der Wahl. Allerdings hat jeder Eingang nicht nur den Vorteil, das er ein Eingang ist, sondern immer auch den Nachteil, das er ein Eingang ist... :-(
Root ausschliessen #
Die meisten simplen Angriffe auf Internet-Server laufen per Brute Force. Aber auch Fehler im SSH-Code sollen schon ausgenutzt worden sein... Hierzu braucht der Angreifer ggf. einen Benutzernamen und ein Passwort. Der einzige Benutzername, auf den man sich verlassen kann ist "root", weswegen dieser für viele Angriffe genutzt wird (mein Server hatte im Schnitt 100 Einlogversuche als "root" pro Tag).
In der Datei /etc/ssh/sshd_config setzt man die Einstellung
PermitRootLogin no
womit dann eigentlich schon alles gesagt wäre.
Root-Zugriff wiederherstellen #
Nun kann man sich aber leider nicht mehr als root einloggen, was man doch ursprünglich wollte. Der beste Weg hierzu ist, sich als normaler User einzuloggen (unter einem nicht-offensichtlichen Usernamen) und dann sudo zu benutzen. Hierzu erzeugt man einen Benutzer und editiert dann mit Hilfe von visudo die Datei sudoers, in der man dem entsprechenden Benutzer erlaubt, sudo zu benutzen, um Befehle als root-Benutzer auszuführen.
adduser user5672 visudo
... user5672 ALL=ALL ...
Login ohne Passwort ermöglichen #
Jetzt haben wir aber wieder ein kleines Problem. Der Benutzername ist zwar verschleiert, aber wir haben ein Passwort, das wir zuerst zum Einloggen und dann direkt nochmal für sudo brauchen. Das verleitet natürlich dazu, ein möglichst einfaches Passwort zu wählen, was nicht so gut ist. Außerdem bekommt das jeder Keylogger mit. Besser finde ich, wenn der Benutzer sich durch einen public key authentifizieren muss, dessen privates Pendant beim Benutzer auf dem heimischen Rechner abgelegt ist. Wie man das einrichtet, steht auf der Seite OpenSSH.
Nun wird für den Benutzer-Zugang der public key verwendet (den man ohne Passwort einrichten kann, wenn man das möchte) und für den root-Zugang dann doch noch mal das hinterlegte Passwort. Man muss also beides haben, was die Sicherheit etwas erhöht.
Login ohne Passwort erzwingen #
Damit das Passwort alleine nicht reicht, um sich auch als Benutzer anzumelden, muss man in der Datei /etc/ssh/sshd_config noch folgendes anhängen:
Match User user5672 PasswordAuthentication no