SSH - die Secure Shell

Problem

Will man auf einen anderen Rechner so zugreifen, dass man dort z.B. Befehle eingeben oder Dateien übertragen kann, so braucht man einen entsprechenden Dienst auf diesem Rechner.

Idee

SSH ist so ein Dienst und ist bestens etabliert und lässt sich erstaunlich vielfältig nutzen.

Auf dem entfernten Rechner muss dazu i.d.R. ein ssh-Dienst (z.B. openssh-server) laufen. Der eigene Rechner benötigt dann den passenden Client (openssh-client unter Linux und Windows 10, putty unter Windows 7).

Die Kontaktaufnahme initiiert der Client indem er per TCP/IP den Server auf einem bestimmten Port (Standard:22) anspricht. Dabei muss sich der Server mit einem Zertifikat ausweisen. Der Client muss sich mit Passwort oder auch einem Zertifikat anmelden - siehe unten.

Standardanwendungen

Shell auf dem Zielserver benutzen

Portweiterleitung nutzen

Graphisches Programm für Xserver remote benutzen

Realisierung

ssh -X name@server

ssh-keygen -t rsa

ssh-copy-id name@server

Stellt eine Verbindung zum server her. Dabei wird der Useraccount name genutzt (mit X-Forwarding). Nachdem einmalig ssh-keygen auf der Workstation ausgeführt wurde, kopiert man diesen Key auf jeden Server. So kann man sich ohne Passwort dort anmelden. Nun kann auch die originale PermitRootLogin-Zeile wiederhergestellt werden

SSH-Sicherheit

Verbindet man einen Rechner ungeschützt mit dem Internet, so werden innerhalb kürzester Zeit automatische „Angriffe“ (eigentlich nur unberechtigte Loginversuche) auf einen vorhandenen SSH-Dienst einprasseln. Es wird versucht sich mit Standardloginnamen (root, admin, administrator usw.) mit Standardpasswörtern (password, password1, passw0rd, 12345678 usw.) anzumelden. Da Computer dieses Ziel hartnäckig verfolgen, kann ein Glückstreffer zum Unglück des Serverbesitzers führen. Außerdem werden Logfiles und Internetverbindung gefüllt.

Ausweg aus dem Sicherheitsproblem: Erlaube ein Login nur für User mit SSH-key, nicht mit Passwort. Dieser ist mit realistischem Aufwand nicht zu fälschen.

Ausweg aus der unnötigen Serverlast: Lege den Port, auf dem der SSH-Server lauscht von 22 auf einen individuellen hohen Port, z.B. 34121. Oder die Postleitzahl, was man sich besser merken kann. Natürlich hilft das nicht bei der Sicherheit, denn man kann natürlich alle Ports des Servers abklappern und findet ihn dann. Das ist aber eher ein gezielter Angriff als nur ein Loginversuch. (Mit Port-Knocking kann man den Port zusätzlich verschleiern. Dies ist aber wieder etwas aus der Mode gekommen…)

Test