Introduction
Un VPS fraîchement provisionné chez n'importe quel hébergeur arrive dans un état brut : login en root, mot de passe, aucun firewall, locale par défaut, pas de monitoring. Avant de déployer quoi que ce soit dessus, il faut le préparer.
Ce tuto est la checklist exhaustive que vous lancez systématiquement sur tout nouveau VPS Debian 12 / Ubuntu 22.04+. Compte 30-45 minutes la première fois, 10-15 minutes une fois la routine prise.
Prérequis
- Un VPS livré par VeryCloud (Linux Debian 12 ou Ubuntu 22.04+)
- Les credentials root reçus par email
- Votre clé SSH publique locale prête (sinon générez-en une, voir le tuto SSH hardening)
Étape 1 : Premier login en root
ssh root@IP_DU_VPS
Acceptez la signature SSH. Mettez à jour immédiatement :
apt update && apt upgrade -y
apt autoremove --purge -y
Étape 2 : Définir le hostname
hostnamectl set-hostname srv-web-01.verycloud.fr
echo "127.0.1.1 srv-web-01.verycloud.fr srv-web-01" >> /etc/hosts
Vérifiez :
hostname -f
# srv-web-01.verycloud.fr
Étape 3 : Locale et timezone
# Timezone
timedatectl set-timezone Europe/Paris
# Locale
apt install -y locales
sed -i 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=fr_FR.UTF-8
Vérifiez :
date
# samedi 16 mai 2026, 15:30:42 (UTC+02:00)
Étape 4 : Synchronisation horaire (NTP)
Crucial pour les certificats SSL, les logs corrélés, et le 2FA :
apt install -y chrony
systemctl enable --now chrony
chronyc tracking
Étape 5 : Créer un user non-root
Ne jamais utiliser root au quotidien. Créez un user avec sudo :
adduser mathys
# (mot de passe + infos optionnelles)
usermod -aG sudo mathys
Copiez votre clé SSH publique pour cet user :
mkdir -p /home/mathys/.ssh
nano /home/mathys/.ssh/authorized_keys
# (collez votre clé publique ssh-ed25519 AAAAC...)
chown -R mathys:mathys /home/mathys/.ssh
chmod 700 /home/mathys/.ssh
chmod 600 /home/mathys/.ssh/authorized_keys
Testez la connexion sans fermer la session root :
# Depuis votre PC
ssh mathys@IP_DU_VPS
sudo -i # Doit fonctionner
Étape 6 : Hardening SSH
⚠️ Ne fermez pas la session root tant que vous n'avez pas validé que vous pouvez vous connecter via le nouvel user.
sudo nano /etc/ssh/sshd_config
Modifiez :
Port 22022 # Port custom
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowUsers mathys
Testez :
sudo sshd -t
sudo systemctl reload sshd
Pour aller plus loin, voir le tuto SSH hardening complet (Ed25519, 2FA TOTP, port knocking).
Étape 7 : Firewall UFW
sudo apt install -y ufw
# Politique par défaut
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Autoriser SSH (port custom)
sudo ufw allow 22022/tcp
# Autoriser web si nécessaire
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activer
sudo ufw enable
sudo ufw status verbose
Étape 8 : Fail2ban (anti brute-force)
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Activez la jail SSH :
[sshd]
enabled = true
port = 22022
maxretry = 3
bantime = 1h
findtime = 10m
sudo systemctl restart fail2ban
sudo fail2ban-client status
Pour une protection plus moderne, voir le tuto CrowdSec.
Étape 9 : Mises à jour automatiques
sudo apt install -y unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
# Choisir "Yes"
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Activez les mises à jour security + stable :
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename}-security";
"origin=Debian,codename=${distro_codename}-updates";
};
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Configurez la fréquence :
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Testez :
sudo unattended-upgrades --dry-run --debug
Étape 10 : Swap (si pas déjà configuré)
Vérifiez :
free -h
swapon --show
Si pas de swap et < 4 Go RAM, ajoutez-en (utile en cas de pic) :
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
Optimisez l'usage :
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.d/99-tuning.conf
sudo sysctl --system
Étape 11 : Outils de base sysadmin
sudo apt install -y \
htop iotop iftop nethogs \
curl wget git vim nano \
rsync rclone \
tree ncdu \
jq net-tools dnsutils \
tmux screen \
unzip zip \
lsof tcpdump \
sudo bash-completion
Étape 12 : Logs et journald
# Limiter la taille des logs systemd à 500 MB
sudo nano /etc/systemd/journald.conf
SystemMaxUse=500M
SystemMaxFileSize=50M
ForwardToSyslog=no
sudo systemctl restart systemd-journald
Étape 13 : MOTD propre (optionnel)
Le message à la connexion. Pour quelque chose de propre :
sudo apt install -y figlet
sudo nano /etc/update-motd.d/00-custom
#!/bin/bash
figlet "VeryCloud"
echo ""
echo " Hostname : $(hostname -f)"
echo " IP : $(curl -s ifconfig.me)"
echo " OS : $(lsb_release -d | cut -f2)"
echo " Kernel : $(uname -r)"
echo " Uptime : $(uptime -p)"
echo " Load : $(cut -d' ' -f1-3 < /proc/loadavg)"
echo " Memory : $(free -h | awk '/^Mem:/ {print $3 "/" $2}')"
echo " Disk / : $(df -h / | awk 'NR==2 {print $3 "/" $2}')"
echo ""
sudo chmod +x /etc/update-motd.d/00-custom
Étape 14 : Bannière SSH dissuasive
sudo nano /etc/issue.net
*****************************************************
* Authorized access only. This system is monitored. *
* Unauthorized access is prohibited and prosecuted. *
*****************************************************
sudo nano /etc/ssh/sshd_config
Banner /etc/issue.net
sudo systemctl reload sshd
Étape 15 : Reboot final
Pour valider tout :
sudo reboot
Reconnectez-vous :
ssh -p 22022 mathys@IP_DU_VPS
Vérifiez :
sudo systemctl status fail2ban
sudo ufw status
free -h
df -h
Tout doit être OK.
Étape 16 : Documentation interne
Créez un fichier de notes :
nano ~/server-info.md
Notez :
- Date d'installation
- Hostname, IP, OS
- Port SSH custom
- Services installés
- Mots de passe (à stocker hors VPS, dans Bitwarden/KeePass)
- Backups configurés
- Dernière mise à jour majeure
Étape 17 : Monitoring de base
Pour aller plus loin tout de suite, installez Netdata (5 minutes) ou Prometheus + Grafana (30 minutes). Voir les tutos dédiés.
Pour du minimal sans stack supplémentaire :
# Log centralisé des sessions
sudo apt install -y auditd
# Voir les changements de fichiers critiques
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
Checklist finale
[ ] Hostname configuré
[ ] Timezone et locale OK
[ ] User non-root créé avec sudo
[ ] Clé SSH installée et password désactivé
[ ] Port SSH custom configuré
[ ] UFW activé (allow SSH, 80, 443)
[ ] Fail2ban actif
[ ] unattended-upgrades configuré
[ ] Swap si nécessaire
[ ] NTP/chrony synchronisé
[ ] Outils sysadmin installés
[ ] MOTD propre
[ ] Reboot validé
[ ] Notes d'installation sauvegardées
Dépannage
Verrouillé après changement SSH
Utilisez le noVNC depuis l'espace client VeryCloud pour reprendre la main.
Erreur "locale not generated"
sudo dpkg-reconfigure locales
UFW bloque SSH après activation
Le port custom n'était pas autorisé. Au noVNC :
sudo ufw allow 22022/tcp
Commandes utiles
# Récapitulatif système
uname -a
lsb_release -a
hostnamectl
timedatectl
# État des services
systemctl list-units --type=service --state=running
# Voir qui est connecté
who
w
last -10
# Charge système
top
htop
uptime
# Disques
df -h
ncdu / # navigateur visuel
du -sh /var/log/*
# Réseau
ip a
ss -tlnp # ports en écoute
Conclusion
Votre VPS est maintenant prêt pour la production. La base est posée :
- Accès sécurisé (clé + port custom + fail2ban + UFW)
- Système à jour automatiquement
- Outils sysadmin présents
- Locale/heure correctes
À partir de là, vous pouvez installer ce que vous voulez : Nginx, MySQL, Docker, n8n... Voir les tutos dédiés.
Ressources
- Tuto VeryCloud — Sécuriser un VPS : https://verycloud.fr/docs/article/how-to-secure-vps
- Tuto VeryCloud — Configuration clé SSH : https://verycloud.fr/docs/article/configure-sshkey-linux
- Tuto VeryCloud — SSH hardening avancé :
/docs/article/ssh-hardening - Tuto VeryCloud — Tuning kernel :
/docs/article/kernel-tuning


















