SSH: Comment désactiver les chiffrements faibles?

47

L’équipe de sécurité de mon organisation nous a demandé de désactiver les systèmes de chiffrement faibles en raison de l’émission de clés faibles.

  arcfour
  arcfour128
  arcfour256

Mais j'ai essayé de chercher ces chiffres dans les fichiers ssh_config et sshd_config mais je les ai trouvés commentés.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Où puis-je vérifier pour désactiver ces chiffrements de SSH?

rɑːdʒɑ
la source
pour le serveur SSH, il sera dans /etc/ssh/sshd_configet pour le client SSH, il sera dans /etc/ssh/ssh_config. Vous voulez rechercher la Cipherligne dans chacun, et par exemple venez de Cipher aes256-ctrspécifier. Redémarrez ensuite SSH via /etc/init.d/sshd restartou via la commande systemd équivalente.
Ron
1
vous voulez vous familiariser avec tous les paramètres sshd_configsi vous vous souciez vraiment de la sécurité SSH, sinon ce peut être tout le théâtre de la sécurité.
Ron
@ron le deuxième commentaire est intrigant, pouvez-vous illustrer avec un exemple ce que vous souhaitez?
Jérôme
la ciphersliste n'est qu'un paramètre parmi d'autres pour que SSH soit correctement implémenté ... Protocol, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, etc. Vous pouvez compter sur leurs paramètres par défaut mis en œuvre dans votre distribution linux, maisIgnornance is bliss only up until you have a problem
ron

Réponses:

40

Si vous n'avez pas défini de liste explicite de chiffrements à l' ssh_configaide du Ciphersmot - clé, la valeur par défaut, selon man 5 ssh_config(côté client) et man 5 sshd_config(côté serveur), est la suivante:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            [email protected],[email protected],
            [email protected],
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Notez la présence des chiffres d'arc. Vous devrez donc peut-être explicitement définir une valeur plus restrictive pour Ciphers.

ssh -Q cipherdu client vous indiquera les schémas que votre client peut prendre en charge. Notez que cette liste n'est pas affectée par la liste de chiffrements spécifiés dans ssh_config. Supprimer un chiffre de ssh_configne le retirera pas de la sortie de ssh -Q cipher. De plus, utiliser sshl' -coption avec l' option de spécifier explicitement un chiffre effacera la liste restreinte de chiffrements que vous avez définie ssh_configet vous permettra éventuellement d'utiliser un chiffre faible. Cette fonctionnalité vous permet d’utiliser votre sshclient pour communiquer avec des serveurs SSH obsolètes qui ne prennent pas en charge les algorithmes de chiffrement plus récents.

nmap --script ssh2-enum-algos -sV -p <port> <host> vous dira quels modèles votre serveur prend en charge.

Ulrich Schwarz
la source
Bonjour, j’ai mentionné des chiffrements spécifiques dans ssh_config et redémarré le service ssh, mais quand j’ai fait ssh -Q cipher <nomhôte>, je reçois toujours tous les chiffrements que j’obtenais plus tôt, quelle que soit ma configuration.
vendredi
1
Je suis désolé, ssh_configest la configuration côté client, la configuration côté serveur est sshd_config, s'il vous plaît essayez cela. (On l'appelle aussi Cipherslà-bas.)
Ulrich Schwarz
Oui, je sais, mais lorsque je me suis mis à chercher des chiffres, je les ai trouvés à ssh_config, donc j’y ai apporté des modifications. En tant que serveur de production, je ne fais rien, je ne suis pas sûr
vendredi
Notez que les valeurs par défaut peuvent différer d'une distribution à l'autre.
Jonas Schäfer
On dirait qu'il n'y en a pas ssh -Qsur les anciennes versions. (par exemple, openssh v5.3p1 de CentOS 6)
Tomofumi
30

Pour désactiver RC4 et utiliser les chiffrements sécurisés sur le serveur SSH, codifiez en dur les éléments suivants dans /etc/ssh/sshd_config

ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

OU si vous préférez ne pas dicter les chiffrements mais simplement supprimer les chiffrements non sécurisés, exécutez ceci à la ligne de commande (en mode sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|[email protected]\)\,\?//g" >> /etc/ssh/sshd_config

Vous pouvez vérifier les codes actuellement utilisés par votre serveur avec:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Assurez-vous que votre client ssh peut utiliser ces chiffrements, exécutez

ssh -Q cipher | sort -u

pour voir la liste.

Vous pouvez également demander à votre client SSH de négocier uniquement les chiffrements sécurisés avec des serveurs distants. En /etc/ssh/ssh_configset:

Host *
    ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

Les extraits ci-dessus viennent d' ici.
Pour tester les paramètres de votre serveur, vous pouvez utiliser ssh-audit.

sauvageBum
la source
20

Le problème avec la spécification explicite d'une liste de chiffrement est que vous devez ajouter manuellement de nouveaux chiffrements au fur et à mesure qu'ils sortent. Au lieu de cela, énumérez simplement les chiffrements que vous souhaitez supprimer, en ajoutant à la liste (et non chaque chiffrement) un caractère '-'. Donc, dans ce cas, la ligne Ciphers devrait se lire:

Ciphers -arcfour*

Ou si vous préférez:

Ciphers -arcfour,arcfour128,arcfour256

Depuis la page de manuel sshd_config sur l' option Ciphers (depuis OpenSSH 7.5, publiée le 2017-03-20):

Si la valeur spécifiée commence par un caractère '+', les chiffrements spécifiés seront ajoutés au jeu par défaut au lieu de les remplacer. Si la valeur spécifiée commence par un caractère '-', les chiffrements spécifiés (y compris les caractères génériques) seront supprimés de l'ensemble par défaut au lieu de les remplacer.

Cela vaut également pour les KexAlgorithms et MACs options.

Spacedog
la source
2

activer / désactiver le chiffrement besoin de l'ajouter / le supprimer dans le fichier / etc / ssh / sshd_config Après avoir édité ce fichier, le service doit être rechargé

systemctl reload sshd
/etc/init.d/sshd reload

Ensuite, l’exécution de cette commande à partir du client vous indiquera quels schémas prennent en charge

ssh -Q cipher

Pour vérifier si arcfour cipher est activé ou non sur le serveur, exécutez cette commande.

ssh localhost -c arcfour

Pour vérifier si le chiffrement arcfour128 est activé ou non sur le serveur, exécutez cette commande.

ssh localhost -c arcfour128
Kumar
la source
Cette étape manquait dans les réponses ci-dessus
Saras Arya
1

Comment désactiver un chiffrement ssh faible, testé à 100% sur Fedora 29. Le problème: Nessus a signalé que mon serveur samba4 n’utilisait pas de chiffrements puissants aes256-cbc et aes128-cbc. Alors je mets ces lignes dans/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,[email protected]

Et voilà! .. il utilise toujours le chiffrement cbc car cette commande marche :(

ssh -c aes256-cbc samba4

Donc, je vérifie le systemd utile et je découvre que le service sshd utilise un autre fichier pour les chiffrements

/etc/crypto-policies/back-ends/opensshserver.config

Sauvegardez le fichier pour des raisons de sécurité

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Modifiez-le et supprimez le chiffrement cbc. Redémarrer le service

systemctl restart sshd

Et enfin, test, fonctionne très bien..cbc désactivé.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
Elbarna
la source