Sécuriser votre VPS Linux
Maintenant que votre VPS est opérationnel, il est temps de renforcer sa sécurité. Ce guide vous accompagne pour protéger votre serveur contre les menaces courantes.
📋 Avant de commencer
✅ Avoir un VPS Linux fonctionnel ✅ Accès SSH avec un utilisateur non-root ✅ Droits sudo configurés ✅ Avoir complété le guide Premiers pas avec votre VPS Linux
Configurer l'authentification par clés SSH
L'authentification par clés SSH est beaucoup plus sécurisée que les mots de passe.
Sur votre ordinateur local - Windows (PowerShell)
# Générer une paire de clés SSH
ssh-keygen -t ed25519 -C "votre-email@exemple.com"
# Appuyez sur Entrée pour accepter l'emplacement par défaut
# Définissez une passphrase (optionnel mais recommandé)
💡 Astuce : La clé ed25519 est plus sécurisée et plus rapide que RSA. Si votre système ne la supporte pas, utilisez ssh-keygen -t rsa -b 4096.
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh votrenom@VOTRE_IP_VPS "cat >> ~/.ssh/authorized_keys"
Sur votre ordinateur local - macOS / Linux
# Générer une paire de clés SSH
ssh-keygen -t ed25519 -C "votre-email@exemple.com"
# Copier la clé vers votre VPS
ssh-copy-id votrenom@VOTRE_IP_VPS
Tester l'authentification par clé
# Se connecter au VPS (ne devrait plus demander de mot de passe)
ssh votrenom@VOTRE_IP_VPS
✅ Si la connexion fonctionne sans mot de passe, votre clé SSH est correctement configurée !
Désactiver l'authentification par mot de passe
Une fois les clés SSH configurées, désactivez l'authentification par mot de passe.
⚠️ ATTENTION
Avant de désactiver l'authentification par mot de passe, vérifiez que vous pouvez vous connecter avec votre clé SSH ! Gardez une session SSH ouverte en backup.
# Éditer la configuration SSH
sudo nano /etc/ssh/sshd_config
# Désactiver l'authentification par mot de passe
PasswordAuthentication no
# Désactiver l'authentification par challenge-response
ChallengeResponseAuthentication no
# Désactiver complètement la connexion root
PermitRootLogin no
# Autoriser uniquement votre utilisateur (optionnel)
AllowUsers votrenom
sudo systemctl restart sshd
Changer le port SSH par défaut
Changer le port SSH réduit les tentatives d'intrusion automatisées.
# Éditer la configuration SSH
sudo nano /etc/ssh/sshd_config
# Port par défaut : 22
Port 2222
💡 Astuce : Choisissez un port entre 1024 et 65535. Évitez les ports communs comme 2222, préférez quelque chose comme 49152.
Mettre à jour le pare-feu - UFW (Ubuntu/Debian)
# Autoriser le nouveau port
sudo ufw allow 2222/tcp
# Supprimer l'ancien port
sudo ufw delete allow 22/tcp
# Recharger UFW
sudo ufw reload
Mettre à jour le pare-feu - FirewallD (CentOS/Rocky)
# Ajouter le nouveau port
sudo firewall-cmd --permanent --add-port=2222/tcp
# Supprimer l'ancien port
sudo firewall-cmd --permanent --remove-service=ssh
# Recharger le firewall
sudo firewall-cmd --reload
# Redémarrer SSH
sudo systemctl restart sshd
# Pour vous reconnecter avec le nouveau port
ssh -p 2222 votrenom@VOTRE_IP_VPS
Installer et configurer Fail2ban
Fail2ban protège votre serveur contre les attaques par force brute en bannissant temporairement les IP suspectes.
Installation
sudo apt update
sudo apt install fail2ban -y
sudo yum install epel-release -y
sudo yum install fail2ban -y
Configuration de Fail2ban
# Créer un fichier de configuration local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
# Durée de bannissement (en secondes) - 1 heure
bantime = 3600
# Durée de la fenêtre de détection (10 minutes)
findtime = 600
# Nombre de tentatives avant bannissement
maxretry = 5
# Action à effectuer (bannir l'IP)
banaction = iptables-multiport
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime = 86400
Explication de la configuration :
- bantime = 86400 → Bannir pendant 24 heures
- findtime = 600 → Surveiller sur une fenêtre de 10 minutes
- maxretry = 3 → Bannir après 3 tentatives échouées
- port = 2222 → Si vous avez changé le port SSH
# Démarrer et activer Fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
# Vérifier le statut
sudo systemctl status fail2ban
Vérifier Fail2ban
Statut de la protection SSH
sudo fail2ban-client status sshd
Voir toutes les jails actives
sudo fail2ban-client status
Commandes utiles Fail2ban :
| Commande | Description |
|---|---|
sudo fail2ban-client status sshd | Statut de la jail SSH |
sudo fail2ban-client set sshd unbanip IP | Débannir une IP |
sudo fail2ban-client reload | Recharger la configuration |
sudo tail -f /var/log/fail2ban.log | Voir les logs en temps réel |
Configurer un pare-feu avancé
Configurez votre pare-feu pour n'autoriser que les services nécessaires.
Configuration UFW (Ubuntu/Debian)
# Réinitialiser UFW (optionnel)
sudo ufw --force reset
# Politique par défaut : refuser tout le trafic entrant
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Autoriser SSH (avec le nouveau port)
sudo ufw allow 2222/tcp
# Autoriser HTTP et HTTPS (si vous avez un serveur web)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Limiter les connexions SSH (protection anti-bruteforce)
sudo ufw limit 2222/tcp
# Activer UFW
sudo ufw enable
# Vérifier le statut
sudo ufw status verbose
Configuration FirewallD (CentOS/Rocky)
# Définir la zone par défaut
sudo firewall-cmd --set-default-zone=public
# Autoriser SSH
sudo firewall-cmd --permanent --add-port=2222/tcp
# Autoriser HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Limiter les connexions SSH
sudo firewall-cmd --permanent --add-rich-rule='rule service name=ssh limit value=3/m accept'
# Recharger
sudo firewall-cmd --reload
# Vérifier
sudo firewall-cmd --list-all
Surveiller les logs système
Surveillez régulièrement les logs pour détecter les activités suspectes.
Dernières tentatives de connexion échouées
sudo grep "Failed password" /var/log/auth.log | tail -20
Connexions SSH réussies
sudo grep "Accepted" /var/log/auth.log | tail -20
Surveiller les logs en temps réel
sudo tail -f /var/log/auth.log
💡 Astuce : Sur CentOS/Rocky, utilisez /var/log/secure au lieu de /var/log/auth.log.
Installer des outils d'audit de sécurité
Lynis - Audit de sécurité automatique
# Installation sur Ubuntu/Debian
sudo apt install lynis -y
# Installation sur CentOS/Rocky
sudo yum install lynis -y
# Lancer un audit complet
sudo lynis audit system
RKHunter - Détection de rootkits
# Installation sur Ubuntu/Debian
sudo apt install rkhunter -y
# Installation sur CentOS/Rocky
sudo yum install rkhunter -y
# Mettre à jour la base de données
sudo rkhunter --update
# Lancer une analyse
sudo rkhunter --check
Maintenir le système à jour
# Configurer les mises à jour automatiques de sécurité
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
# Vérifier les mises à jour manuellement
sudo apt update && sudo apt upgrade -y
⚠️ Important
Les mises à jour de sécurité sont cruciales. Configurez les mises à jour automatiques et vérifiez régulièrement que votre système est à jour.
Configurer les sauvegardes automatiques
Ne négligez jamais les sauvegardes !
# Créer un répertoire pour les backups
mkdir -p ~/backups
# Créer le script de backup
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
# Configuration
BACKUP_DIR="/home/votrenom/backups"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_FILE="backup_$DATE.tar.gz"
# Créer l'archive
tar -czf "$BACKUP_DIR/$BACKUP_FILE" \
/etc \
/home/votrenom \
--exclude=/home/votrenom/backups
# Garder seulement les 7 derniers backups
cd "$BACKUP_DIR"
ls -t | tail -n +8 | xargs -r rm
echo "Backup créé : $BACKUP_FILE"
# Rendre le script exécutable
sudo chmod +x /usr/local/bin/backup.sh
# Ajouter une tâche cron (backup quotidien à 3h du matin)
sudo crontab -e
0 3 * * * /usr/local/bin/backup.sh
Checklist de sécurité
Vérifiez que vous avez bien :
✅ Configuré l'authentification par clés SSH ✅ Désactivé l'authentification par mot de passe ✅ Désactivé la connexion root ✅ Changé le port SSH par défaut ✅ Installé et configuré Fail2ban ✅ Configuré correctement votre pare-feu ✅ Installé des outils d'audit (Lynis, RKHunter) ✅ Activé les mises à jour automatiques ✅ Configuré des sauvegardes régulières ✅ Surveillé les logs système
💬 Besoin d'aide ?
Si vous rencontrez des difficultés :
🔒 Félicitations !
Votre VPS est maintenant bien sécurisé. La sécurité est un processus continu : surveillez régulièrement vos logs et maintenez votre système à jour !

