📑 Table des matières

Sécuriser son installation OpenClaw

04 - Sécuriser son installation OpenClaw

OpenClaw 🟡 Intermédiaire ⏱️ 12 min de lecture 📅 2026-02-09

Pourquoi la sécurité est critique

Votre agent OpenClaw n'est pas un simple chatbot. C'est un programme qui a accès à votre terminal, vos fichiers, vos clés API, et potentiellement vos comptes de messagerie. En d'autres termes : si quelqu'un compromet votre serveur, il compromet tout ce que votre agent peut faire.

La surface d'attaque est réelle :
- Exécution de commandes shell arbitraires
- Lecture/écriture de fichiers sur tout le système
- Accès réseau vers des services internes et externes
- Envoi de messages via Telegram, WhatsApp, Discord…

Un serveur mal sécurisé, c'est comme laisser les clés de votre maison sur la porte. Ce guide vous accompagne étape par étape pour verrouiller votre installation.

💡 Conseil : OpenClaw inclut un outil d'audit intégré. Lancez-le régulièrement :

openclaw security audit
openclaw security audit --deep

Il détecte automatiquement les configurations dangereuses (ports exposés, permissions trop larges, authentification manquante).


Sécuriser SSH

SSH est la porte d'entrée de votre serveur. C'est la première chose à verrouiller.

Changer le port SSH

Le port 22 est scanné en permanence par des bots. Changer de port ne vous protège pas d'un attaquant déterminé, mais élimine 99% du bruit.

sudo nano /etc/ssh/sshd_config

Trouvez la ligne #Port 22 et remplacez-la par :

Port [[ssh_port]]

⚠️ Attention : choisissez un port entre 1024 et 65535. Notez-le bien — si vous perdez l'accès, vous êtes bloqué.

Redémarrez SSH :

sudo systemctl restart sshd

Testez dans un nouveau terminal (gardez votre session actuelle ouverte !) :

ssh -p [[ssh_port]] [[username]]@[[ip]]

Désactiver l'authentification par mot de passe

Les clés SSH sont infiniment plus sûres que les mots de passe. Si vous n'avez pas encore de clé SSH, générez-en une sur votre machine locale :

ssh-keygen -t ed25519 -C "[[email]]"
ssh-copy-id -p [[ssh_port]] [[username]]@[[ip]]

Une fois connecté avec votre clé, désactivez les mots de passe :

sudo nano /etc/ssh/sshd_config

Modifiez ces lignes :

PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
sudo systemctl restart sshd

⚠️ Ne fermez pas votre session actuelle tant que vous n'avez pas vérifié que la connexion par clé fonctionne dans un autre terminal.

Configurer les timeouts SSH

Pour déconnecter automatiquement les sessions inactives, ajoutez à /etc/ssh/sshd_config :

ClientAliveInterval 300
ClientAliveCountMax 2

Cela déconnecte les sessions inactives après 10 minutes (300s × 2). Utile pour éviter les sessions fantômes.

Désactiver les protocoles dangereux

Ajoutez également ces lignes pour durcir la configuration SSH :

X11Forwarding no
AllowAgentForwarding no
MaxAuthTries 3
LoginGraceTime 30
  • X11Forwarding no : désactive le forwarding graphique (inutile pour un serveur)
  • MaxAuthTries 3 : limite le nombre de tentatives avant déconnexion
  • LoginGraceTime 30 : seulement 30 secondes pour s'authentifier

Installer Fail2ban

Fail2ban surveille les tentatives de connexion et bannit les IP après trop d'échecs.

sudo apt update && sudo apt install -y fail2ban

Créez une configuration locale :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Modifiez la section [sshd] :

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

Activez et démarrez :

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Vérifiez le statut :

sudo fail2ban-client status sshd

Firewall avec UFW

UFW (Uncomplicated Firewall) est le pare-feu standard d'Ubuntu. L'idée est simple : tout bloquer, puis ouvrir uniquement ce dont vous avez besoin.

Installation et configuration

sudo apt install -y ufw

Configurez les règles de base :

# Bloquer tout le trafic entrant par défaut
sudo ufw default deny incoming

# Autoriser tout le trafic sortant
sudo ufw default allow outgoing

# Ouvrir votre port SSH personnalisé
sudo ufw allow 2222/tcp comment 'SSH custom'

# Ouvrir HTTPS si vous utilisez un reverse proxy
sudo ufw allow 443/tcp comment 'HTTPS'

⚠️ IMPORTANT : ajoutez la règle SSH avant d'activer UFW, sinon vous perdez l'accès !

Activez le firewall :

sudo ufw enable

Vérifiez les règles :

sudo ufw status verbose

💡 Conseil : ne pas ouvrir le port du Gateway OpenClaw (par défaut 3578) directement. Utilisez un tunnel SSH ou Cloudflare Tunnel à la place.

Règles supplémentaires utiles

# Limiter les connexions SSH (protection anti-brute-force intégrée)
sudo ufw limit 2222/tcp

# Voir les logs du firewall
sudo ufw logging on

HTTPS avec Cloudflare Tunnel

