Da in letzter Zeit ja die eine oder andere Sicherheitslücke in OpenSSH / OpenSSL gefunden wurde, habe ich am Freitag doch mal auf meinem Linux-Router den Kram neukompiliert - und dabei so ziemlich alles falsch gemacht, was man nur falsch machen kann. Aber der Reihe nach:
Es handelt sich um einen Rechner, der ständig eingeschaltet ist, und darum möglichst leise sein soll. Daher ist er so konfiguriert, dass er zu schreibende Daten nur alle 24 Stunden auf die Festplatte schreibt, davor werden sie im Ram gecached. Selbstredend hat er keine Tastatur, und keinen Bildschirm und wird ferngewartet ...
Als ich am besagten Tag OpenSSL und OpenSSH kompiliert und installiert hatte, wollte ich den
Instruktionen, die im zweiten Teil zusammengefasst sind, nicht Folge leisten und stattdessen
einfach /sbin/init.d/sshd stop; /sbin/init.d/sshd start
eingeben - nach dem Motto
mal schauen was passiert. Erster böser Fehler. Natürlich starb der ssh-Dämon, mit
ihm die Shell, und der ssh-Dämon wurde damit nicht neugestartet. Also war der Rechner nicht
erreichbar. Darum die Reset-Taste gedrückt. Zweiter böser Fehler. Durch das Cachen im Ram
waren die Daten nicht oder nur zum Teil auf die Festplatte geschrieben worden, d.h., nach dem
obligatorischen fsck war der alte ssh-Dämon schon überschrieben, der neue aber noch nicht da,
und der Fernzugriff über ssh war darum nicht mehr möglich. Die Folge war, dass ich nach langer
Zeit wieder Krabbelei hatte, um Tastatur und Bildschirm anzuschließen und an der Konsole den
Schlamassel wieder in Ordnung zu bringen. Grml.
Also: So geht es richtig: Nachdem man die SSH kompiliert, sich vom grundlegenden Funktionieren
überzeugt, und dann mit make install
installiert hat, auf dem Server per Hand (nicht über die
rc.d
-Startscripte) einen zweiten ssh-Dämon auf einem alternativen Port starten: /usr/sbin/sshd -p 777
,
besser allerdings den richtigen sshd-Befehl in den rc-Startscripten raussuchen und den Aufruf, der dort steht,
mit der zusätzlichen Port-Angabe durchführen.
Als nächstes vom Client eine neue ssh-Shell über diesem Port öffnen (bei allen ssh-clients kann man den
Port auswählen, mit einem Kommandozeilen-ssh etwa ssh -p 777 RECHNER
). In dieser
Shell auf dem Server jetzt den ursprünglichen ssh-Dämon suchen (das ist der ältere, ps -ef | grep sshd
sollte
zum Finden genügen) und abschießen (kill -1 SSHD-PID
). Jetzt auf dem Server über die verbliebende Shell den ssh-Dämon
auf dem normalen Port wieder starten (d.h. mit dem gleichen Befehl wie in den rc-Startscripten,
zur Sicherheit aber nicht das rc-Startscript selber verwenden!). Wiederrum vom Client eine neue ssh-Shell
auf dem normalen Port aufmachen und, wenn alles geklappt hat, über diese Shell den ssh-Dämon auf dem
alternativen Port abschießen. Fertig.