Harness MaxxingDocumentation
📚 Toutes les pages

📚 Référence · 10 min de lecture

🔒Sécurité

Harness Maxxing donne à un navigateur (et à une conversation Telegram) le contrôle de Claude Code sur votre serveur. Lisez cette page une fois.

Claude s'exécute avec tous les droits (mode bypass)

Les sessions, les tâches Claude et les tâches shell s'exécutent en root, avec tous les droits sur le serveur. Par défaut, claude s'exécute avec --dangerously-skip-permissions : Claude peut lire et modifier n'importe quel fichier (vos secrets, vos clés SSH, les données d'autres sites), installer des logiciels, modifier le pare-feu, démarrer ou arrêter des services et exécuter n'importe quelle commande, sans rien demander. C'est ce qui rend possibles le travail sans surveillance, les crons, l'administration du serveur et les conversations depuis un téléphone – et c'est pourquoi nous recommandons un serveur dédié à Harness Maxxing, sans autre service ni donnée critique.

Les risques : une instruction malveillante cachée dans un contenu que Claude lit (une page web, un e-mail, un document, un message transféré, un webhook) peut le pousser à agir sur tout le serveur ; une simple erreur aussi. Quiconque accède à l'interface ou à votre conversation Telegram obtient la même puissance. Rien sur le serveur (règles de refus, « Protéger les secrets ») n'arrête un code qui s'exécute volontairement en root.

Ce qui limite ces risques : - Les modes de permissions, par sujet et par tâche (la vraie limite) : bypass (par défaut, aucune question), acceptEdits (modifie les fichiers, demande avant les commandes), default (demande avant les modifications et les commandes), plan (lecture seule, propose un plan). Définissez-les pour tout le serveur (Paramètres -> Claude), pour un sujet (menu du sujet -> Permissions) ou pour une tâche planifiée. Placez chaque sujet et chaque tâche qui lit du contenu non fiable dans un mode plus strict. - Chaque session et chaque tâche s'exécute dans sa propre unité systemd, avec une limite de mémoire et quelques protections qui ne gênent jamais l'administration du serveur : elle ne peut pas régler l'horloge système, changer la personnalité du processus ni utiliser l'ordonnancement temps réel (config unit_hardening, activée pour les installations faites à partir de 2.0.0-alpha.70, désactivée sur les plus anciennes). Cela ne rend pas root moins puissant.

Un mode plus strict entraîne des actions refusées dans les sessions web. Voir Paramètres et clés.

Considérez tout ce que vous collez dans une session (documents, pages web, e-mails) comme des instructions que Claude peut suivre : ne lui donnez pas de contenu non fiable lorsque le mode bypass est activé. Les sujets et les tâches qui lisent le web, des e-mails ou des messages transférés sont ceux à placer dans un mode plus strict.

Protéger les secrets (Paramètres -> Claude, activé par défaut) fait que les outils de Claude refusent de lire ou de modifier secrets.json et ~/.ssh dans tous les modes. C'est un ralentisseur, pas un mur : un script écrit exprès pour ouvrir le fichier peut toujours y parvenir.

