Aller au contenu principal

Vous suivez ce tutoriel et vous n'avez pas encore de VPS ? Nos VPS Linux sont disponibles à partir de 2,99€/mois avec support inclus.

Voir nos VPS

Sécuriser SSH

Ce guide vous explique comment sécuriser l'accès SSH à votre VPS Linux avec des clés et fail2ban.

Authentification par clé SSH​

Les clés SSH sont plus sécurisées que les mots de passe car elles ne peuvent pas être devinées par force brute.

Générer une paire de clés​

Sur votre ordinateur local (pas sur le VPS) :

# Windows (PowerShell) / macOS / Linux
ssh-keygen -t ed25519 -C "votre@email.com"

Appuyez sur Entrée pour accepter l'emplacement par défaut. Ajoutez une passphrase pour plus de sécurité.

Deux fichiers sont créés :

  • ~/.ssh/id_ed25519 (clé privée - ne jamais partager)
  • ~/.ssh/id_ed25519.pub (clé publique - à copier sur le VPS)

Copier la clé sur le VPS​

Méthode simple :

ssh-copy-id root@VOTRE_IP

Méthode manuelle :

# Sur votre ordinateur, affichez la clé publique
cat ~/.ssh/id_ed25519.pub
# Sur le VPS, ajoutez la clé
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
# Collez la clé publique et sauvegardez

# Permissions correctes
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Tester la connexion​

ssh root@VOTRE_IP

Vous devriez vous connecter sans mot de passe (ou avec la passphrase de la clé).

Désactiver l'authentification par mot de passe​

Important

Testez d'abord que la connexion par clé fonctionne avant de désactiver les mots de passe !

sudo nano /etc/ssh/sshd_config

Modifiez ces lignes :

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password

Redémarrez SSH :

sudo systemctl restart sshd

Changer le port SSH​

Changer le port par défaut (22) réduit les attaques automatisées.

sudo nano /etc/ssh/sshd_config
Port 2222
Attention

Avant de redémarrer SSH, autorisez le nouveau port dans le firewall :

sudo ufw allow 2222/tcp
sudo systemctl restart sshd

Connexion avec le nouveau port :

ssh -p 2222 root@VOTRE_IP

Fail2ban - Protection contre les attaques​

Fail2ban bloque automatiquement les IP qui tentent trop de connexions échouées.

Installation​

sudo apt update
sudo apt install fail2ban

Configuration​

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Modifiez la section [sshd] :

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600

Paramètres :

  • maxretry : Nombre de tentatives avant bannissement
  • findtime : Période d'observation (secondes)
  • bantime : Durée du bannissement (secondes), -1 = permanent

Configuration avancée​

Pour un port SSH personnalisé :

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

Démarrer fail2ban​

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Commandes utiles​

# Statut de fail2ban
sudo fail2ban-client status

# Statut de la jail SSH
sudo fail2ban-client status sshd

# Voir les IP bannies
sudo fail2ban-client status sshd | grep "Banned IP"

# Débannir une IP
sudo fail2ban-client set sshd unbanip 192.168.1.100

# Voir les logs
sudo tail -f /var/log/fail2ban.log

Autres bonnes pratiques​

Limiter les utilisateurs autorisés​

sudo nano /etc/ssh/sshd_config
AllowUsers admin deployer
# ou
AllowGroups ssh-users

Désactiver les connexions root directes​

Créez d'abord un utilisateur avec sudo :

adduser admin
usermod -aG sudo admin

Puis désactivez root :

PermitRootLogin no

Timeout d'inactivité​

ClientAliveInterval 300
ClientAliveCountMax 2

Désactiver les fonctionnalités inutiles​

X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no

Configuration SSH complète recommandée​

# /etc/ssh/sshd_config

Port 2222
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
MaxSessions 3

Checklist de sécurité SSH​

  • Clés SSH configurées
  • Authentification par mot de passe désactivée
  • Port SSH modifié
  • Fail2ban installé et configuré
  • Connexion root limitée ou désactivée
  • Firewall configuré avec le bon port
Conseil

Gardez toujours une session SSH ouverte quand vous modifiez la configuration SSH, pour éviter de vous bloquer en cas d'erreur.