SSH (Secure Shell)
Définition
SSH est un protocole réseau cryptographique pour la connexion à distance sécurisée, l’exécution de commandes et le transfert de données sur un réseau non sécurisé. Il fournit une communication chiffrée, une authentification et une protection de l’intégrité.
SSH remplace des protocoles non sécurisés comme Telnet, rlogin et FTP. Il fonctionne par défaut sur le port 22 et utilise la cryptographie à clé publique pour l’authentification.
Concepts clés
- Authentification par clé publique : Le client prouve son identité à l’aide d’une clé privée ; le serveur possède la clé publique
- Authentification par mot de passe : Mot de passe utilisateur/mot de passe traditionnel (moins sécurisé, mais encore utilisé)
- Vérification de la clé d’hôte : La première connexion avertit de l’empreinte du serveur
- Forwarding/Tunneling de port : Redirige les ports locaux/distants via le canal chiffré SSH
- SCP/SFTP : Protocoles de transfert de fichiers sur SSH
- SSH Agent : Met en cache les clés privées déchiffrées pour éviter les répétitions de passphrase
- Known Hosts :
~/.ssh/known_hostsstocke les empreintes des serveurs pour détecter les attaques de type man-in-the-middle
Types de clés SSH
|| Type de clé | Bits par défaut | Niveau de sécurité | |———-|————-|—————-| | ed25519 | 256 | Élevé, rapide, recommandé | | RSA | 3072+ | Élevé, large compatibilité | | ECDSA | 256+ | Élevé, clés plus petites | | DSA | 1024 | Déprécié, à ne pas utiliser |
Commandes SSH courantes
ssh user@host # Se connecter à l'hôte distant
ssh -i key.pem user@host # Utiliser un fichier de clé spécifique
ssh -L 8080:localhost:80 # Forwarding de port local
ssh -R 9090:localhost:80 # Forwarding de port distant
ssh-keygen -t ed25519 # Générer une paire de clés ed25519
scp file user@host:/path # Copie de fichier sécurisée
sftp user@host # Transfert de fichiers interactif sécurisé
Bonnes pratiques de sécurité SSH
- Utiliser des clés ed25519 (pas DSA)
- Désactiver l’authentification par mot de passe, utiliser uniquement les clés
- Désactiver la connexion root (PermitRootLogin no)
- Utiliser Fail2Ban ou similaire pour la protection contre les attaques par force brute
- Rotation régulière des clés
- Utiliser le fichier config SSH pour les paramètres spécifiques à l’hôte
Termes associés
- Tls — le tunneling SSH peut créer des tunnels sécurisés
- Firewall — le port 22 SSH est une cible d’attaque courante
Références
- Wikipedia : https://en.wikipedia.org/wiki/SSH_(Secure_Shell)
- OpenSSH manual : https://man.openbsd.org/ssh
- SSH.com : https://www.ssh.com/ssh/