Qui peut accéder à l'interface

  • Le serveur écoute uniquement sur 127.0.0.1 (derrière Caddy) ou sur l'IP Tailscale – jamais sur 0.0.0.0 ni sur une adresse publique. maxxing doctor échoue si c'est le cas.
  • Mode domaine : HTTPS uniquement (Caddy, Let's Encrypt), avec HSTS, X-Frame-Options: SAMEORIGIN, nosniff et une politique de référent stricte (le serveur envoie lui-même les mêmes en-têtes, quel que soit le mode).
  • Mode Tailscale : seuls les appareils de votre tailnet peuvent se connecter.
  • Mode local : uniquement via un tunnel SSH.

Le serveur lui-même

L'installateur renforce la sécurité du serveur (étape « Sécurité du serveur » ; bash /opt/claude-maxxing/install.sh --secure la réapplique sur un serveur existant) :

  • Pare-feu (ufw) : tout le trafic entrant est refusé, sauf SSH (les ports sur lesquels sshd écoute réellement sont détectés d'abord, vous ne risquez donc jamais d'être bloqué dehors), 80/443 en mode domaine et l'interface tailscale0 en mode Tailscale. C'est important ici : si Claude lance un serveur de développement ou un serveur de fichiers rapide sur 0.0.0.0, il reste privé. Pour publier quelque chose volontairement : ufw allow 3000/tcp. Ignorez le pare-feu avec FIREWALL=0 (par exemple si le pare-feu de votre hébergeur fait déjà le travail). Sur un serveur déjà utilisé, le comportement par défaut (FIREWALL=auto) est prudent : le pare-feu n'est pas activé quand d'autres services sont accessibles depuis l'extérieur ou que Docker tourne, et un ufw actif conserve ses règles (seuls les ports nécessaires sont ajoutés). FIREWALL=1 impose la configuration stricte.
  • SSH par clé uniquement : les connexions par mot de passe (et keyboard-interactive) sont désactivées avec /etc/ssh/sshd_config.d/01-harness-maxxing.conf ; PermitRootLogin yes devient prohibit-password (une valeur plus stricte est conservée). Conçu pour que vous ne soyez pas bloqué dehors : par défaut, cela n'est fait que si la session qui exécute l'installateur est prouvée, d'après le journal SSH, comme étant une connexion par clé (une installation interactive demande d'abord) ; la nouvelle configuration est vérifiée avec sshd -t et supprimée si elle n'est pas valide ou ne prend pas effet ; les sessions ouvertes restent connectées. Sinon, les connexions par mot de passe restent actives et l'installateur en donne la raison (SSH_HARDEN=1 bash /opt/claude-maxxing/install.sh --secure une fois connecté avec une clé ; SSH_HARDEN=0 ne touche jamais à SSH). Pour annuler : rm /etc/ssh/sshd_config.d/01-harness-maxxing.conf && systemctl reload ssh.
  • fail2ban : une IP est bannie pendant 1 heure après 5 échecs de connexion SSH en 10 minutes (fail2ban-client status sshd ; réglages dans /etc/fail2ban/jail.d/harness-maxxing.local).
  • Mises à jour de sécurité automatiques (unattended-upgrades, tous les jours).
  • Téléchargements : rien de ce qui vient d'un tiers ne s'exécute avant d'avoir été vérifié, et aucun script venant d'internet n'est envoyé directement dans un shell. Chaque composant externe (uv, Python, Node.js, Claude Code, Scrapling et chaque paquet Python dont il a besoin, Chromium, Remotion, les modèles vocaux, Garage) a une version fixée et un sha256 dans server/maxxing/deps.toml, livré avec chaque version signée ; la clé du dépôt de Caddy doit avoir l'empreinte attendue et sa source apt est écrite par l'installateur. Un téléchargement qui ne correspond pas n'installe rien. maxxing deps verify revérifie les binaires installés et qu'aucun de leurs fichiers ne peut être remplacé par un autre utilisateur (le doctor le fait aussi) ; maxxing deps check recherche les versions dans la base de vulnérabilités osv.dev, et une tâche hebdomadaire vous prévient quand l'une d'elles est concernée. Les fichiers temporaires ne vont jamais dans le /tmp partagé.
  • Mémoire : le service web a sa propre limite de mémoire (60 % de la RAM), les sessions et les tâches planifiées s'exécutent dans leurs propres unités plafonnées, et les requêtes trop volumineuses sont refusées avant d'être lues.

  • Bac à sable du service : le service claude-maxxing s'exécute avec des protections systemd qui ne peuvent pas gêner le produit (pas de nouveaux privilèges, paramètres du noyau en lecture seule, pas de modules du noyau ni de journal du noyau, cgroups en lecture seule, pas de fichiers set-uid, un plafond sur les processus). Elles se trouvent dans /etc/systemd/system/claude-maxxing.service.d/10-hardening.conf. Les installations antérieures à 2.0.0a32 les obtiennent avec maxxing harden (redémarre le service ; s'il ne revient pas, la modification est annulée) ; maxxing harden --undo les supprime. Le service s'exécute toujours en root : les sessions Claude s'exécutent dans leurs propres unités et ne sont pas limitées par lui (elles reçoivent les protections plus légères décrites en haut de cette page).

Recommandé en plus : des clés SSH à la place des mots de passe (PasswordAuthentication no une fois que votre clé fonctionne). maxxing doctor vous avertit si l'un des trois éléments manque.

Connexion

  • Jeton de configuration : la première visite exige le lien à usage unique affiché par l'installateur (maxxing setup-link), pour que la première personne qui trouve l'URL ne puisse pas s'emparer de votre instance. Il est supprimé une fois le mot de passe défini.
  • Mot de passe : au moins 12 caractères pour un nouveau mot de passe (un ancien mot de passe plus court fonctionne toujours), stocké sous forme de hash scrypt. Changez-le dans Paramètres -> Sécurité ou avec maxxing password sur le serveur ; le changer déconnecte tous les navigateurs. Les mauvais mots de passe actuels saisis dans ce formulaire sont limités comme les connexions.
  • Cookie de session : signé, HttpOnly, SameSite=Strict, Secure en HTTPS, valable 30 jours. Se déconnecter révoque aussi le cookie de ce navigateur côté serveur (un cookie copié cesse de fonctionner) ; vos autres navigateurs restent connectés. Les vues en direct déjà ouvertes dans un navigateur déconnecté (conversations, mises à jour du tableau de bord) s'arrêtent en moins de 15 secondes. Pour déconnecter tous les navigateurs, changez le mot de passe (Paramètres, ou maxxing password).
  • CSRF : toute requête de modification doit porter l'en-tête X-Maxxing: 1, qu'un autre site web ne peut pas envoyer.
  • Taille des requêtes : une requête d'un navigateur non connecté est refusée avant que le serveur ne la lise (le formulaire de connexion lui-même accepte 64 ko au maximum), et les requêtes connectées sont aussi plafonnées (1 Mo, davantage pour l'éditeur de fichiers, les messages à Claude et les envois de fichiers), pour que personne ne puisse saturer la mémoire du serveur avec une requête énorme. Les vues en direct (conversations ouvertes, mises à jour du tableau de bord) sont également plafonnées : 24 par navigateur, 96 au total ; au-delà, une vue réessaie quelques secondes plus tard.
  • Limitation de débit : après un mauvais mot de passe, les tentatives suivantes sont retardées (1, 2, 4, 8 s) ; après 8 mauvais mots de passe, cette adresse est bloquée pendant 15 minutes – même le bon mot de passe est refusé jusque-là. Si de nombreuses adresses échouent en même temps (plus de 30 mauvais mots de passe en 15 minutes), le serveur ne vérifie qu'un mot de passe toutes les 5 secondes pour tout le monde : réessayez après quelques secondes.
  • Alertes : avec Telegram relié, chaque connexion et les mauvais mots de passe répétés sont signalés dans le fil Alertes.

