Se connecter à un serveur via SSH (Secure Shell) est une tâche fondamentale pour les administrateurs système et les développeurs. Bien que SSH fournisse un canal crypté, il est essentiel de le configurer en toute sécurité pour protéger votre serveur contre les accès non autorisés. Ce guide couvre les pratiques clés pour des connexions SSH sécurisées.
1. Utiliser l'authentification par clé SSH
Les clés SSH sont nettement plus sécurisées que les mots de passe. Elles impliquent une paire de clés cryptographiques : une clé privée (gardée secrète sur votre machine locale) et une clé publique (placée sur le serveur).
- Générer des clés : Sur votre machine locale, utilisez
ssh-keygenpour créer une paire de clés.bash ssh-keygen -t rsa -b 4096Il vous sera demandé d'entrer une phrase de passe pour votre clé privée. Utilisez-en une forte. - Copier la clé publique sur le serveur : Utilisez
ssh-copy-idpour transférer facilement votre clé publique sur le serveur.bash ssh-copy-id username@your_server_ipCette commande ajoute votre clé publique au fichier~/.ssh/authorized_keyssur le serveur.
2. Désactiver l'authentification par mot de passe
Une fois l'authentification par clé SSH fonctionnelle, désactivez les connexions par mot de passe pour empêcher les attaques par force brute.
- Modifier la configuration SSH : Ouvrez le fichier de configuration du démon SSH sur le serveur.
bash sudo nano /etc/ssh/sshd_config - Modifier les paramètres : Trouvez et modifiez les lignes suivantes :
PasswordAuthentication no # Si vous utilisez la connexion root, assurez-vous qu'elle est également désactivée : # PermitRootLogin no - Redémarrer le service SSH : Appliquez les modifications en redémarrant le service SSH.
bash sudo systemctl restart sshd
3. Changer le Port SSH par Défaut
Le port SSH par défaut (22) est une cible courante pour les analyses automatisées. Le changer peut réduire le trafic indésirable.
- Modifier la configuration SSH : Dans
/etc/ssh/sshd_config, trouvez la lignePort 22et remplacez22par un numéro de port différent et non utilisé (par exemple,2222).Port 2222 - Mettre à jour le pare-feu : Assurez-vous que votre pare-feu autorise le trafic sur le nouveau port.
bash sudo ufw allow 2222/tcp sudo ufw delete allow ssh # Supprimer l'ancienne règle pour le port 22 - Redémarrer le service SSH :
bash sudo systemctl restart sshdLors de la connexion, vous devrez spécifier le nouveau port :ssh -p 2222 username@your_server_ip.
4. Limiter l'Accès Utilisateur
Restreignez l'accès SSH aux seuls utilisateurs nécessaires.
- Désactiver la connexion Root : Définissez
PermitRootLogin nodans/etc/ssh/sshd_config. Connectez-vous toujours en tant qu'utilisateur normal et utilisezsudopour les tâches administratives. - Autoriser des Utilisateurs/Groupes Spécifiques : Utilisez les directives
AllowUsersouAllowGroupsdanssshd_configpour mettre en liste blanche des comptes spécifiques.AllowUsers your_user another_user
5. Utiliser un Pare-feu
Configurez le pare-feu de votre serveur (par exemple, ufw) pour autoriser les connexions SSH uniquement à partir d'adresses IP ou de réseaux de confiance.
- Exemple avec UFW :
bash sudo ufw allow from trusted_ip_address to any port 2222 proto tcp # Ou pour autoriser depuis un sous-réseau spécifique # sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcpN'oubliez pas d'autoriser également les autres ports nécessaires à vos applications.
6. Implémenter Fail2Ban
Fail2Ban analyse les fichiers journaux à la recherche d'activités malveillantes (comme des tentatives de connexion répétées échouées) et met automatiquement à jour les règles du pare-feu pour bloquer les adresses IP fautives.
- Installer Fail2Ban :
bash sudo apt install fail2ban - Configurer : Il fonctionne généralement directement pour SSH, mais vous pouvez personnaliser ses paramètres dans
/etc/fail2ban/jail.local.
7. Maintenir le Logiciel à Jour
Mettez régulièrement à jour le système d'exploitation et le logiciel SSH de votre serveur pour corriger les vulnérabilités connues.
sudo apt update && sudo apt upgrade -y
En mettant en œuvre ces pratiques, vous améliorez considérablement la sécurité de vos connexions SSH et protégez votre serveur contre les accès non autorisés.