Installation de l'OpenSSH sous Debian¶
1. Objectif du cours¶
Installer et activer OpenSSH sous Debian 11, puis configurer et durcir le service SSH pour des connexions à distance sécurisées. Fournir les étapes pratiques pour l'installation côté serveur et client, et les bonnes pratiques de sécurité.
2. Notions et définitions essentielles¶
- SSH (Secure Shell) : protocole permettant d'exécuter des commandes sur un shell distant avec chiffrement des données et protection contre l'écoute et le détournement de connexion.
- OpenSSH : implémentation Open Source de SSH disponible dans les dépôts Debian, offrant tunneling, différentes méthodes d'authentification et gestion des clés.
- Composants courants d'OpenSSH : clients/commandes (ssh, scp, sftp), outils de gestion de clés (ssh-add, ssh-keygen, ssh-keyscan, ssh-keysign), côté service (sshd, sftp-server, ssh-agent).
3. Fonctionnement et principes¶
SSH chiffre les échanges entre client et serveur pour empêcher l'interprétation du trafic (y compris login/mot de passe) par un tiers. Contrairement à Telnet ou aux commandes « r » (non chiffrées), SSH protège contre l'écoute et le spoofing. OpenSSH assure le chiffrement de bout en bout, propose le tunneling sécurisé et plusieurs méthodes d'authentification (mot de passe, clés). Le démon sshd écoute un port (par défaut 22) et applique les règles définies dans /etc/ssh/sshd_config.
4. Commandes et manipulations¶
Regroupées par procédure (commandes telles qu'énoncées dans le document) :
- Préparer les droits sudo :
- apt-get install sudo
-
modifier le fichier des droits : nano /etc/sudoers
-
Mise à jour et installation du serveur SSH :
- sudo apt update
-
sudo apt-get install openssh-server
-
Gérer le service SSH (systemd) :
- démarrer : sudo systemctl start ssh
- activer au démarrage : sudo systemctl enable ssh
-
vérifier le statut : sudo systemctl status ssh
-
Vérifications réseau et connexion :
- connaître l'adresse IP du serveur : ip a
- connexion SSH (exemples) : ssh utilisateur@adresseIPserveur ; ssh cec@192.168.94.5
-
connexion sur port non‑standard : ssh -p5555 user@adresseIP
-
Installation et test du client OpenSSH sur Windows :
- Add-WindowsCapability –Online –Name OpenSSH.Client~~~~0.0.1.0
-
Get-WindowsCapability –Online –Name OpenSSH.Client~~~~0.0.1.0
-
Édition de la configuration SSH et prise en compte des modifications :
- sudo nano /etc/ssh/sshd_config
- sudo systemctl restart sshd
Si aucune commande n'est applicable en contexte particulier, elle n'est pas abordée dans ce cours.
5. Sécurité et bonnes pratiques¶
- Désactiver l'accès SSH direct du compte root (ex. PermitRootLogin no) pour réduire l'impact d'une compromission.
- Forcer l'utilisation de la version 2 du protocole (Protocol 2) ; refuser la version 1 pour raisons de sécurité.
- Modifier le port d'écoute par défaut (22) pour réduire le bruit des scans automatiques ; éviter les « well‑known ports ».
- Limiter explicitement les utilisateurs autorisés (principe « deny by default » / AllowUsers) pour refuser tout accès non spécifié.
- Imposer des mots de passe forts et interdire les comptes sans mot de passe.
- Réduire la durée maximale d'authentification (LoginGraceTime) pour limiter la fenêtre d'attaque par force brute.
- Surveiller régulièrement les logs SSH (/var/log/auth.log) pour détecter tentatives et anomalies.
6. Points essentiels à retenir pour le TSSR¶
- SSH = Secure Shell : chiffrement des échanges pour administration distante.
- OpenSSH est dans les dépôts Debian ; le serveur n'est pas installé par défaut sur une installation minimale.
- Fichier de configuration du service : /etc/ssh/sshd_config. Toute modification nécessite le redémarrage du service.
- Utiliser systemd pour démarrer, activer et vérifier le service SSH.
- Le port par défaut est 22 ; le changer réduit les scans automatiques.
- Interdire la connexion root et limiter les utilisateurs autorisés augmente fortement la sécurité.
- Forcer Protocol 2 et réduire LoginGraceTime pour diminuer la surface d'attaque.
- Surveiller /var/log/auth.log pour détecter tentatives de connexion et comportements anormaux.
- Sous Windows, OpenSSH client peut être ajouté via Add-WindowsCapability si nécessaire.
- Principe général : refuser tout ce qui n'est pas explicitement autorisé.
7. Tableau récapitulatif¶
| Élément | Valeur par défaut | Recommandation |
|---|---|---|
| Port d'écoute | 22 | Changer pour un port non standard |
| Protocol | 1 et 2 possibles (historique) | Forcer Protocol 2 |
| Connexion root | Permise par défaut selon distro | Désactiver (PermitRootLogin no) |
| Authentification | Durée par défaut 2 minutes | Réduire LoginGraceTime (ex. 30s) |
| Journalisation | /var/log/auth.log | Surveiller régulièrement |
8. Vérifications pratiques¶
- Vérifier que le service SSH est actif et en écoute via le statut systemd.
- Vérifier l'adresse IP du serveur pour établir la connexion distante.
- Tester la connexion SSH depuis un client (PuTTY ou ssh client) et observer le premier message d'alerte de clé d'hôte.
- Vérifier l'installation du client OpenSSH sur Windows via l'état de la capability.
- Consulter /var/log/auth.log pour confirmer connexions réussies/échouées et durée d'authentification.
9. Flashcards Anki¶
Que signifie l'acronyme SSH ? :: Secure Shell Quel paquet installe le serveur SSH sous Debian 11 ? :: openssh-server Dans quel fichier configure-t-on les droits sudo ? :: /etc/sudoers Où se trouve le fichier de configuration du service SSH ? :: /etc/ssh/sshd_config Quel est le port d'écoute par défaut pour OpenSSH ? :: 22 Commande pour activer SSH au démarrage du système ? :: sudo systemctl enable ssh Commande pour installer sudo en tant que root ? :: apt-get install sudo Commande pour redémarrer le service SSH après modification ? :: sudo systemctl restart sshd Paramètre pour interdire la connexion root via SSH ? :: PermitRootLogin no Fichier de logs à surveiller pour SSH ? :: /var/log/auth.log