Unterabschnitte


SSH - Secure Shell

Allgemeines

'OpenSSH' ist eine freie SSH/SecSH-Protokollsuite, die Verschlüsselung für Netzwerkdienste bereitstellt, wie etwa Remotelogins, also Einloggen auf einem anderen, entfernten Rechner, oder auch Dateiübertragung von oder zu einem entfernten Rechner.

Noch ein Hinweis:
Hier finden sich eine Vielzahl von Informationen zu dem kostenlosen Windows-SSH-Klienten PuTTY. Es wird mindestens die PuTTY Version 0.63 benötigt um erfolgreich eine Verbindung zum Server aufbauen zu können.

Administratoren die von der eisfair Konfiguration abweichende Einstellungen benötigen oder wünschen, legen Ihre Konfiguration unter /etc/ssh/ssh{d}_config.d/*.conf ab. Diese Variablen werden dann Automatisch mit eingelesen.

'OpenSSH' liest jede Variable nur einmal, sobald eine Variable belegt ist, wird sie nicht mehr überschrieben. Nach Änderungen an der Konfiguration ist ein Neustart des Dienstes erforderlich.

Das Menü im Setup Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

  1. System administration  
  x. SSH - administration    
  1. View documentation
  2. Edit configuration
  3. Advanced configuration file handling
  4. Show status
  5. Stop service
  6. Start service
  7. (Re)-Create SSH Server Keys
  8. Validate SSHd manual config
  9. View log file

Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt „Edit Configuration “ geändert werden.

Nachdem der Editor beendet wurde wird die Konfiguration mit dem eischk-Programm automatisch auf syntaktische und teilweise auch auf semantische Fehler geprüft. Werden Fehler festgestellt, so werden diese gemeldet und der Benutzer zur Korrektur aufgefordert. Wird eine solche Korrektur nicht durchgeführt, so kann es zu unvorhersehbaren Fehlfunktionen bei den Diensten kommen.

Es wird zusätzlich gefragt, ob die Konfiguration angewendet (aktiviert) werden soll. Wird dieses verneint, so unterbleibt die Aktivierung. Wird die Aktivierung bestätigt, werden über ein Skript die durchgeführten Änderungen wirksam gemacht.

ACHTUNG
Es muss unbedingt darauf geachtet werden, dass eine fehlerfreie Konfiguration gespeichert wird, da es sonst beim nächsten Neustart des Servers zu unvorhersehbaren Fehlern kommen kann.


Wird die Aktivierung bestätigt, werden über ein Skript die durchgeführten Änderungen wirksam gemacht.

Die Konfigurationsdatei

Die Konfigurationsdatei /etc/config.d/ssh enthält die Parameter, die die einzelnen Dienste parametrisieren bzw festlegen, ob ein Dienst überhaupt zur Verfügung gestellt wird oder nicht.

Die Parameter

SSH - Secure Shell (general settings)

START_SSH

Soll der SSH-Server gestartet werden oder nicht?

Gültige Werte: yes, no

Standardeinstellung: START_SSH='no'

SSH_DAEMON_MAN_CONFIG

Dieser Parameter ist 'deprecated' und entfällt in Zukunft.

Legt fest, ob die Konfigurationsdatei /usr/etc/ssh/sshd_config.d automatisch generiert werden soll oder nicht angetastet wird. Im Fall SSH_DAEMON_MAN_CONFIG='yes' ist der Anwender für den korrekten Inhalt der Datei /etc/ssh/sshd_config.d/*.conf selbst verantwortlich.

Gültige Werte: yes, no

Standardeinstellung: SSH_DAEMON_MAN_CONFIG='no'

SSH_PORT

Definiert den TCP-Port, auf dem der SSH-Server Verbindungen entgegen nehmen soll.

Gültige Werte: Port Nummer

Standardeinstellung: SSH_PORT='22'

SSH - Secure Shell (protocol settings)

SSH_SERVER_CIPHERS

Über diesen Parameter wird festgelegt, welche Ciphers für SSH-Verbindungen zugelassen sind. Folgende Optionen stehen zur Verfügung:

Gültige Werte: all, default, Cipher-Name

all - Alle in OpenSSH implementierten Ciphers werden zugelassen.
default - Es wird eine reduzierte Standardauswahl von Ciphers zugelassen.
Cipher-Name - Ein oder mehrere, individuelle Cipher können eingegeben werden.
    Mehrere Werte müssen durch ein Komma voneinander getrennt
    werden. Beginnt der eingegebene Wert mit dem Wort 'default',
    so wird die Standardauswahl von Ciphers um den oder die
    gewünschten Cipher ergänzt.

Diese Cipher sind vorhanden:

eis # ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1k-fips 8 Jan 2015

eis # ssh -Q cipher - 3des-cbc
  - blowfish-cbc
  - cast128-cbc
  - arcfour
  - arcfour128
  - arcfour256
  - aes128-cbc
  - aes192-cbc
  - aes256-cbc
  - rijndael-cbc@lysator.liu.se
  - aes128-ctr (default)
  - aes192-ctr (default)
  - aes256-ctr (default)
  - aes128-gcm@openssh.com (default)
  - aes256-gcm@openssh.com (default)
  - chacha20-poly1305@openssh.com (default)

Standardeinstellung: SSH_SERVER_CIPHERS='default'

SSH_SERVER_KEXS

Über diesen Parameter wird festgelegt, welche KEX (Kex Exchange) Algorithmen für SSH-Verbindungen zugelassen sind. Folgende Optionen stehen zur Verfügung:

Gültige Werte: all, default, KEX-Name

all - Alle in OpenSSH implementierten KEXs werden zugelassen.
default - Es wird eine reduzierte Standardauswahl von KEXs zugelassen.
KEX-Name - Ein oder mehrere, individuelle KEX können eingegeben werden.
    Mehrere Werte müssen durch ein Komma voneinander getrennt
    werden. Beginnt der eingegebene Wert mit dem Wort 'default',
    so wird die Standardauswahl von KEXs um den oder die
    gewünschten KEX ergänzt.

Diese KEXs sind vorhanden:

eis # ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1k-fips 8 Jan 2015

eis # ssh -Q kex - diffie-hellman-group1-sha1
  - diffie-hellman-group14-sha1 (default)
  - diffie-hellman-group-exchange-sha1
  - diffie-hellman-group-exchange-sha256 (default)
  - ecdh-sha2-nistp256 (default)
  - ecdh-sha2-nistp384 (default)
  - ecdh-sha2-nistp521 (default)
  - diffie-hellman-group1-sha1
  - curve25519-sha256@libssh.org (default)

Standardeinstellung: SSH_SERVER_KEKS='default'

SSH_SERVER_MACS

Über diesen Parameter wird festgelegt, welche MACs (Message Authentication Code) für SSH-Verbindungen zugelassen sind. Folgende Optionen stehen zur Verfügung:

Gültige Werte: all, default, MAC-Name

all - Alle in OpenSSH implementierten MACs werden zugelassen.
default - Es wird eine reduzierte Standardauswahl von MACs zugelassen.
MAC-Name - Ein oder mehrere, individuelle MAC können eingegeben werden.
    Mehrere Werte müssen durch ein Komma voneinander getrennt
    werden. Beginnt der eingegebene Wert mit dem Wort 'default',
    so wird die Standardauswahl von MACs um den oder die
    gewünschten MAC ergänzt.

Diese MACs sind vorhanden:

eis # ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1k-fips 8 Jan 2015

eis # ssh -Q mac - hmac-sha1
  - hmac-sha1-96
  - hmac-sha2-256 (default)
  - hmac-sha2-512 (default)
  - hmac-md5
  - hmac-md5-96
  - hmac-ripemd160
  - hmac-ripemd160@openssh.com
  - umac-64@openssh.com (default)
  - umac-128@openssh.com (default)
  - hmac-sha1-etm@openssh.com
  - hmac-sha1-96-etm@openssh.com
  - hmac-sha2-256-etm@openssh.com (default)
  - hmac-sha2-512-etm@openssh.com (default)
  - hmac-md5-etm@openssh.com
  - hmac-md5-96-etm@openssh.com
  - hmac-ripemd160-etm@openssh.com
  - umac-64-etm@openssh.com (default)
  - umac-128-etm@openssh.com (default)

Standardeinstellung: SSH_SERVER_MACS='default'

SSH - Secure Shell (listen address settings)

SSH_LISTEN_ADDR_N

Über diesen Parameter wird die Anzahl der individuell konfigurierten IP-Adressen angegeben, auf welchen der SSH-Server Verbindungen entgegen nehmen soll. Wird der Wert dieses Parameters auf '0' gesetzt, so werden Verbindungen auf allen lokalen IP-Adressen des Servers entgegen genommen.

Gültige Werte: Zahl

Standardeinstellung: SSH_LISTEN_ADDR_N='0'

SSH_LISTEN_ADDR_x_NAME

An dieser Stelle kann eine Beschreibung angegeben werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_LISTEN_ADDR_x_NAME=''

SSH_LISTEN_ADDR_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes, no

Standardeinstellung: SSH_LISTEN_ADDR_x_ACTIVE='no'

SSH_LISTEN_ADDR_x

Über diesen Parameter wird die IP-Adresse festgelegt, über welche der SSH-Server Verbindungen entgegen nehmen soll. Hier ist die IP-Adresse aus /etc/config.d/base anzugeben. Diese Angabe ist also eine Referenz auf eine Angabe in der Datei base.

Beispiel: SSH_LISTEN_ADDR_1='2' zeigt auf IP_ETH_2_IPADDR in /etc/config.d/base.

Gültige Werte: 1 bis IP_ETH_N (siehe Datei base)

Standardeinstellung: SSH_LISTEN_ADDR_x='1'

SSH - Secure Shell (allow/deny settings)

ACHTUNG
Bitte diese Konfigurationsmöglichkeiten mit Vorsicht einsetzen. Alle vier Listen werden beim Login geprüft. Durch eine falsche Eingabe ist es durchaus möglich wichtige Benutzer (z.B. root oder eis) vom Login auszuschließen.


SSH_ALLOW_USER_N

Anzahl der folgenden Angaben SSH_ALLOW_USER_x.

Ein Login ist erlaubt für alle Benutzer, deren Benutzername mit einem der angegebenen Muster übereinstimmt. Dabei sind die Platzhalter '*' (für eine unbegrenzte Anzahl beliebiger Zeichen) und '?' (für ein beliebiges Zeichen) möglich.

Wird der Wert '0' angegeben, so dürfen sich alle Anwender über SSH in den Server einloggen.

Gültige Werte: Zahl

Standardeinstellung: SSH_ALLOW_USER_N='0'

SSH_ALLOW_USER_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_ALLOW_USER_x_NAME=''

SSH_ALLOW_USER_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes, no

Standardeinstellung: SSH_ALLOW_USER_x_ACTIVE='no'

SSH_ALLOW_USER_x

Muster für Benutzernamen, die sich via sshd einloggen dürfen. Die Angabe 'r*' bei SSH_ALLOW_USER_x erlaubt beispielsweise ein Login für alle Benutzer, deren Benutzername mit dem Buchstaben 'r' beginnt.

Gültige Werte: Muster oder Name

Standardeinstellung: SSH_ALLOW_USER_x='root'

SSH_DENY_USER_N

Anzahl der folgenden Angaben SSH_DENY_USER_x.

Ein Login ist nicht erlaubt für alle Benutzer, deren Benutzername mit einem der angegebenen Muster übereinstimmt. Dabei sind die Platzhalter '*' (für eine unbegrenzte Anzahl beliebiger Zeichen) und '?' (für ein beliebiges Zeichen) möglich.

Wird der Wert '0' angegeben, so dürfen sich alle Anwender über SSH in den Server einloggen.

Gültige Werte: Zahl

Standardeinstellung: SSH_DENY_USER_N='0'

SSH_DENY_USER_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_DENY_USER_x_NAME=''

SSH_DENY_USER_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes, no

Standardeinstellung: SSH_DENY_USER_x_ACTIVE='no'

SSH_DENY_USER_x

Muster für Benutzernamen, die sich nicht via sshd einloggen dürfen. Die Angabe 'b*' bei SSH_DENY_USER_x verbietet beispielsweise ein Login für alle Benutzer, deren Benutzername mit b beginnt.

Gültige Werte: Muster oder Name

Standardeinstellung: SSH_DENY_USER_x='batch'

SSH_ALLOW_GROUP_N

Anzahl der folgenden Angaben SSH_ALLOW_GROUP_x.

Ein Login ist erlaubt für alle Benutzer, deren primäre oder zusätzliche Gruppe mit einem der angegebenen Muster übereinstimmt. Dabei sind die Platzhalter '*' (für eine unbegrenzte Anzahl beliebiger Zeichen) und '?' (für ein beliebiges Zeichen) möglich.

Wird der Wert '0' angegeben, so dürfen sich alle Anwender über SSH in den Server einloggen.

Gültige Werte: Zahl

Standardeinstellung: SSH_ALLOW_GROUP_N='0'

SSH_ALLOW_GROUP_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_ALLOW_GROUP_x_NAME=''

SSH_ALLOW_GROUP_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes, no

Standardeinstellung: SSH_ALLOW_GROUP_x_ACTIVE='no'

SSH_ALLOW_GROUP_x

Muster für Gruppennamen, deren Benutzer sich via sshd einloggen dürfen. Die Angabe 's*' bei SSH_ALLOW_GROUP_x erlaubt beispielsweise ein Login für alle Benutzer, deren primäre oder zusätzliche Gruppe mit s beginnt.

Gültige Werte: Muster oder Name

Standardeinstellung: SSH_ALLOW_GROUP_x='root'

SSH_DENY_GROUP_N

Anzahl der folgenden Angaben SSH_DENY_GROUP_x. Ein Login ist nicht erlaubt für alle Benutzer, deren primäre oder zusätzliche Gruppe mit einem der angegebenen Muster übereinstimmt. Dabei sind die Platzhalter '*' (für eine unbegrenzte Anzahl beliebiger Zeichen) und '?' (für ein beliebiges Zeichen) möglich.

Wird der Wert '0' angegeben, so dürfen sich alle Anwender über SSH in den Server einloggen.

Gültige Werte: Zahl

Standardeinstellung: SSH_DENY_GROUP_N='0'

SSH_DENY_GROUP_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_DENY_GROUP_x_NAME=''

SSH_DENY_GROUP_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes, no

Standardeinstellung: SSH_DENY_GROUP_x_ACTIVE='batch'

SSH_DENY_GROUP_x

Muster für Gruppennamen, deren Benutzer sich nicht via sshd einloggen dürfen. Die Angabe 'v*' bei SSH_DENY_GROUP_x verbietet beispielsweise ein Login für alle Benutzer, deren primäre oder zusätzliche Gruppe mit v beginnt.

Gültige Werte: Muster oder Name

Standardeinstellung: SSH_DENY_GROUP_x=''

SSH_PERMITROOTLOGIN

Über diese Angabe kann die Möglichkeit des Logins für den Benutzer root feiner gesteuert werden. Es sind folgende Angaben möglich:

'yes' der Benutzer root darf sich via ssh anmelden.

'no' der Benutzer root darf sich nicht via ssh anmelden.

'without-password' die Identifizierung über ein Passwort ist nicht erlaubt. Diese Option ermöglicht allerdings trotzdem eine Anmeldung mit Passwort, wenn z.B. eine PAM-Authentifizierung eingeschaltet ist.

'forced-commands-only' der Benutzer root darf sich nur dann über Key Authentifizierung anmelden, wenn ein Kommando direkt über den ssh Befehl angegeben wurde.

Gültige Werte: yes, no, without-password, forced-commands-only

Standardeinstellung: SSH_PERMITROOTLOGIN='yes'

SSH - Secure Shell (public key settings for user root)

Die für die Public Key Authentication des Benutzer root benötigte Datei /root/.ssh/authorized_keys wird aus den Informationen der Konfiguration generiert. Dazu müssen die öffentlichen Teile der mittels ssh-keygen generierten Schlüsselpaare (identity.pub) in der Konfiguration angegeben werden. Das kann auf zwei Arten geschehen:

Bei Übernahme einer Konfigurationsänderung extrahiert das Konfigurationsskript die Schlüssel aus der Konfiguration bzw. den dort referenzierten Dateien und erstellt die Datei authorized_keys neu.

ACHTUNG
Hat der Parameter SSH_PUBLIC_KEY_N den Wert '0', so wird die Datei /root/.ssh/authorized_keys gelöscht. Wurde diese Datei unter Umgehung der eisfair Konfigurationsprozesse geändert, so gehen diese Änderungen verloren.


SSH_PUBLIC_KEY_N

Anzahl der folgenden Angaben SSH_PUBLIC_KEY_x

Gültige Werte: Zahl

Standardeinstellung: SSH_PUBLIC_KEY_N='0'

SSH_PUBLIC_KEY_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. Dieser Parameter wird nicht ausgewertet.

Gültige Werte: alles

Standardeinstellung: SSH_PUBLIC_KEY_x_NAME=''

SSH_PUBLIC_KEY_x_ACTIVE

Public key aktivieren 'yes' oder 'no'

Gültige Werte: yes, no

Standardeinstellung: SSH_PUBLIC_KEY_x_ACTIVE='no'

SSH_PUBLIC_KEY_x

Public Key (identity.pub), entweder direkt oder als absoluter Dateiname

Gültige Werte: Pfad oder Wert

Standardeinstellung: SSH_PUBLIC_KEY_x=”

SSH - Secure Shell (additional settings)

SSH_MAX_STARTUPS

Dieser Parameter gibt die maximale Anzahl gleichzeitig zulässiger noch nicht authentifizierter Verbindungen. Dies ist nicht die maximale Anzahl gleichzeitiger Verbindungen, sondern betrifft nur die Anzahl der Verbindungen, für die noch keine Authentifizierung (z.B. gültiges Passwort) durchgeführt wurde.

Gültige Werte:

Standardeinstellung: SSH_MAX_STARTUPS='10'

SSH_COMPRESSION

Erlaube Datenkompression.

Gültige Werte: yes, no

Standardeinstellung: SSH_COMPRESSION='yes'

SSH_STRICTMODES

Legt fest, ob der sshd die Zugriffsrechte und den Besitzer des Home-Verzeichnisses beim Login prüfen soll

Gültige Werte: yes, no

Standardeinstellung: SSH_STRICTMODES='yes'

SSH_PASSWDAUTH

Erlaube Passwort-Authentifizierung 'yes' oder nicht 'no'. Ist die Passwort-Authentifizierung ausgeschaltet 'no', so muss zwingend Key-Authentifizierung genutzt werden.

ACHTUNG
Bitte zunächst überprüfen, ab die Key-Authentifizierung auch funktioniert, erst dann SSH_PASSWDAUTH auf 'no' setzen.


Gültige Werte: yes, no

Standardeinstellung: SSH_PASSWDAUTH='yes'

SSH_CH_RESPONSEAUTH

Erlaube sogenannte Response Authentication, ja oder nein. Diese Variable wird später, im Zusammenhang mit PAM Authentifizierung benötigt.

Gültige Werte: yes, no

Standardeinstellung: SSH_CH_RESPONSEAUTH='yes'

SSH_CLIENTALIVEINTERVAL

Timeout-Intervall in Sekunden für sogenannte Client Alive Messages.

Gültige Werte: Zahl

Standardeinstellung: SSH_CLIENTALIVEINTERVAL='0'

SSH_CLIENTALIVECOUNTMAX

Anzahl der Client Alive Messages bis die Verbindung unterbrochen wird.

Gültige Werte: Zahl

Standardeinstellung: SSH_CLIENTALIVECOUNTMAX='3'

SSH - Secure Shell (subsystem settings)

SSH_ENABLE_SFTP

Legt fest, ob die Benutzung des sftp-Dienstes erlaubt wird.

Gültige Werte: yes, no

Standardeinstellung: SSH_ENABLE_SFTP='yes'

SSH - Secure Shell (log level settings)

SSH_LOGLEVEL

Die Stufe der Ausführlichkeit, mit der der sshd Meldungen in die Datei /var/log/messages schreibt.

Bitte beachten: Wird hier eine DEBUG-Stufe eingestellt, so werden ggf. Informationen mitgeschrieben, die in den Privatbereich eines Benutzers fallen können. Eine solche Ausführlichkeit sollte nur wenn unbedingt notwendig eingeschaltet werden.

Die Menge der Informationen, die mitgeschrieben werden, steigt ggf. in gewaltige Größenordnungen.

Gültige Werte: QUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,DEBUG1,DEBUG2,DEBUG3

Standardeinstellung: SSH_LOGLEVEL='INFO'

SSH_USE_BTMP_LOGFILE

In der Logdatei /var/log/btmp werden fehlgeschlagene Loginversuche (bad login attempt) protokolliert. Der Inhalt kann mittels des Kommandos lastb angezeigt werden. Außerdem wird einem Benutzer, bei dem ein fehlgeschlagener Loginversuch stattgefunden hat, dies beim nächsten erfolgreichen Login mit einer Zeile wie

Last failed login: Thu Feb 26 15:07:53 CET 2015 from fusi2000.ap.de on sh:notty
There was 1 failed login attempt since the last successful login.

angezeigt. Existiert die Datei /var/log/btmp nicht, so können fehlgeschlagene Loginversuche in der oben genannten Form nicht angezeigt werden.

Bei SSH_USE_BTMP_LOGFILE='yes' wird die Datei /var/log/btmp, falls nicht bereits vorhanden, mit den korrekten Zugriffsrechten angelegt.

ACHTUNG
Bei sehr vielen fehlgeschlagenen Loginversuchen kann die Datei /var/log/btmp sehr schnell sehr groß werden. Das logrotate für /var/log/btmp wird gemeinsam mit /var/log/wtmp über die Konfiguration in /etc/logrotate.d/wtmp gesteuert.


Bei SSH_USE_BTMP_LOGFILE='no' wird die Datei /var/log/btmp gelöscht.

Um unnötige Fehlermeldungen im Systemlog zu vermeiden wird die Datei /etc/pam.d/sshd entsprechend angepasst.

Gültige Werte: yes, no

Standardeinstellung: SSH_USE_BTMP_LOGFILEL='no'