Skip to Content
DevOpsVPS — Setup serveur, sĂ©curitĂ©

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 ufw qui remplace iptables pour 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 arthur

Configurer 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 no

Puis recharger SSH :

sudo systemctl restart sshd

2. 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 2222

Recharger la config :

sudo systemctl restart sshd

De 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 fail2ban

Configuration minimale dans /etc/fail2ban/jail.local :

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

Relancer :

sudo systemctl enable fail2ban sudo systemctl restart fail2ban

VĂ©rifier l’état :

sudo fail2ban-client status sshd

3. Pare-feu UFW

UFW (Uncomplicated Firewall) est plus lisible qu’iptables pour un usage courant.

sudo apt install -y ufw

Politique 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 enable

Lister les rĂšgles actives :

sudo ufw status verbose

Toujours vérifier les rÚgles avec ufw status avant 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 -p

Timezone 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 true

Locales

# 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/locale

5. Mise Ă  jour automatique

unattended-upgrades installe les patches de sécurité sans intervention.

sudo apt install -y unattended-upgrades

Vé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 --upgradable

Checklist récapitulative

ÉtapeFait
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ĂšmeCauseSolution
Coupé de SSH aprÚs changement de portFirewall avant rechargement SSHOuvrir le port dans UFW AVANT de restart sshd
sudo: unable to resolve host/etc/hostname différent de /etc/hostsAjouter sudo hostname dans /etc/hosts
Fail2ban ne bannit pasMauvais port configuré dans jail.localVérifier port = dans [sshd]
Swap ne persiste pas au rebootOubli dans /etc/fstabAjouter la ligne /swapfile none swap sw 0 0
UFW bloque SSH aprÚs activationRÚgle manquante pour le port personnalisésudo ufw allow 2222/tcp avant ufw enable

Ressources