Pourquoi un tunnel ?

Avec un tunnel Cloudflare, votre serveur n'expose aucun port publiquement. Tout le trafic passe par le réseau de Cloudflare, ce qui :
- Cache votre adresse IP réelle
- Fournit HTTPS gratuitement
- Protège contre les attaques DDoS
- Élimine le besoin d'ouvrir le port 443

C'est la méthode recommandée pour exposer une interface web liée à OpenClaw.

Installation de cloudflared

# Télécharger et installer cloudflared
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install -y cloudflared

Authentification et création du tunnel

# Se connecter à Cloudflare (ouvre un navigateur)
cloudflared tunnel login

# Créer un tunnel
cloudflared tunnel create openclaw-tunnel

# Lister les tunnels
cloudflared tunnel list

Configuration du tunnel

Créez le fichier de configuration :

mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.yml
tunnel: <VOTRE-TUNNEL-ID>
credentials-file: /root/.cloudflared/<VOTRE-TUNNEL-ID>.json

ingress:
  - hostname: agent.votredomaine.com
    service: http://localhost:3578
  - service: http_status:404

Configurer le DNS et lancer

# Créer l'entrée DNS
cloudflared tunnel route dns openclaw-tunnel agent.votredomaine.com

# Tester le tunnel
cloudflared tunnel run openclaw-tunnel

Pour le lancer comme service système :

sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

💡 Alternative : si vous utilisez Tailscale, tailscale serve est une excellente option pour un accès privé sans exposition publique. OpenClaw documente cette approche dans ses guides réseau.


Mises à jour automatiques

Un serveur non mis à jour est une cible facile. Les mises à jour de sécurité doivent s'installer automatiquement.

Installation

sudo apt install -y unattended-upgrades apt-listchanges

Configuration

sudo dpkg-reconfigure -plow unattended-upgrades

Sélectionnez Oui pour activer les mises à jour automatiques.

Pour personnaliser, éditez :

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Les options importantes :

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

// Redémarrer automatiquement si nécessaire (la nuit)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

// Nettoyer les anciens noyaux
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

Vérifiez que tout fonctionne :

sudo unattended-upgrades --dry-run --debug

Permissions et isolation

Créer un utilisateur dédié

Ne faites jamais tourner OpenClaw en tant que root en production. Créez un utilisateur dédié :

# Créer l'utilisateur
sudo adduser --disabled-password --gecos "" openclaw

# Lui donner accès à Docker si nécessaire
sudo usermod -aG docker openclaw

# Se connecter en tant que cet utilisateur
sudo su - openclaw

Installez OpenClaw sous cet utilisateur :

npm install -g openclaw

Permissions des fichiers

# Protéger le répertoire de configuration
chmod 700 ~/.openclaw

# Protéger le fichier de configuration
chmod 600 ~/.openclaw/openclaw.json

