VPS â Mise en place et sĂ©curisation
Installer un serveur Vultr, OVH, Hetzner ou autre VPS et le sĂ©curiser avant dây exposer le moindre service.
Ce guide couvre un serveur Ubuntu 22.04/24.04 ou Debian 12/13. Les commandes Debian sont identiques (sauf
ufwqui remplaceiptablespour la simplicité).
1. Connexion initiale
Le MJP (machine juste poussĂ©e) arrive avec un mot de passe root temporaire. Sây connecter et changer tout de suite.
ssh root@<IP_DU_VPS>â ïž Changer le mot de passe root immĂ©diatement, puis crĂ©er un utilisateur dĂ©diĂ©. Ne jamais travailler en root au quotidien.
CrĂ©er lâutilisateur et lui donner les droits sudo
# Création de l'utilisateur
adduser arthur
# Ajout au groupe sudo
usermod -aG sudo arthur
# Vérification
id arthurConfigurer SSH avec clé publique
Depuis la machine locale (pas le VPS) :
# Générer une clé si inexistante
ssh-keygen -t ed25519 -C "arthur@devcodex"
# Copier la clé publique sur le VPS
ssh-copy-id -i ~/.ssh/id_ed25519.pub arthur@<IP_DU_VPS>Tester la connexion :
ssh arthur@<IP_DU_VPS>Si ça marche, on peut désactiver le mot de passe root dans /etc/ssh/sshd_config :
PermitRootLogin no
PasswordAuthentication noPuis recharger SSH :
sudo systemctl restart sshd2. Sécurisation SSH
Changer le port par défaut
Le port 22 est le premier ciblé par les scanners automatiques. Le changer réduit drastiquement les tentatives de bruteforce.
Ăditer /etc/ssh/sshd_config :
Port 2222Recharger la config :
sudo systemctl restart sshdDe la machine locale :
ssh -p 2222 arthur@<IP_DU_VPS>Bien penser Ă ouvrir le nouveau port dans le firewall avant de recharger SSH, sinon on se coupe.
Fail2ban
ProtĂšge contre le bruteforce mĂȘme sur un port non-standard.
sudo apt install -y fail2banConfiguration minimale dans /etc/fail2ban/jail.local :
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600Relancer :
sudo systemctl enable fail2ban
sudo systemctl restart fail2banVĂ©rifier lâĂ©tat :
sudo fail2ban-client status sshd3. Pare-feu UFW
UFW (Uncomplicated Firewall) est plus lisible quâiptables pour un usage courant.
sudo apt install -y ufwPolitique par dĂ©faut : tout refuser, sauf ce quâon autorise.
# Politique par défaut
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH (port personnalisé)
sudo ufw allow 2222/tcp
# Services Ă exposer (exemples)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# Activer
sudo ufw enableLister les rĂšgles actives :
sudo ufw status verboseToujours vérifier les rÚgles avec
ufw statusavant de quitter la session. Si on se coupe, il faudra accéder au VPS via la console distante du provider.
4. ParamĂštres systĂšme de base
Swap
Utile pour les VPS 1 Go de RAM. Ne pas en mettre trop (inversion swap = lenteur).
# VĂ©rifier si swap existe dĂ©jĂ
swapon --show
# Créer un fichier swap de 2 Go si absent
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Persistant au reboot
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Optimiser le swappiness
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -pTimezone et NTP
# Vérifier la timezone
timedatectl
# Définir (ex. Paris)
sudo timedatectl set-timezone Europe/Paris
# NTP est géré par systemd-timesyncd sur Ubuntu/Debian récent
sudo timedatectl set-ntp trueLocales
# Lister les locales installées
locale -a
# Si en_US.UTF-8 est manquant :
sudo locale-gen en_US.UTF-8
# Définir la locale par défaut
echo 'LANG=en_US.UTF-8' | sudo tee /etc/default/locale5. Mise Ă jour automatique
unattended-upgrades installe les patches de sécurité sans intervention.
sudo apt install -y unattended-upgradesVérifier la config dans /etc/apt/apt.conf.d/20auto-upgrades :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Vérifier que le service tourne :
sudo systemctl status unattended-upgradesâ ïž VĂ©rifier pĂ©riodiquement les mises Ă jour manuelles (
apt list --upgradable). Le mode automatique ne couvre que les patches de sécurité, pas les mises à jour majeures.
6. Vérification post-setup
Liste de contrĂŽle rapide aprĂšs configuration.
# Utilisateur sudo
whoami
id
# SSH
sudo systemctl is-active sshd
sudo ufw status
# Fail2ban
sudo fail2ban-client status sshd
# Swap
swapon --show
free -h
# Timezone
timedatectl
# Mises Ă jour
apt list --upgradableChecklist récapitulative
| Ătape | Fait |
|---|---|
| Mot de passe root changĂ© | â |
| Utilisateur créé avec sudo | â |
| ClĂ© SSH ajoutĂ©e et testĂ©e | â |
| Connexion root par SSH dĂ©sactivĂ©e | â |
| Port SSH changĂ© (ex. 2222) | â |
| Fail2ban installĂ© et actif | â |
| UFW activĂ© avec les ports ouverts | â |
| Swap configurĂ© (si RAM < 2 Go) | â |
Timezone Ă Europe/Paris | â |
unattended-upgrades actif | â |
Pitfalls
| ProblĂšme | Cause | Solution |
|---|---|---|
| Coupé de SSH aprÚs changement de port | Firewall avant rechargement SSH | Ouvrir le port dans UFW AVANT de restart sshd |
sudo: unable to resolve host | /etc/hostname différent de /etc/hosts | Ajouter sudo hostname dans /etc/hosts |
| Fail2ban ne bannit pas | Mauvais port configuré dans jail.local | Vérifier port = dans [sshd] |
| Swap ne persiste pas au reboot | Oubli dans /etc/fstab | Ajouter la ligne /swapfile none swap sw 0 0 |
| UFW bloque SSH aprÚs activation | RÚgle manquante pour le port personnalisé | sudo ufw allow 2222/tcp avant ufw enable |