Pourquoi la configuration sécurité de votre VPS est critique en 2025
Chaque jour, des milliers de serveurs VPS sont compromis à cause de configurations par défaut jamais modifiées. Mot de passe root actif, ports ouverts, absence de pare-feu — autant de failles que les bots automatisés exploitent en quelques minutes après le provisioning.
Chez Otomy, nous déployons des VPS pour des PME en France et en Algérie qui hébergent des applications Next.js sur Vercel, des backends Supabase, des workflows n8n et des plateformes e-commerce. Ce guide reprend exactement notre checklist de production.
Étape 1 — Choisir le bon fournisseur et le bon OS
Privilégiez un fournisseur avec datacenter en Europe pour la conformité RGPD : Hetzner, OVH, Scaleway ou Contabo. Pour l'OS, choisissez Ubuntu 24.04 LTS ou Debian 12 — les deux offrent un support long terme et une communauté massive.
Conseil Otomy : Évitez les images préconfigurées avec panels (cPanel, Plesk). Elles ajoutent une surface d'attaque inutile.
Étape 2 — Première connexion et sécurisation SSH
Dès la réception de votre VPS, connectez-vous en root et appliquez ces modifications :
# Mettre à jour le système
apt update && apt upgrade -y
# Créer un utilisateur non-root
adduser deploy
usermod -aG sudo deploy
# Configurer l'authentification par clé SSH
mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
Ensuite, durcissez la configuration SSH dans /etc/ssh/sshd_config :
Port 2222 # Changer le port par défaut
PermitRootLogin no # Interdire le login root
PasswordAuthentication no # Clés SSH uniquement
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
systemctl restart sshd
Important : Testez la connexion avec le nouvel utilisateur avant de fermer votre session root.
Étape 3 — Pare-feu avec UFW et protection Fail2Ban
Un VPS sans pare-feu est une cible. Configurez UFW (Uncomplicated Firewall) :
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp # SSH sur le nouveau port
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
Installez ensuite Fail2Ban pour bloquer les tentatives de brute-force :
apt install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Modifiez /etc/fail2ban/jail.local :
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
systemctl enable fail2ban && systemctl start fail2ban
Étape 4 — Mises à jour automatiques de sécurité
Les vulnérabilités zero-day n'attendent pas. Activez les mises à jour automatiques :
apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades
Vérifiez dans /etc/apt/apt.conf.d/50unattended-upgrades que la ligne suivante est décommentée :
"${distro_id}:${distro_codename}-security";
Étape 5 — Reverse proxy Nginx avec certificat SSL Let's Encrypt
Pour exposer votre application (Next.js, n8n, API Node.js), utilisez Nginx comme reverse proxy :
apt install nginx certbot python3-certbot-nginx -y
Créez un fichier de configuration dans /etc/nginx/sites-available/monapp :
server {
server_name monapp.exemple.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
ln -s /etc/nginx/sites-available/monapp /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d monapp.exemple.com
Certbot renouvellera automatiquement vos certificats via un cron intégré.
Étape 6 — Conteneurisation avec Docker (optionnel mais recommandé)
Pour isoler vos services (n8n, Supabase self-hosted, bases de données), Docker est incontournable :
curl -fsSL https://get.docker.com | sh
usermod -aG docker deploy
Exemple de docker-compose.yml pour n8n :
version: '3.8'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Notez le binding sur 127.0.0.1 : le service n'est accessible que via le reverse proxy Nginx, jamais directement depuis Internet.
Étape 7 — Monitoring et alertes
Un serveur sécurisé est un serveur surveillé. Nos recommandations :
- Netdata : Monitoring temps réel, installation en une commande
- Uptime Kuma : Alternative self-hosted à UptimeRobot
- Logwatch : Résumé quotidien des logs par email
# Installer Netdata
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh
Couplez cela avec des alertes vers Slack, Telegram ou un workflow Make pour être prévenu en temps réel.
Checklist récapitulative VPS configuration sécurité
- ✅ Utilisateur non-root avec clé SSH
- ✅ Port SSH modifié, login root désactivé
- ✅ Pare-feu UFW actif (ports 80, 443, SSH uniquement)
- ✅ Fail2Ban configuré sur SSH
- ✅ Mises à jour automatiques activées
- ✅ Nginx reverse proxy + SSL Let's Encrypt
- ✅ Services conteneurisés (Docker) bindés sur localhost
- ✅ Monitoring actif avec alertes
Conclusion
Une VPS configuration sécurité solide ne demande pas des heures — elle demande de la méthode. En suivant ces 7 étapes, vous obtenez un serveur durci, prêt à héberger vos applications web en production.
Besoin d'un accompagnement pour déployer votre infrastructure ? Otomy configure, sécurise et maintient des VPS pour les PME en France et en Algérie. Contactez-nous pour un audit gratuit de votre serveur.