SSHD

Der Linux Secure Shell Server (Daemon)

Auf jedem Standard Linux Server läuft u.a. auch ein SSH-Server. Damit kann man den Server von jedem beliebigen PC des lokalen Netzwerks fernsteuern. Auf dieser Seite werden einige Tipps als Ergänzung (!) zum Manual des meist verwendeten OpenSSH Servers vorgestellt. Die Angaben orientieren sich vorwiegend an SuSE-Linux Systemen.
Der Kugelfisch ist das Wappentier des OpenSSH Projekts.
SSH Konsolen-Fernsteuerung mit dem Secure Shell Protokoll
OpenSSH Das meist-verwendete SSH Server-Programm
Start Installation und Start des SSH-Server-Programms
Konfiguration Konfiguration des SSH-Servers
Kontrolle Status, Start und Stop des SSH-Servers

OpenSSH

Alle gängigen Linux-Distributionen enthalten den bewährten und meist-verwendeten OpenSSH Server oder bieten zumindest die Möglichkeit, diesen Server-Dienst mit Mausklick nachträglich zu installieren. Die weitere Unterstützung lässt allerdings zu wünschen übrig. Offenbar geht man davon aus, dass nur erfahrene AdministratorInnen diesen Dienst verwenden, und daher auch konfigurieren können.
Hier finden sie Informationen zum OpenSSH Server:
OpenSSH Home, Manual, FAQ, man-Page,
OpenSuSE - OpenSSH
Wikipedia - SSH und OpenSSH
Nach Installation in diesem Verzeichnis ihres Linux-PC:
/usr/share/doc/packages/openssh
Auf dieser Seite werden einige Tipps zur Konfiguration des SSH-Servers vorgestellt. Alle Informationen erfolgen nach bestem Wissen - Die Anwendung erfolgt auf eigenes Risiko !
Auch für Windows-Systeme gibt es einige kostenfreie SSH-Server Programme, z.B. WinSSHD. Hier wird jedoch vorläufig nur OpenSSH vorgestellt.  

Installation und Start

Download

erübrigt sich meist, da das OpenSSH Software Paket in allen gängigen Installations-CD/DVD enthalten ist. Falls nicht, laden sie es mit den integrierten Online-Installer-Programmen, z.B. auf SuSE: In diesem Fall wird das Server-Programm sshd auch gleich installiert, normalerweise jedoch nicht gestartet.
Zur Installation sind Administrator-Rechte erforderlich. Melden sie sich daher als User root an.

Wenn ihr Linux-Distributor OpenSSH nicht anbietet, oder wenn sie selbst die neueste Version compilieren/installieren wollen, laden sie den Quelltext oder ein RPM-Paket aus dem Internet: HTTP, FTP

Konfiguration

SuSE bietet derzeit kein YAST-Modul zur Konfiguration des SSH-Servers an. Wenn das nachgeholt werden sollte, findet man es hier:

Auto-Start

Der automatische Start muss man nach Installation einmalig einrichten: Markieren sie sshd und klicken sie Enable.
Kontrollieren sie an einer Shell-Konsole:
$ ps -A | grep sshd
Das laufende SSH Server-Programm muss mit seiner Process-ID-Nummer angezeigt werden.
$ /etc/init.d/sshd status
Der Status "running" (grün) muss angezeigt werden.

Konfiguration

etc

Wie auf Linux üblich, erfolgt die gesamte Konfiguration mit Text-Dateien im Verzeichnis /etc

