Tech Blog.

Thoughts, stories, ideas.

Sécurité OpenSSH

10. February 2017

Configurer les protocoles SSL et les chiffres sur les serveurs web a longtemps été une bonne chose. Avec d’autres services, on l’oublie rapidement, même si un grand nombre d’entre eux ont la possibilité de le faire. Un bon exemple de ceci est le Serveur SSH OpenSSH.

SSH est un protocole très répandu et la plupart des serveurs offrent encore des clés hôte DSA, mais celles-ci ne sont plus considérées comme sécurisées. Cet article montrera comment mieux configurer le serveur et le client OpenSSH. La suite de chiffrement et d’autres paramètres sont également adaptés. Ensuite, lorsque vous vous connectez à un serveur plus ancien qui ne prend en charge aucun des chiffrement de la suite de chiffrement, il peut être nécessaire de personnaliser spécifiquement la suite de chiffrement. Dans la suite de chiffrement, toutes les courbes du NIST sont intentionnellement désactivées et Courbes elliptiques par Daniel J. Bernstein est activé. Une liste à jour de tous les algorithmes et chiffres possibles est disponible dans la page de manuel ssh_config ou avec la commande ssh -Q <cipher|key|kex|mac>.

Serveur OpenSSH

Les distributions actuelles (testées avec CentOS 7 et Debian Jessie) supportent les clés RSA et Ed25519. Si les touches Ed25519 ne sont pas encore prises en charge, il suffit de supprimer la ligne correspondante. Les clés hôte DSA doivent toujours être désactivées car elles sont considérées comme non sécurisées.

HostKey /etc/ssh/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh/ssh_host_ed25519_key

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-ha256
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com

En cas de chute, les paramètres ne sont pas pris en compte :

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa
FingerprintHash sha256
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa

Tous les paramètres et arguments ci-dessus ne sont pas déjà disponibles dans OpenSSH 6.6. En conséquence, les options correspondantes, selon la version, doivent simplement être supprimées.

 

Client OpenSSH

Les clients actuels (CentOS 7 et Debian Jessie) doivent comprendre la configuration suivante. Comme les clients accèdent souvent à des serveurs plus anciens (ou à des périphériques spéciaux comme le matériel réseau), certaines options telles que Ciphers, KexAlgorithms ou MACs doivent être adaptées.

Host *
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-rsa
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,umac-128-etm@openssh.com
FingerprintHash sha256
HostbasedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa

Selon la version installée, tous les paramètres et arguments mentionnés ci-dessus ne fonctionneront pas. La configuration listée ci-dessus a été créée avec OpenSSH 7.4p1.

Si vous vous connectez à un ancien serveur SSH qui ne supporte pas les options, la sortie ressemblera à ceci :

Impossible de négocier avec le port 22 du SERVER : aucun MAC correspondant trouvé. Leur offre : hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

Ceci peut être résolu en appelant ssh avec l’option -o MACs=hmac-sha1 ou en spécifiant les paramètres correspondants pour ce serveur dans la configuration.

Tests

Pour tester SSH Server, il existe un outil appelé ssh-audit. Tous les paramètres mentionnés ci-dessus du serveur SSH ont été vérifiés et partiellement étendus avec cet outil. Une sortie peut ressembler à ceci :

# general
(gen) banner: SSH-2.0-OpenSSH_7.4
(gen) software: OpenSSH 7.4
(gen) compatibility: OpenSSH 7.3+, Dropbear SSH 2016.73+
(gen) compression: enabled (zlib@openssh.com)
 
# key exchange algorithms
(kex) curve25519-sha256@libssh.org -- [info] available since OpenSSH 6.5, Dropbear SSH 2013.62
(kex) diffie-hellman-group18-sha512 -- [info] available since OpenSSH 7.3
(kex) diffie-hellman-group16-sha512 -- [info] available since OpenSSH 7.3, Dropbear SSH 2016.73
(kex) diffie-hellman-group14-sha256 -- [info] available since OpenSSH 7.3, Dropbear SSH 2016.73
 
# host-key algorithms
(key) ssh-rsa -- [info] available since OpenSSH 2.5.0, Dropbear SSH 0.28
(key) rsa-sha2-512 -- [info] available since OpenSSH 7.2
(key) rsa-sha2-256 -- [info] available since OpenSSH 7.2
(key) ssh-ed25519 -- [info] available since OpenSSH 6.5
 
# encryption algorithms (ciphers)
(enc) chacha20-poly1305@openssh.com -- [info] available since OpenSSH 6.5
`- [info] default cipher since OpenSSH 6.9.
(enc) aes256-gcm@openssh.com -- [info] available since OpenSSH 6.2
(enc) aes256-ctr -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
 
# message authentication code algorithms
(mac) hmac-sha2-512-etm@openssh.com -- [info] available since OpenSSH 6.2
(mac) hmac-sha2-256-etm@openssh.com -- [info] available since OpenSSH 6.2
 
# algorithm recommendations (for OpenSSH 7.4)
(rec) +aes128-ctr -- enc algorithm to append
(rec) +aes192-ctr -- enc algorithm to append
(rec) +aes128-gcm@openssh.com -- enc algorithm to append
(rec) +umac-128-etm@openssh.com -- mac algorithm to append

La dernière section, qui recommande des “recommandations” supplémentaires, est particulièrement pertinente ici.