SSH (Secure Shell) V2
Introduction
SSH-1 est un protocole propriétaire conçu en 1995 voué à établir des communications chiffrées, en remplaçant les protocoles utilisés jusqu’alors tels que Telnet, rsh, rlogin, et ftp.
Anecdote
Son concepteur, Tatu Ylonen, a par la suite fondé la société SSH Communications Security pour tirer parti de son innovation ; désormais, son entreprise est côtée eb bourse.
La seconde version, SSH-2, normalisée par l’IETF en 2006, s’est imposée comme un standard durable et largement répandu au sein des implémentations du protocole.
SSH-3
Il n’existe pas de troisième version d’SSH, quoiqu’on puisse voir apparaître une telle dénomination dans le papier https://arxiv.org/abs/2312.08396. Pour en lire davantage à ce sujet : SH3 n’est pas la suite d’SSH
Fonctionnalités de Base
- SCP (Secure Copy) : Copie de fichiers sécurisée.
Par exemple :
scp test.txt user@adresse_IP:/home/user - Console distante : Ouvrir un shell vers un hôte distant.
Par exemple :
ssh user@adresse_ip
Fonctionnement de SSH
- Protocole Client/Serveur : TCP sur le port 22
- Automatisation :
- Exécution de scripts sur plusieurs machines
- Exemple de script :
for server in 192.168.1.1 192.168.1.2 192.168.1.3
do
scp ./script.sh user@$server:
ssh user@$server /home/user/script.sh >> test.txt
done- Outils Complémentaires : Ansible pour gérer plusieurs machines
Banner Grabbing et Implémentations
- Banner Grabbing : Telnet, nmap, netcat
- Implémentation Courante : OpenSSH
SSHv1 vs SSHv2
- SSHv1 :
- Vulnérabilités : Chiffrement faible, attaques “man-in-the-middle”
- SSHv2 :
- Basé sur les RFC 4250/4251/4252
- Plus sécurisé et modulaire
Établissement de la Connexion SSHv2
- Échange de Version :
- Premiers paquets échangés pour vérifier la version de SSH
- SSH-TRANS (Transport Layer) :
- KEX (Key Exchange) :
- Algorithmes : Diffie-Hellman (ex. :
diffie-hellman-group16-sha512) - Échange de clés :
- Client :
SSH_MSG_KEXDH_INIT(clé publique ( g^a \mod p )) - Serveur :
SSH_MSG_KEXDH_REPLY(clé publique ( g^b \mod p ) et signature)
- Client :
- Algorithmes : Diffie-Hellman (ex. :
- Algorithmes Négociés :
- Host Key Algorithm (ex. :
ssh-rsa) - Encryption Algorithm
- MAC Algorithm
- Compression Algorithm
- Host Key Algorithm (ex. :
- Authentification du Serveur :
- Vérification de l’empreinte :
ssh-keygen -lf PUBKEYNAME - Sauvegarde :
/home/user/.ssh/known_hosts
- Vérification de l’empreinte :
- Finalisation de la Connexion :
- Échange de
SSH_MSG_NEWKEYSpour confirmer l’utilisation des nouvelles clés
- Échange de
- KEX (Key Exchange) :
- SSH-AUTH (Authentication Layer) :
- Méthodes :
- Nom d’utilisateur/Mot de passe : Moins sécurisé, sujet aux attaques par force brute
- Clé Publique/Privée :
- Création :
ssh-keygenou PuTTYgen - Copie :
ssh-copy-id -i PUBKEYFILENAME user@adresse_IP - Stockage :
/home/user/.ssh/authorized_keys - Désactivation de l’authentification par mot de passe :
- Modifier
/etc/ssh/sshd_configavecPasswordAuthentication no - Redémarrer SSH :
systemctl restart ssh
- Modifier
- Création :
- Méthodes :
Conclusion
SSHv2 : Version améliorée et sécurisée de SSH, essentielle pour l’accès à distance et l’administration des systèmes.