Telegram

La passerelle ne répond qu'à la conversation reliée avec le code à usage unique, et uniquement au compte Telegram qui a ouvert le lien. Une conversation reliée sans son propriétaire (à la main, ou par une très ancienne version) ne répond à personne – maxxing doctor vous en avertit, reliez-la à nouveau depuis Paramètres -> Telegram. Toute personne ayant accès à ce compte Telegram peut piloter Claude : protégez-le (validation en deux étapes).

Où sont stockées les données

Chemin Contenu Protection
/var/lib/claude-maxxing/config.json paramètres (sans secrets) répertoire en mode 700
/var/lib/claude-maxxing/secrets.json hash du mot de passe, clé des cookies, jeton/clé API Claude, jeton Telegram, jetons GitHub, vos Clés mode 600 ; jamais renvoyé par l'API, sauf sur demande explicite de Révéler
/var/lib/claude-maxxing/sessions/ métadonnées et journaux des sessions répertoire en mode 700
/root/maxxing/ votre espace de travail (mémoire, projets, tâches, extensions) sauvegardé (liste blanche)
~/.claude/ paramètres de Claude Code, identifiants du CLI, transcriptions fichiers propres à Claude Code
/opt/claude-maxxing/ le code (clone git) et son environnement Python remplacé par les mises à jour

Les secrets ne vont jamais dans la sauvegarde : elle copie une liste blanche, refuse les fichiers comme .env ou les clés, recherche les formats de secrets et refuse d'envoyer vers un dépôt public.

Fichiers

La page Fichiers et l'API n'accèdent qu'à la racine des fichiers (Paramètres -> Général). Les fichiers supprimés vont à la corbeille.

  • Les fichiers ouverts dans le navigateur ne peuvent jamais exécuter de scripts avec votre session : tout ce qui n'est pas image, audio, vidéo ou PDF est affiché dans un bac à sable.
  • Un lien d'aperçu de page HTML (valable 2 heures, interrompu par la déconnexion – de ce navigateur ou de tous) donne accès au dossier de la page – uniquement les pages et leurs ressources statiques (styles, scripts, images, polices, audio, vidéo), jamais les notes, les données ou les documents (.md, .json, .txt, .csv, .pdf...), le code ou les paramètres (.py, .env, .yaml...), les fichiers ou dossiers cachés (.ssh, .claude...) ; depuis le dossier attachments/ d'un sujet, uniquement les images et les vidéos. Une page enregistrée directement à la racine des fichiers, dans le dossier personnel, à la racine de l'espace de travail, dans projects/, dans un projet ou son dossier topics/ (ou dans un dossier caché) est affichée seule : les images et les styles placés à côté ne se chargent pas – déplacez-la dans son propre dossier.
  • Demander à Harness sur une notification ouvre une session en mode plan : Claude lit et explique, il ne modifie rien tant que vous n'avez pas approuvé un plan – le texte d'un webhook ne peut pas le faire agir.
  • Les webhooks refusent les liens inconnus avant de rien lire, ainsi que toute requête de plus de 1 Mo.
  • L'import n'apporte jamais les paramètres ni les hooks de Claude Code (.claude/settings.json, .mcp.json) depuis l'archive ; les skills et les notes sont importés.

Compte Anthropic

Harness Maxxing exécute le CLI officiel Claude Code avec votre compte ou votre clé API sur votre serveur ; il ne partage ni ne relaie jamais les identifiants. Assurez-vous que votre usage respecte les conditions d'Anthropic pour votre offre.

Liste de contrôle

  • [ ] Serveur dédié ; SSH par clé uniquement, pare-feu, fail2ban et mises à jour de sécurité automatiques activés (configurés par l'installateur).
  • [ ] Accès par domaine (HTTPS) ou Tailscale ; rien d'accessible depuis Internet, sauf SSH, 80 et 443.
  • [ ] SSH avec une clé (connexion par mot de passe désactivée).
  • [ ] Mot de passe fort pour l'interface ; compte Telegram protégé.
  • [ ] Sauvegarde de la mémoire vers un dépôt privé.
  • [ ] maxxing doctor entièrement au vert.
💡 Bloqué ? Ouvrez une session dans le topic system › help et posez votre question avec vos mots : Claude lit cette doc sur votre serveur et vous répond.✏️ Améliorer cette page