Kontrollieren sie zuerst die übergeordnete Steuerung in dieser Datei:
/etc/sysconfig/ssh
Diese Datei enthält normalerweise keine Konfigurations-Daten sondern nur Kommentare (Zeilen beginnen mit einem # Zeichen).

Die eigentliche Konfiguration erfolgt durch die Dateien in diesem Verzeichnis:
/etc/ssh
Legen sie in jedem Fall eine Sicherungs-Kopie der Original-Datei sshd_conf an - Auch dann, wenn sie diese Datei nicht ändern:
$ cp /etc/ssh/sshd_conf /etc/ssh/sshd.bak
Ändern sie keinesfalls die Zugangs-Rechte zu diesem Verzeichnis oder einer darin enthaltenen Datei. Der SSH-Server interpretiert das als feindlichen Angriff und stellt seine Dienste ein !

sshd_conf

In dieser Text-Datei sind alle Anweisungen zur Konfiguration des SSH-Servers enthalten und gut kommentiert.
In den weiteren Absätzen werden ausgewählte Konfigurations-Variable vorgestellt.
Jede Änderung erfolgt auf eigenes Risiko !

Tipp: Dokumentieren sie jede einzelne manuell vorgenommene Änderung mit einem Kommentar und legen sie eine zusätzliche Sicherungs-Kopie der Datei an, wenn der SSH-Server zufriedenstellend läuft.

Alle Zeilen mit vorangestelltem # Zeichen wrden als Kommentare behandelt und bei der Konfiguration nicht berücksichtigt. Das trifft auch auf alle Variablen zu, deren Standard-Wert (default value) verwendet wird.
# Port 22
Dies ist der Standard-Port des SSH-Servers laut IANA. Wenn sie einen anderen Port wählen, dann muss dieser jedem SSH-Client bekannt sein.
Protocol 2
Das SSH-Protokoll ('Grammatik' der zur Verbindung erforderlichen Maßnahmen) gibt es in mehrenen Versionen. Sie muss den Clients nicht bekannt sein, da diese die Protokoll-Version normalerweise selbst herausfinden.
# ListenAddress 0.0.0.0
In der Standard-Einstellung lauscht der SSH-Server an allen IP-Adressen des Server-PC. Durch Angabe einer bestimmten Adresse können sie den SSH-Server auf diese einschränken.
Wenn die Adresse des Server-PC variabel ist (→ DHCP), dann darf man ListenAddress nicht ändern !
Wenn hier eine falsche Adresse eingetragen wird, dann ist der SSH-Server nicht mehr erreichbar !
# AddressFamily any
Normalerweise akzeptiert der SSHD sowohl Verbindungen mit → IPv4 als auch mit → IPv6. Das kann zu langen Wartezeiten beim Login führen. Wenn man IPv6 nicht verwendet, dann kann man das Protokoll auf IPv4 einschränken:
AddressFamily inet
# KeyRegenerationInterval 3600
Gibt die Zeit in Sekunden an, nach deren Ablauf der Schlüssel erneuert werden muss.
Kann man bei einem normal laufenden Server auf 600 reduzieren, da einfache Wartungs-Arbeiten nur selten länger dauern.
# ServerKeyBits 768
Länge des Schlüssels in Bit.
Kann man auf 1024 erhöhen - Gegen Geheimdienste schützt das jedoch auch nicht.
# PermitRootLogin yes
Gestattet die Anmeldung als Administrator root
Besser ist ein Verbot mit no
In diesem Fall muss man sich als normaler Linux-User anmelden und kann danach mit der Anweisung su die Identität wechseln, was jedoch die zusätzliche Angabe des root-Passworts erfordert.
# AllowUsers xyz
Durch Aktivierung dieser Variablen kann man begrenzen, welche(r) Linux-User sich über SSH anmelden dürfen.
Das ist sinnvoll und empfehlenswert, und in kleinen lokalen Netzwerken immer möglich. Die Namen mehrerer User werden mit Leerzeichen getrennt, z.B.
AllowUsers anna bert christa dieter
# UseDNS yes
Der Server versucht, die IP-Adresse des Clients mit Reverse IP-Lookup zu kontrollieren. Das ist im eigenen lokalen Netzwerk sinnlos und kann zu langen Wartezeiten beim Login führen. In diesem Fall
UseDNS no
# LoginGraceTime 120
Zeit in Sekunden, innerhalb derer eine Anmeldung fertig gestellt werden muss. Kann und soll man im eigenen lokalen Netzwerk auf 30 verkürzen.
# MaxAuthTries 6
Maximale Anzahl von Anmelde-Versuchen.
Kann meist auf 3 reduziert werden.
PrintMotd no
Der Wert verhindert die Anzeige täglich neuer Sprüche bei der Anmeldung.
# PrintLastLog yes
Zeigt Datum und Zeit der letzten Anmeldung an. Gibt aufmerksamen Usern die Möglichkeit, unbefugte Zugriffe zu erkennen.
# LogLevel INFO
Steuert das Ausmaß der in der Log-Datei dokumentierten Ereignisse.
Bei Verdacht auf einen Angriff verwendet man temporär den Wert DEBUG. Eine 'fascist' Konfiguration dokumentiert alle transportierten Daten, erzeugt jedoch riesige Log-Dateien und verlangsamt den Server.
# X11Forwarding no
Erlaubt den Transport von X11-Daten, d.h. von grafischen Fenstern über die SSH-Verbindung.
Für eine einfache Text-Konsole genügt no, für die bequeme Anwedung des grafischen User-Interface wird yes eingetragen.
Um diese Möglichkeit zu nutzen, muss man sich am Client mit Option -X anmelden, z.B.
# ssh -X root@192.168.0.1
Danach kann man an der Konsole jedes Programm starten, auch in mehreren Fenstern, z.B.
# konqueror&
# yast2&
# firefox&
Entfernte Server sind oft nur mit großem Aufwand zugänglich. In diesem Fall ist SSH der wichtigste Dienst zur Steuerung des Servers und sollte niemals ausfallen. Änderungen der SSH Konfiguration sind daher besonders heikel und sehr sorgfältig zu kontrollieren.

Jede Änderung wird erst durch einen Neustart des SSHD Servers in Betrieb gesetzt. Führen sie einen Restart nur dann durch, wenn sie eine garantiert funktionsfähige Sicherung der Konfigurations-Datei angelegt haben und diese notfalls mit einem anderen Dienst (FTP, Samba) austauschen können.

Unmittelbar nach dem Neustart testet man die Funktion des SSHD-Servers, insbesondere die geƤnderten Funktionen.

Kontrolle - Status, Start und Stop des SSH-Servers

Zur Kontrolle verwendet man am besten das gleiche Shell-Script-Programm, welches auch vom Betriebssystem zur Steuerung ds SSH-Servers verwendet wird:
/etc/init.d/sshd
Fast alle Script-Programme in diesem Verzeichnis akzeptiern als Argument einen beliebigen aus diesen Werten:
status, start, stop, restart
Anzeige des aktuellen Status:
$ /etc/init.d/sshd status
Neustart des SSH-Servers:
$ /etc/init.d/sshd restart
Tipp: Besser nicht mit Fernsteuerung ausführen, sondern nur direkt am Server-PC: Wenn es nicht klappt, schneidet man damit jede Verbindung zum Server ab.

Notfall 1

Wenn der SSH Server nicht mehr kontrollierbar sein sollte, dann kann man versuchen, das Betriebssystem des Server-PC neu zu starten. Das ist ohne SSH-Verbindung aus der Ferne leider oft aussichtslos.
Wenn man noch Dateien austauschen kann (FTP, FileServer), dann kopiert man z.B. eine kleine Shell-Script-Datei in das Verzeichnis
/etc/cron.hourly
z.B. mit diesem Inhalt:
#!/bin/sh
shutdown -r 0
Mit etwas Glück wird dann nach maximal 1 Stunde ein Neustart des Betriebssystems ausgeführt. Wenn das Server-Programm nicht beschädigt wurde, läuft danach wieder der SSH-Dienst.

Notfall 2

(Nur) Direkt am Server-PC kan man das SSH Server-Programm gewaltsam beenden:
$ ps -A | grep sshd
zeigt die PID-Nummer des SSH-Server-Programms an.
$ kill 12345
Setzen sie an Stelle der Zahl 12345 die angezeigte PID-Nummer ein und kontrollieren sie nochmals:
$ ps -A | grep sshd
Nur dann, wenn kein sshd-Prozess mehr angezeigt wird, ist es sinnvoll, den Server neu zu starten:
$ /etc/init.d/sshd start

XHTML CSS