SSH : Configuration Sécurisée

Article publié, le et modifié le
4 minute(s) de lecture

Cet article contient 805 mots.
Source brute de l'article : MD

Description

Le propos de cet article est d’aider à comprendre ce qu’il faut configurer pour obtenir une configuration sécurisée de votre client SSH.

Cela nécessite que votre version du client OpenSSH soit supérieure à la version 6.5 !

Configuration

Côté client, le plus simple est de modifier votre fichier de configuration, dans votre home personnel, ~/.ssh/config


Cet article n’aborde que la partie concernant le client ; pour la partie serveur, merci de lire mon autre article : SSHd : Durcir la configuration du serveur SSH

Chiffrements

Les algorithmes de Chiffrement à autoriser :

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com

Astuce

À vérifier au cas par cas… regardez donc le log d’authentification sur votre serveur !

Échange de clés

Les algorithmes des clés d’échange à privilègier sont :

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org

Algorithmes de la clé d’Hôte

Les recommandations actuelles pour les algorithmes des clés d’hôte sont :
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com

Perso, je n’utilise QUE : HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519

Astuce

Message Authentication Codes

Les algorithmes des Code d’Authentification de Messages à définir sont :
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com

Perso, je n’utilise plus QUE : MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-512

Astuce

TL;DR

Voici un exemple de configuration sécurisée minimal :

Fichier : ~/.ssh/config

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Host *
    Ciphers chacha20-poly1305@openssh.com
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
    KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-512

    ChallengeResponseAuthentication no
    #CheckHostIP yes
    Compression yes
    #CompressionLevel 9 # unsupported!
    ControlMaster auto
    ControlPersist yes
    ControlPath ~/.ssh/socket-%r@%h:%p
    HashKnownHosts yes
    ForwardAgent no
    ForwardX11 no
    ForwardX11Trusted yes
    PasswordAuthentication yes
    Protocol 2
    PubkeyAuthentication yes
    ServerAliveInterval 30
    ServerAliveCountMax 7
    #StrictHostKeyChecking yes
    TCPKeepAlive yes
    #UseRoaming no # Do not using with >= v7! (for oldier versions)
    VerifyHostKeyDNS yes
    VisualHostKey yes

    AddKeysToAgent yes
    #UseKeychain yes
    IdentityFile ~/.ssh/id_ed25519

Selon le manpage officiel, les configurations personnalisées à certains hôtes doivent être écrites avant la configuration générale Host * !

Utilisation

Attention

Les créations suivantes sont à faire côté client, bien sûr !

Mettre-à-jour vos clés RSA

ssh-keygen -o -p -f id_rsa -a 64

  • L’option -f spécifie le fichier de clé privée à utiliser.
  • L’option -o est celle qui utilise le durcissement PKBDF.
  • et pour finir, l’option -a définit le nombre de tours “de moulinettes” que va effectuer la génération.
Info

Nouvelles clés

Nouvelle clé ED25519

Info

ssh-keygen -t ed25519 -f fichier_id -a nb_tours

Tel que, par exemple :

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -a 64

Nouvelle clé RSA + PKBDF

ssh-keygen -t rsa -b nb_bits -f fichier_id -o -a nb_tours

Tel que, pour l’exemple :

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -o -a 64

Astuces

Si vous avez paramétré l’option LoginGraceTime sur le serveur, pensez à augmenter sa valeur, sinon vous aurez le droit à ne pas pouvoir vous connecter, sans aucun message d’erreur dans le log d’authentification.

En effet, selon le nombre de tours que vous avez paramétrés pour la génération de votre clé, ou sa mise-à-jour, le déchiffrement et la réponse du serveur prendra plus de temps, peut-être plus que le temps d’ouverture, de la fenêtre de connexion, autorisé.

Je mets à disposition mon script shell de génération de clés, basé sur lesdites informations…

Documentations

Manpages

Autres