🔐 Sécuriser la connexion SSH

Guide complet pour sécuriser votre connexion SSH en changeant le port et en configurant des options de sécurité supplémentaires pour éviter les attaques par force brute.

🔐 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 + X pour quitter
  • Y pour confirmer
  • Entrée pour 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 :

  1. Utilisez votre session de secours (Terminal 2 que vous avez gardé ouvert)

  2. 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 ! 🚀