Es darf nur SSH Protokol Version 2 erlaubt werden, die veraltete Version 1 darf nicht mehr verwendet werden.

# file: /etc/ssh/sshd_config
Protocol 2

Exkurs: Einstellung kryptographischer Verfahren

Die Auswahl der kryptographischen Verfahren soll nach dem Stand der Technik (oder kann nach dem Stand der Wissenschaft) erfolgen und regelmäßig neu bewertet werden. Hierbei kann man sich an den Hinweisen von https://cipherli.st orientieren.

Es sollen nur starke Host-Schlüssel für die Authentifizierung des Hosts verwendet werden. Andere Schlüssel sollen aus der Konfiguration gelöscht werden.

# file: /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

Bereits existierende Schlüssel sollen gelöscht und neu erstellt werden.

cd /etc/ssh
rm ssh_host_*key*
ssh-keygen -t ed25519 -q -N "" -f ssh_host_ed25519_key
ssh-keygen -t rsa -b 4096 -q -N "" -f ssh_host_rsa_key

Die folgenden Verschlüsselungsalgorithmen werden vorgeschlagen (Stand: 01.02.2017):

# file: /etc/ssh/sshd_config
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,
    aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,
    hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,
    hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com

Um einen sicheren Schlüsseltausch zu gewährleisten, sollten zu kleine Generatoren entfernt werden.

awk '$5 > 2000' /etc/ssh/moduli > "/etc/ssh/moduli.safe"
mv /etc/ssh/moduli.safe /etc/ssh/moduli

Sollte die Datei `/etc/ssh/moduli` nicht existieren oder leer sein, so kann man sie folgendermaßen erstellen (dauert u.U. mehrere Stunden).

ssh-keygen -G /etc/ssh/moduli.all -b 4096
ssh-keygen -T /etc/ssh/moduli.safe -f /etc/ssh/moduli.all
mv /etc/ssh/moduli.safe /etc/ssh/moduli
rm /etc/ssh/moduli.all

Auch Clients sollten ausschließlich starke Verschlüsselung verwenden.

# file: /etc/ssh/ssh_config
HashKnownHosts yes
ConnectTimeout 30
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,
    hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,
    hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,
    aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
ServerAliveInterval 10
ControlMaster auto
ControlPersist yes
ControlPath ~/.ssh/socket-%r@%h:%p