# Protéger les credentials
chmod 600 ~/.openclaw/credentials/*.json 2>/dev/null

💡 openclaw security audit --fix applique automatiquement ces permissions.

Protéger les clés API

Ne mettez jamais vos clés API directement dans openclaw.json. Utilisez des variables d'environnement :

# Créer un fichier .env
nano ~/.openclaw/.env
ANTHROPIC_API_KEY=sk-ant-xxxxx
OPENAI_API_KEY=sk-xxxxx
TELEGRAM_BOT_TOKEN=123456:ABCdef
# Protéger le fichier
chmod 600 ~/.openclaw/.env

Dans votre service systemd, chargez les variables :

[Service]
EnvironmentFile=/home/openclaw/.openclaw/.env

⚠️ Ne commitez jamais de fichier .env dans Git. Ajoutez-le à .gitignore.


Isoler avec Docker (optionnel)

Pour une isolation encore plus forte, exécutez OpenClaw dans un conteneur Docker :

# Exemple de lancement avec Docker
docker run -d \
  --name openclaw \
  --restart unless-stopped \
  -v ~/.openclaw:/root/.openclaw \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  openclaw/openclaw:latest

Le conteneur isole le processus du reste du système, limitant l'impact d'une éventuelle compromission.

Auditer les permissions régulièrement

# Trouver les fichiers avec des permissions trop ouvertes
find ~/.openclaw -type f -perm /o+r -ls

# Vérifier qu'aucun fichier sensible n'est lisible par d'autres
stat -c '%a %n' ~/.openclaw/openclaw.json ~/.openclaw/.env 2>/dev/null

L'audit intégré d'OpenClaw fait une partie de ce travail. Prenez l'habitude de le lancer après chaque modification :

openclaw security audit --fix

L'option --fix applique automatiquement les corrections sûres : permissions des fichiers, politique de groupe, et redaction des logs.


Monitoring

Surveiller les connexions

Commandes essentielles à connaître :

# Qui est connecté en ce moment ?
who

# Dernières connexions
last -20

# Connexions échouées
sudo lastb -20

# Ports ouverts et connexions actives
sudo ss -tulnp

# Processus réseau
sudo ss -tp

Logs à vérifier régulièrement

# Tentatives SSH
sudo grep "Failed password" /var/log/auth.log | tail -20

# Connexions réussies
sudo grep "Accepted" /var/log/auth.log | tail -20

# Logs système
sudo journalctl -u openclaw --since "1 hour ago" --no-pager

# Logs Fail2ban
sudo fail2ban-client status sshd

Script de healthcheck

Créez un script simple pour vérifier l'état de votre installation :

nano ~/healthcheck.sh
#!/bin/bash
echo "=== Healthcheck OpenClaw ==="
echo ""

# Vérifier que le Gateway tourne
if openclaw gateway status | grep -q "running"; then
    echo "✅ Gateway: en cours d'exécution"
else
    echo "❌ Gateway: arrêté !"
fi

# Vérifier UFW
if sudo ufw status | grep -q "active"; then
    echo "✅ Firewall: actif"
else
    echo "❌ Firewall: inactif !"
fi

# Vérifier Fail2ban
if systemctl is-active --quiet fail2ban; then
    echo "✅ Fail2ban: actif"
else
    echo "❌ Fail2ban: inactif !"
fi

# Vérifier l'espace disque
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$DISK_USAGE" -lt 80 ]; then
    echo "✅ Disque: ${DISK_USAGE}% utilisé"
else
    echo "⚠️ Disque: ${DISK_USAGE}% utilisé (attention !)"
fi

# Vérifier les mises à jour de sécurité
UPDATES=$(apt list --upgradable 2>/dev/null | grep -c security)
if [ "$UPDATES" -eq 0 ]; then
    echo "✅ Mises à jour: à jour"
else
    echo "⚠️ Mises à jour: $UPDATES patchs de sécurité disponibles"
fi

# Connexions suspectes
FAILED=$(sudo grep -c "Failed password" /var/log/auth.log 2>/dev/null || echo "0")
echo "📊 Tentatives SSH échouées: $FAILED"

echo ""
echo "=== Fin du healthcheck ==="
chmod +x ~/healthcheck.sh

💡 Vous pouvez faire exécuter ce script par votre agent via un cron job OpenClaw pour recevoir un rapport quotidien.


Alertes automatiques avec OpenClaw

La vraie puissance du monitoring, c'est de le coupler avec votre agent. Créez un cron job qui exécute votre healthcheck et vous alerte :

openclaw cron add \
  --name "Healthcheck serveur" \
  --cron "0 */6 * * *" \
  --tz "Europe/Paris" \
  --session isolated \
  --message "Exécute ~/healthcheck.sh et envoie-moi un résumé. Alerte si quelque chose est anormal." \
  --announce \
  --channel telegram

Votre agent exécutera le script toutes les 6 heures et ne vous dérangera que si quelque chose cloche. C'est la combinaison parfaite entre sécurité et automatisation.

Surveiller les changements de fichiers critiques

Pour détecter les modifications non autorisées sur les fichiers de configuration :

# Installer AIDE (Advanced Intrusion Detection Environment)
sudo apt install -y aide

# Initialiser la base de données
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# Vérifier l'intégrité
sudo aide --check

Vous pouvez automatiser cette vérification via un cron job OpenClaw pour être alerté en cas de modification suspecte de fichiers système.


Checklist sécurité

Récapitulatif de tout ce que nous avons couvert. Cochez au fur et à mesure :

  • [ ] SSH : port changé (pas 22)
  • [ ] SSH : authentification par mot de passe désactivée
  • [ ] SSH : clés SSH configurées
  • [ ] Fail2ban : installé et configuré
  • [ ] UFW : activé avec règles minimales
  • [ ] UFW : port du Gateway NON exposé directement
  • [ ] Tunnel : Cloudflare Tunnel ou Tailscale configuré
  • [ ] Mises à jour : unattended-upgrades activé
  • [ ] Utilisateur : OpenClaw tourne sous un user dédié (pas root)
  • [ ] Permissions : ~/.openclaw en 700, config en 600
  • [ ] Clés API : dans des variables d'environnement, pas en dur
  • [ ] Monitoring : healthcheck en place
  • [ ] Audit : openclaw security audit passé sans erreur critique

⚠️ Rappel : aucune configuration n'est parfaite. La sécurité est un processus continu. Relancez openclaw security audit après chaque modification de configuration.


Prochaine étape

Votre serveur est maintenant sécurisé. Il est temps de le faire travailler pour vous ! Découvrez comment automatiser votre quotidien dans notre prochain article : Automatiser sa vie avec OpenClaw.
---\n\n## 📚 Pour aller plus loin\n\n- Qu'est-ce qu'OpenClaw ? L'agent IA qui change tout — Découvrez les bases d'OpenClaw et ses possibilités\n- Automatiser sa vie avec OpenClaw — Apprenez à utiliser OpenClaw pour automatiser vos tâches quotidiennes\n- Sécuriser son agent IA : les garde-fous essentiels — Conseils pour protéger vos agents IA contre les menaces\n- [VPS + IA : le setup complet pour

#sécurité #ssh #firewall #ufw #cloudflare #fail2ban #openclaw #vps #https