Sécuriser son VPS OVH de A à Z pour OpenClaw : guide complet 2026
Guide complet pour sécuriser un VPS OVH sous Rocky Linux ou Ubuntu : SSH, UFW, Fail2ban, Docker, Nginx, et configuration OpenClaw. Du serveur brut à l'infrastructure blindée.
Vous venez de commander un VPS OVH et vous souhaitez y installer OpenClaw dans les meilleures conditions de sécurité ? Ce guide couvre chaque étape, de la configuration initiale du serveur jusqu'à l'installation et la sécurisation complète d'OpenClaw. Aucune étape n'est laissée de côté.
À la fin de ce guide, vous aurez un serveur :
- Mis à jour et durci au niveau OS
- Protégé par un firewall UFW configuré
- Accessible uniquement par clé SSH (mot de passe désactivé)
- Avec Fail2ban contre le bruteforce
- Nginx en reverse proxy sécurisé avec HTTPS
- Docker isolé et non exposé directement
- OpenClaw correctement installé et sécurisé
Prérequis
Ce guide est testé sur Rocky Linux 10 et Ubuntu 24.04 LTS — les deux distributions recommandées pour un VPS OVH de production. Les commandes sont identiques sur les deux sauf mention contraire.
- VPS OVH (gamme VPS Starter ou supérieure — minimum 2 vCPU, 4 GB RAM)
- Accès root SSH initial (fourni par OVH à la commande)
- Un nom de domaine pointant vers l'IP du VPS (optionnel mais recommandé pour HTTPS)
- Votre clé publique SSH sur votre machine locale
Étape 1 — Connexion initiale et mise à jour système
Dès réception de votre VPS, connectez-vous en root et effectuez la mise à jour complète du système :
# Connexion SSH initiale (IP fournie par OVH)
ssh root@votre-ip-ovh
# Rocky Linux
dnf update -y && dnf upgrade -y
# Ubuntu
apt update && apt upgrade -y && apt dist-upgrade -y
# Vérifier la version OS
cat /etc/os-releaseEnsuite, créez un utilisateur non-root pour les opérations quotidiennes :
# Créer un utilisateur (remplacer "votre-user" par votre pseudo)
useradd -m -s /bin/bash -G wheel votre-user # Rocky Linux
# OU
useradd -m -s /bin/bash -G sudo votre-user # Ubuntu
# Définir un mot de passe fort
passwd votre-user
# Vérifier les droits sudo
su - votre-user
sudo whoami # doit retourner "root"Étape 2 — Sécurisation SSH
La première chose à faire sur tout nouveau serveur est de sécuriser l'accès SSH. Nous allons : changer le port, désactiver l'accès root direct, et imposer l'authentification par clé.
2.1 Générer une paire de clés SSH sur votre machine locale
# Sur votre PC/Mac/Linux local (PAS sur le serveur)
ssh-keygen -t ed25519 -C "mon-vps-ovh"
# Appuyer Entrée pour accepter le chemin par défaut
# Définir une passphrase (recommandé)
# Afficher la clé publique à copier
cat ~/.ssh/id_ed25519.pub2.2 Copier la clé publique sur le serveur
# Depuis votre machine locale
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@votre-ip-ovh
# Ou manuellement sur le serveur
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "VOTRE_CLE_PUBLIQUE_ICI" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys2.3 Modifier la configuration SSH
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configModifier ou ajouter ces lignes :
# Port non-standard (choisir entre 1024 et 65535, ex: 2273)
Port 2273
# Désactiver l'accès root direct
PermitRootLogin no
# Authentification par clé uniquement
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
# Limiter les tentatives
MaxAuthTries 3
LoginGraceTime 30
# Désactiver les fonctionnalités inutiles
GSSAPIAuthentication no
X11Forwarding no
AllowAgentForwarding no
# MACs sécurisés uniquement
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com# Valider la config avant de recharger
sudo sshd -t && echo "Config OK"
# Recharger SSH (sans couper la session actuelle)
sudo systemctl reload sshd
⚠️ Important : Testez la connexion par clé dans une nouvelle fenêtre terminal AVANT de fermer la session actuelle :
ssh -p 2273 votre-user@votre-ip-ovh
# Si ça fonctionne, vous pouvez fermer l'ancienne session rootÉtape 3 — Firewall avec UFW
# Installer UFW si absent
# Rocky Linux
dnf install -y ufw
# Ubuntu
apt install -y ufw
# Politique par défaut : tout bloquer en entrée
ufw default deny incoming
ufw default allow outgoing
# Autoriser votre port SSH custom
ufw allow 2273/tcp comment "SSH custom"
# Autoriser HTTP et HTTPS pour Nginx
ufw allow 80/tcp comment "HTTP"
ufw allow 443/tcp comment "HTTPS"
# Activer le firewall
ufw --force enable
# Vérifier
ufw status verbose
# Bloquer les ports sensibles depuis l'extérieur
ufw deny 3306/tcp # MySQL/MariaDB
ufw deny 6379/tcp # Redis
ufw deny 27017/tcp # MongoDB
# OpenClaw gateway doit rester local uniquement
ufw deny 18789 # OpenClaw gateway — localhost onlyÉtape 4 — Fail2ban (protection bruteforce)
# Installation
# Rocky Linux
dnf install -y fail2ban
# Ubuntu
apt install -y fail2ban
# Créer la configuration locale
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.localConfiguration recommandée dans jail.local :
[DEFAULT]
bantime = 3600 # Bannir 1 heure
findtime = 600 # Fenêtre de 10 minutes
maxretry = 3 # 3 tentatives max
ignoreip = 127.0.0.1/8
[sshd]
enabled = true
port = 2273 # Votre port SSH custom
filter = sshd
logpath = /var/log/auth.log # Ubuntu
# logpath = /var/log/secure # Rocky Linux
maxretry = 3
[nginx-http-auth]
enabled = true
port = http,https# Démarrer et activer Fail2ban
systemctl enable --now fail2ban
# Vérifier le statut
fail2ban-client status
fail2ban-client status sshd
Étape 5 — Mises à jour automatiques de sécurité
# Rocky Linux — dnf-automatic
dnf install -y dnf-automatic
# Configurer pour appliquer seulement les correctifs de sécurité
sed -i 's/apply_updates = no/apply_updates = yes/' /etc/dnf/automatic.conf
sed -i 's/upgrade_type = default/upgrade_type = security/' /etc/dnf/automatic.conf
systemctl enable --now dnf-automatic.timer
# Ubuntu — unattended-upgrades
apt install -y unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgradesÉtape 6 — Nginx en reverse proxy sécurisé
# Rocky Linux
dnf install -y nginx
# Ubuntu
apt install -y nginx
systemctl enable --now nginxConfiguration de base avec headers de sécurité :
server {
listen 80;
server_name votre-domaine.fr;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name votre-domaine.fr;
ssl_certificate /etc/letsencrypt/live/votre-domaine.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votre-domaine.fr/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
# Headers de sécurité
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
server_tokens off;
location / {
proxy_pass http://127.0.0.1:2368; # Ghost ou OpenClaw
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;
}
}# Valider la config Nginx
nginx -t
# Certificat SSL avec Certbot
dnf install -y certbot python3-certbot-nginx # Rocky
apt install -y certbot python3-certbot-nginx # Ubuntu
certbot --nginx -d votre-domaine.fr
# Recharger Nginx
systemctl reload nginx
Étape 7 — Installation Docker sécurisée
# Installation Docker officielle
curl -fsSL https://get.docker.com | sh
# Ajouter votre user au groupe docker
usermod -aG docker votre-user
# Démarrer Docker
systemctl enable --now docker
# Vérifier
docker --version
docker ps
Règles de sécurité Docker :
- Ne jamais utiliser
--privilegedsauf nécessité absolue - Toujours binder les ports sur
127.0.0.1(ex:-p 127.0.0.1:2368:2368) - Utiliser des images officielles uniquement
- Ne jamais lancer de containers en root si évitable
Étape 8 — Installation et sécurisation d'OpenClaw
8.1 Installation
# Prérequis : Node.js 20+
# Rocky Linux
dnf install -y nodejs npm
# Ubuntu
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
apt install -y nodejs
# Installer OpenClaw globalement
npm install -g openclaw
# Vérifier l'installation
openclaw --version8.2 Configuration initiale
# Initialiser OpenClaw
openclaw init
# Démarrer le Gateway
openclaw gateway start
# Vérifier le statut
openclaw gateway status
8.3 Sécuriser le Gateway OpenClaw
Le Gateway OpenClaw écoute sur un port (18789 par défaut). Il doit rester accessible uniquement en localhost, jamais exposé directement sur l'internet.
# Vérifier que le gateway écoute uniquement sur localhost
ss -tlnp | grep 18789
# Résultat attendu : 127.0.0.1:18789 (PAS 0.0.0.0:18789)
# Bloquer le port depuis l'extérieur via UFW
ufw deny in 18789 comment "OpenClaw - localhost only"
# Vérifier les ports ouverts
ss -tlnp
8.4 Vérification complète OpenClaw
# Status général
openclaw status
# Logs du gateway
openclaw gateway status
# Redémarrer si nécessaire
openclaw gateway restart
Étape 9 — Checklist de vérification finale
Une fois tout configuré, vérifiez chaque point :
echo "=== CHECKLIST SÉCURITÉ VPS ==="
echo "1. SSH port custom:"
ss -tlnp | grep sshd
echo "2. Authentification par clé uniquement:"
sudo sshd -T | grep passwordauthentication
echo "3. UFW actif:"
ufw status | head -3
echo "4. Fail2ban actif:"
systemctl is-active fail2ban
echo "5. Nginx HTTPS:"
curl -sI https://votre-domaine.fr | head -3
echo "6. Docker non exposé:"
sudo ss -tlnp | grep 2368
# Doit afficher 127.0.0.1:2368 uniquement
echo "7. OpenClaw gateway:"
ss -tlnp | grep 18789
# Doit afficher 127.0.0.1:18789 uniquement
echo "8. OpenClaw status:"
openclaw statusRessources et liens utiles
- Documentation officielle OpenClaw
- VPS OVHcloud — offres disponibles
- Certbot — SSL Let's Encrypt gratuit
- Fail2ban — GitHub officiel
Conclusion
En suivant ce guide, votre VPS OVH est désormais :
- Accessible uniquement par clé SSH sur un port non-standard
- Protégé par UFW avec une politique de refus par défaut
- Surveillé par Fail2ban contre les bruteforces
- Exposé uniquement via Nginx avec HTTPS et headers de sécurité
- OpenClaw installé et gateway non exposé publiquement
La sécurité d'un serveur n'est jamais définitive — pensez à consulter régulièrement les logs (journalctl -xe), à maintenir votre système à jour, et à revoir votre configuration UFW si vous ajoutez de nouveaux services.