🔐 Sécuriser la connexion SSH pour éviter les attaques par force brute
Le port SSH par défaut (22) est souvent ciblé par des attaques automatisées par force brute. Ce guide vous apprendra à changer le port SSH et à configurer des options de sécurité supplémentaires pour protéger votre serveur.
📋 Prérequis
- Un serveur VPS avec accès root ou sudo
- Une connexion SSH active
- UFW installé et configuré (voir le tutoriel Installer UFW)
⚠️ IMPORTANT : Gardez une session SSH ouverte
Important: Avant de commencer, gardez une session SSH active. Si quelque chose ne fonctionne pas, vous pourrez encore vous connecter et corriger le problème.
Ouvrez deux terminaux SSH en parallèle :
- Terminal 1 : Session de travail (pour faire les modifications)
- Terminal 2 : Session de secours (au cas où)
🔧 Changer le port SSH
Étape 1 : Choisir un nouveau port
Choisissez un port entre 1024 et 65535. Les ports courants à éviter :
- 22 (port SSH par défaut, très ciblé)
- 80, 443 (HTTP/HTTPS)
- 3306, 5432 (bases de données)
Exemples de ports sécurisés : 2222, 2200, 1022, 5000
Étape 2 : Modifier la configuration SSH
# Éditer le fichier de configuration SSH sudo nano /etc/ssh/sshd_config
Étape 3 : Modifier le port
Cherchez la ligne #Port 22 et modifiez-la :
# Avant
#Port 22
# Après (remplacez 2222 par votre port choisi)
Port 2222
Astuce : Utilisez Ctrl + W dans nano pour rechercher "Port 22"
Étape 4 : Sauvegarder et quitter
Dans nano :
Ctrl + Xpour quitterYpour confirmerEntréepour enregistrer
Étape 5 : Vérifier la syntaxe
# Vérifier que la configuration est valide sudo sshd -t
Si cette commande ne retourne aucune erreur, votre configuration est correcte.
Étape 6 : Autoriser le nouveau port dans UFW
# Autoriser le nouveau port SSH (remplacez 2222 par votre port) sudo ufw allow 2222/tcp # Optionnel : Supprimer l'ancien port 22 si vous ne l'utilisez plus sudo ufw delete allow 22/tcp # Recharger UFW sudo ufw reload # Vérifier que la règle est active sudo ufw status | grep 2222
Étape 7 : Redémarrer le service SSH
# Redémarrer SSH avec la nouvelle configuration sudo systemctl restart sshd # Vérifier que SSH fonctionne toujours sudo systemctl status sshd
Étape 8 : Tester la nouvelle connexion
Dans un nouveau terminal, testez la connexion avec le nouveau port :
# Remplacez 2222 par votre port et utilisateur@votre-ip par vos identifiants ssh -p 2222 utilisateur@votre-ip
Si la connexion fonctionne, vous pouvez fermer l'ancienne session sur le port 22.
🔒 Options de sécurité supplémentaires
Désactiver la connexion root
Important: Désactiver la connexion root via SSH est une excellente pratique de sécurité. Assurez-vous d'avoir un utilisateur avec sudo configuré avant de faire cette modification.
# Éditer la configuration SSH sudo nano /etc/ssh/sshd_config # Chercher et modifier cette ligne PermitRootLogin no # Sauvegarder et redémarrer sudo sshd -t sudo systemctl restart sshd
Limiter les tentatives de connexion
sudo nano /etc/ssh/sshd_config # Ajouter ou modifier ces lignes MaxAuthTries 3 # Maximum 3 tentatives de connexion LoginGraceTime 30 # Délai de 30 secondes pour se connecter
Désactiver l'authentification par mot de passe (utiliser uniquement les clés SSH)
sudo nano /etc/ssh/sshd_config # Modifier cette ligne PasswordAuthentication no PubkeyAuthentication yes
Attention: N'activez cette option que si vous avez configuré une clé SSH et testé qu'elle fonctionne !
Utiliser uniquement la version 2 du protocole SSH
sudo nano /etc/ssh/sshd_config # Ajouter cette ligne (si elle n'existe pas) Protocol 2
Désactiver les tunnels X11 (si vous n'en avez pas besoin)
sudo nano /etc/ssh/sshd_config # Modifier cette ligne X11Forwarding no
Configuration complète recommandée
Voici une configuration SSH sécurisée complète à ajouter dans /etc/ssh/sshd_config :
# Port SSH personnalisé
Port 2222
# Désactiver root login
PermitRootLogin no
# Limites de connexion
MaxAuthTries 3
LoginGraceTime 30
# Désactiver l'authentification par mot de passe (si vous utilisez des clés SSH)
# PasswordAuthentication no
# PubkeyAuthentication yes
# Protocole SSH version 2 uniquement
Protocol 2
# Désactiver X11 forwarding
X11Forwarding no
# Désactiver les tunnels TCP
AllowTcpForwarding no
# Temps d'inactivité avant déconnexion
ClientAliveInterval 300
ClientAliveCountMax 2
Après chaque modification, n'oubliez pas de :
# Vérifier la syntaxe sudo sshd -t # Redémarrer SSH sudo systemctl restart sshd
🔄 Créer un utilisateur avec sudo (si nécessaire)
Si vous avez désactivé la connexion root, assurez-vous d'avoir un utilisateur avec les privilèges sudo :
# Créer un nouvel utilisateur sudo adduser monutilisateur # Ajouter l'utilisateur au groupe sudo sudo usermod -aG sudo monutilisateur # Tester que l'utilisateur peut utiliser sudo su - monutilisateur sudo whoami # Devrait afficher "root"
✅ Vérification finale
Vérifier que SSH fonctionne
# Vérifier le statut du service sudo systemctl status sshd # Vérifier que SSH écoute sur le bon port sudo netstat -tlnp | grep ssh # ou sudo ss -tlnp | grep ssh # Vérifier la configuration sudo sshd -T | grep port
Vérifier les logs SSH
# Voir les tentatives de connexion sudo tail -f /var/log/auth.log # Voir les connexions réussies sudo grep "Accepted" /var/log/auth.log # Voir les tentatives échouées sudo grep "Failed" /var/log/auth.log
🛡️ Protection supplémentaire avec fail2ban
fail2ban est un outil qui bloque automatiquement les IPs qui tentent des attaques par force brute.
Installation de fail2ban
sudo apt update sudo apt install fail2ban -y
Configuration de base
# Copier le fichier de configuration sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Éditer la configuration sudo nano /etc/fail2ban/jail.local
Configuration recommandée pour SSH :
[sshd] enabled = true port = 2222 # Votre nouveau port SSH maxretry = 3 # Nombre de tentatives avant bannissement bantime = 3600 # Temps de bannissement en secondes (1 heure) findtime = 600 # Fenêtre de temps pour compter les tentatives (10 minutes)
Activer fail2ban
# Démarrer fail2ban sudo systemctl start fail2ban # Activer au démarrage sudo systemctl enable fail2ban # Vérifier le statut sudo systemctl status fail2ban # Voir les IPs bannies sudo fail2ban-client status sshd
🆘 Dépannage
Je ne peux plus me connecter en SSH
Si vous êtes bloqué hors du serveur :
-
Utilisez votre session de secours (Terminal 2 que vous avez gardé ouvert)
-
Si vous n'avez pas de session de secours :
- Contactez le support Infrawire avec vos identifiants
- Utilisez la console VNC/KVM depuis votre panneau de contrôle
- Connectez-vous directement et restaurez l'ancienne configuration :
sudo nano /etc/ssh/sshd_config # Remettez Port 22 sudo systemctl restart sshd
Le port SSH ne répond pas
# Vérifier que SSH écoute sur le port sudo netstat -tlnp | grep ssh # Vérifier que le port est ouvert dans UFW sudo ufw status | grep 2222 # Vérifier les logs SSH sudo journalctl -u sshd -n 50
Je dois me connecter avec l'ancien port temporairement
Si vous devez vous connecter avec l'ancien port (22) avant de le supprimer :
# Autoriser temporairement le port 22 sudo ufw allow 22/tcp # Vous connecter ssh -p 22 utilisateur@votre-ip # Une fois connecté, supprimer la règle sudo ufw delete allow 22/tcp
📚 Ressources supplémentaires
❓ Questions fréquentes
Q : Quel port choisir pour SSH ?
R : Choisissez un port entre 1024 et 65535. Évitez les ports courants (80, 443, 3306, etc.). Les ports comme 2222, 2200, ou 1022 sont de bons choix.
Q : Puis-je utiliser le même port pour plusieurs services ?
R : Non, chaque service doit avoir son propre port unique.
Q : Dois-je vraiment changer le port SSH ?
R : C'est fortement recommandé. Cela réduit considérablement les attaques automatisées par force brute.
Q : fail2ban est-il nécessaire si j'ai changé le port ?
R : Non, mais c'est une couche de sécurité supplémentaire recommandée.
Q : Comment me connecter avec le nouveau port depuis un client SSH ?
R : Utilisez l'option -p : ssh -p 2222 utilisateur@votre-ip
Bonne sécurisation ! 🚀