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 : 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

  1. Échange de Version :
    • Premiers paquets échangés pour vérifier la version de SSH
  2. 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)
    • Algorithmes Négociés :
      • Host Key Algorithm (ex. : ssh-rsa)
      • Encryption Algorithm
      • MAC Algorithm
      • Compression Algorithm
    • Authentification du Serveur :
      • Vérification de l’empreinte : ssh-keygen -lf PUBKEYNAME
      • Sauvegarde : /home/user/.ssh/known_hosts
    • Finalisation de la Connexion :
      • Échange de SSH_MSG_NEWKEYS pour confirmer l’utilisation des nouvelles clés
  3. 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-keygen ou 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_config avec PasswordAuthentication no
          • Redémarrer SSH : systemctl restart ssh

Conclusion

SSHv2 : Version améliorée et sécurisée de SSH, essentielle pour l’accès à distance et l’administration des systèmes.

OpenSSH