{"id":20468,"date":"2026-08-09T08:33:19","date_gmt":"2026-08-09T06:33:19","guid":{"rendered":"https:\/\/webhosting.de\/per-site-cagefs-shared-hosting-sicherheit-architektur\/"},"modified":"2026-08-09T08:33:19","modified_gmt":"2026-08-09T06:33:19","slug":"par-site-cagefs-hebergement-mutualise-securite-architecture","status":"publish","type":"post","link":"https:\/\/webhosting.de\/fr\/per-site-cagefs-shared-hosting-sicherheit-architektur\/","title":{"rendered":"CageFS par site : une nouvelle architecture de s\u00e9curit\u00e9 pour l'h\u00e9bergement mutualis\u00e9"},"content":{"rendered":"<p><strong>CageFS par site<\/strong> s\u00e9pare strictement les diff\u00e9rents sites web au sein d'un compte d'h\u00e9bergement mutualis\u00e9, limitant ainsi le risque de propagation lat\u00e9rale apr\u00e8s une intrusion. Je vais vous pr\u00e9senter cette nouvelle architecture de s\u00e9curit\u00e9, vous montrer des sc\u00e9narios d'utilisation concrets et vous expliquer comment vous pouvez ainsi g\u00e9rer plusieurs projets en toute s\u00e9curit\u00e9 au sein d'un m\u00eame compte.<\/p>\n\n<h2>Points centraux<\/h2>\n\n<ul>\n  <li><strong>Isolement du site web<\/strong>: Une s\u00e9paration suppl\u00e9mentaire au sein d'un m\u00eame compte permet de r\u00e9duire les risques collat\u00e9raux.<\/li>\n  <li><strong>CloudLinux<\/strong>: Extension du concept CageFS au niveau du domaine.<\/li>\n  <li><strong>WordPress<\/strong>: Faire fonctionner plusieurs instances en parall\u00e8le en toute s\u00e9curit\u00e9.<\/li>\n  <li><strong>Ressources<\/strong>: Les limites impos\u00e9es au processeur, \u00e0 la m\u00e9moire vive et aux E\/S viennent compl\u00e9ter la s\u00e9paration des vues de fichiers.<\/li>\n  <li><strong>Cabinet m\u00e9dical<\/strong>: Activation par domaine et strat\u00e9gie claire en mati\u00e8re de droits d'acc\u00e8s et de chemins d'acc\u00e8s.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/sicherheitsserverraum-8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ce que \u201e Per-Site CageFS \u201c apporte concr\u00e8tement<\/h2>\n\n<p>L'extension isole chaque <strong>Domaines<\/strong> au sein d'un CageFS utilisateur existant, afin que chaque site web ne voie que ses propres fichiers et processus. Cela permet d'emp\u00eacher qu'un projet compromis n'acc\u00e8de aux fichiers de configuration, aux fichiers t\u00e9l\u00e9charg\u00e9s ou aux cl\u00e9s d'autres sites h\u00e9berg\u00e9s sur le m\u00eame compte. Selon <strong>CloudLinux<\/strong> Blog (annonce de la version b\u00eata) : CageFS par site renforce l'isolation entre les sites web au sein d'un m\u00eame compte utilisateur, r\u00e9duisant ainsi le risque de propagation lat\u00e9rale. Pour moi, l\u2019int\u00e9r\u00eat est \u00e9vident : je segmente clairement les comptes d\u2019agence, les configurations multisites et les environnements de test, sans bouleverser la structure d\u2019h\u00e9bergement. Cet article de fond sur CageFS offre un aper\u00e7u rapide de son principe : <a href=\"https:\/\/webhosting.de\/fr\/cloudlinux-cagefs-systeme-de-fichiers-isolation-securite-hostingshield\/\">Syst\u00e8me de fichiers CageFS<\/a>, sur lequel repose l'isolation par site.<\/p>\n\n<h2>Pourquoi l'isolation des comptes ne suffit pas \u00e0 elle seule<\/h2>\n\n<p>Un compte regroupe souvent plusieurs <strong>Projets<\/strong> \u2013 environ deux boutiques en ligne, trois blogs et un environnement de test. Si un exploit attaque un plugin vuln\u00e9rable, un pirate peut, sans segmentation suppl\u00e9mentaire, acc\u00e9der aux r\u00e9pertoires voisins et y placer d\u2019autres charges utiles. C\u2019est pr\u00e9cis\u00e9ment l\u00e0 que Per-Site CageFS restreint l\u2019acc\u00e8s au syst\u00e8me de fichiers et aux processus de telle sorte que chaque site web soit isol\u00e9 comme s\u2019il se trouvait dans son propre <strong>Prison<\/strong> fonctionne. C'est notamment le cas lorsque plusieurs instances WordPress distinctes partagent le m\u00eame utilisateur PHP : cela cr\u00e9e sinon un risque d'escalade que je parviens \u00e0 \u00e9liminer gr\u00e2ce \u00e0 l'isolation des domaines. Cela permet de limiter les dommages collat\u00e9raux, de simplifier l'analyse des incidents et de planifier plus rapidement les restaurations.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/sicherheitskonferenz_8765.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Voici comment fonctionne techniquement l'isolation des sites web<\/h2>\n\n<p>CloudLinux utilise CageFS pour cr\u00e9er un environnement virtuel par utilisateur <strong>syst\u00e8me de fichiers<\/strong>; la couche \u00ab par site \u00bb \u00e9tend cette fonctionnalit\u00e9 aux limites des domaines. Chaque domaine activ\u00e9 dispose d'un espace de travail distinct au sein du CageFS de l'utilisateur, comprenant des chemins d'acc\u00e8s restreints, ses propres r\u00e9pertoires temporaires et une ex\u00e9cution de scripts isol\u00e9e. De ce fait, les fichiers wp-config.php, dossiers de t\u00e9l\u00e9chargement ou fichiers de cl\u00e9s \u00e9trangers disparaissent du champ de vision du site web attaqu\u00e9. Les t\u00e2ches cron, PHP et, le cas \u00e9ch\u00e9ant, les commandes SSH acc\u00e8dent aux m\u00eames biblioth\u00e8ques syst\u00e8me, mais ne voient que les <strong>sous-ensembles<\/strong> du syst\u00e8me de fichiers. D'apr\u00e8s la documentation, cette s\u00e9paration peut \u00eatre activ\u00e9e ou d\u00e9sactiv\u00e9e par domaine, ce qui me permet de b\u00e9n\u00e9ficier d'un contr\u00f4le tr\u00e8s pr\u00e9cis pour les instances de production, de pr\u00e9production et de test.<\/p>\n\n<h2>Comparaison : isolation des comptes, CageFS par site et conteneurs<\/h2>\n\n<p>Pour faire mon choix de mani\u00e8re structur\u00e9e, je compare trois options courantes <strong>Mod\u00e8les<\/strong> en fonction du niveau d'isolation, de la charge de travail et de la compatibilit\u00e9. L'isolation par compte assure la s\u00e9paration des clients, mais laisse ouvertes les fronti\u00e8res internes entre sites. CageFS par site comble cette lacune au niveau du syst\u00e8me de fichiers et des processus. Les conteneurs cr\u00e9ent des fronti\u00e8res strictes, mais n\u00e9cessitent souvent davantage de maintenance et d'ajustements. Ce document fournit une classification approfondie de l'isolation des processus. <a href=\"https:\/\/webhosting.de\/fr\/processus-isolation-hebergement-chroot-cagefs-conteneurs-jails-securite-comparaison\/\">Comparaison entre Chroot, CageFS et Jails<\/a>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Approche<\/th>\n      <th>S\u00e9paration entre les comptes<\/th>\n      <th>S\u00e9paration des sites web au sein du compte<\/th>\n      <th>Compatibilit\u00e9 (PHP\/CGI\/SSH\/Cron)<\/th>\n      <th>Charges d'exploitation<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Isolement des comptes (classique)<\/td>\n      <td><strong>Haute<\/strong><\/td>\n      <td>Faible<\/td>\n      <td>Tr\u00e8s bon<\/td>\n      <td>Faible<\/td>\n    <\/tr>\n    <tr>\n      <td>CageFS par site<\/td>\n      <td><strong>Haute<\/strong><\/td>\n      <td>Moyen \u00e0 \u00e9lev\u00e9<\/td>\n      <td>Tr\u00e8s bon<\/td>\n      <td>Faible \u00e0 moyen<\/td>\n    <\/tr>\n    <tr>\n      <td>Conteneurs par site<\/td>\n      <td><strong>Tr\u00e8s \u00e9lev\u00e9<\/strong><\/td>\n      <td>Tr\u00e8s \u00e9lev\u00e9<\/td>\n      <td>Bon \u00e0 tr\u00e8s bon<\/td>\n      <td>Moyen \u00e0 \u00e9lev\u00e9<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Dans les environnements d'h\u00e9bergement mutualis\u00e9, CageFS par site offre une combinaison efficace de contr\u00f4le pr\u00e9cis <strong>S\u00e9paration<\/strong> et une adaptation minimale, car les scripts fonctionnent g\u00e9n\u00e9ralement sans modification. Cela me permet de pallier la faille la plus courante : plusieurs sites web ind\u00e9pendants h\u00e9berg\u00e9s sous un seul compte utilisateur.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/sicherheitsarchitektur-cagefs-blog-4719.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>En pratique : exploiter plusieurs instances WordPress en toute s\u00e9curit\u00e9<\/h2>\n\n<p>Je s\u00e9pare chaque instance WordPress sur laquelle est activ\u00e9e la fonction <strong>Isolation des domaines<\/strong> et je configure des pools PHP-FPM distincts pour chaque site, afin que les journaux, l'opcache et les limites puissent \u00eatre clairement attribu\u00e9s. De plus, je d\u00e9finis des SALT\/KEY sp\u00e9cifiques \u00e0 chaque site dans le fichier wp-config.php et j'emp\u00eache tout acc\u00e8s crois\u00e9 via les droits d'acc\u00e8s aux fichiers et des \u00e9quivalents de la directive open_basedir. Je stocke les fichiers t\u00e9l\u00e9charg\u00e9s strictement au sein du r\u00e9pertoire racine de chaque site et j\u2019interdis l\u2019utilisation de r\u00e9pertoires de t\u00e9l\u00e9chargement partag\u00e9s au niveau global. Lors des d\u00e9ploiements, je limite les chemins d\u2019acc\u00e8s temporaires \u00e0 l\u2019int\u00e9rieur du site et je supprime imm\u00e9diatement les artefacts de compilation afin qu\u2019aucune surface d\u2019attaque inutile ne subsiste. Pour les caches Composer ou NPM, j\u2019utilise des r\u00e9pertoires locaux au site <strong>R\u00e9pertoires<\/strong>, afin d'\u00e9viter tout effet ind\u00e9sirable.<\/p>\n\n<h2>Interaction entre la performance et la gestion des ressources<\/h2>\n\n<p>CageFS par site g\u00e8re la vue des fichiers ; la <strong>Performance<\/strong> Je me prot\u00e8ge en fixant des limites pour le CPU, la RAM, les E\/S et les processus au niveau du compte ou du pool. Cela m'\u00e9vite qu'un site ne g\u00e9n\u00e8re une charge excessive \u00e0 cause de plugins d\u00e9fectueux et ne ralentisse l'ensemble du compte. Dans de nombreuses configurations, cela s\u2019inscrit dans le cadre de quotas LVE ou similaires, que je r\u00e8gle avec pr\u00e9cision par pool ou par compte. J\u2019associe cela \u00e0 une limitation des requ\u00eates au niveau du serveur web ou du WAF, afin que les pics de trafic soient g\u00e9r\u00e9s de mani\u00e8re ordonn\u00e9e. Cette combinaison d\u2019isolation et de quotas renforce la s\u00e9curit\u00e9 des services et la pr\u00e9visibilit\u00e9 <strong>R\u00e9partition de la charge<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/techoffice_cagefs_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cha\u00eene de protection : ce que Per-Site CageFS ne remplace pas<\/h2>\n\n<p>L'isolation emp\u00eache les vues transversales, mais je consid\u00e8re les mises \u00e0 jour, <strong>Durcissement<\/strong> de PHP et l'utilisation de mots de passe forts sont toujours rigoureusement appliqu\u00e9es. L'authentification multifactorielle (MFA) pour les connexions administrateur, les droits d'acc\u00e8s minimaux aux fichiers et les filtres de t\u00e9l\u00e9chargement restent obligatoires. Un pare-feu WAF, des limites de d\u00e9bit et une journalisation continue couvrent des vecteurs d'attaque suppl\u00e9mentaires que la simple s\u00e9paration des vues de fichiers ne permet pas de contr\u00f4ler. Je v\u00e9rifie \u00e9galement r\u00e9guli\u00e8rement les t\u00e2ches cron et les jetons d\u2019int\u00e9gration, que les attaquants oublient souvent de rep\u00e9rer. Pour en savoir plus sur l\u2019interaction entre la s\u00e9paration des clients et le durcissement, consultez ce guide sur <a href=\"https:\/\/webhosting.de\/fr\/hebergement-partage-securite-tenant-isolation-serverguard\/\">S\u00e9curit\u00e9 de l'h\u00e9bergement mutualis\u00e9<\/a>, qui met en \u00e9vidence cette ligne de pens\u00e9e.<\/p>\n\n<h2>Mise en place et obstacles courants<\/h2>\n\n<p>J'active l'isolation de domaine de mani\u00e8re cibl\u00e9e pour chaque <strong>site web<\/strong> puis je teste les acc\u00e8s SSH, Cron et PHP en conditions r\u00e9elles. Les chemins absolus dans les scripts de d\u00e9ploiement ou les plugins peuvent poser des probl\u00e8mes ; c'est pourquoi je privil\u00e9gie les chemins relatifs ou les variables. J\u2019\u00e9vite les liens symboliques entre les projets, car ils affaiblissent le principe de s\u00e9paration ; je pr\u00e9f\u00e8re ajouter les biblioth\u00e8ques n\u00e9cessaires au d\u00e9p\u00f4t pour chaque site. Pour les sauvegardes, je d\u00e9finis des archives distinctes et je sauvegarde les journaux par domaine, afin que la restauration et l\u2019analyse forensic restent claires. En mati\u00e8re de droits d\u2019acc\u00e8s, les valeurs 640 pour les fichiers et 750 pour les dossiers ont fait leurs preuves, ainsi que <strong>Propri\u00e9taire<\/strong> adapt\u00e9 au pool PHP correspondant.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/sicherheit_shared_hosting_3647.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Analyse co\u00fbts-b\u00e9n\u00e9fices pour les agences et les ind\u00e9pendants<\/h2>\n\n<p>Je compare le gain en mati\u00e8re de s\u00e9curit\u00e9 au temps consacr\u00e9 \u00e0 la gestion administrative et aux co\u00fbts potentiels li\u00e9s \u00e0 une panne qu'un incident transversal entra\u00eenerait, pour aboutir \u00e0 <strong>Euro<\/strong>-Base. Quelques heures d'intervention en cas d'incident co\u00fbtent souvent bien plus cher qu'un petit suppl\u00e9ment mensuel pour une meilleure isolation. Pour les comptes d\u2019agences g\u00e9rant plusieurs projets clients, la segmentation r\u00e9duit sensiblement les risques li\u00e9s \u00e0 la responsabilit\u00e9 et \u00e0 la r\u00e9putation. Les processus de sauvegarde et de restauration se d\u00e9roulent \u00e9galement de mani\u00e8re plus ordonn\u00e9e, car je peux restaurer des sites individuels avec une grande pr\u00e9cision. Globalement, CageFS par site offre une solution plus fiable <strong>Gestion de l'entreprise<\/strong> avec des processus pr\u00e9visibles.<\/p>\n\n<h2>Liste de contr\u00f4le : quand l'utilisation de CageFS par site devient obligatoire<\/h2>\n\n<p>J'active l'isolation de domaine d\u00e8s qu'il y a plusieurs <strong>Installations<\/strong> fonctionnent sous un m\u00eame compte et ont des cycles de mise \u00e0 jour diff\u00e9rents. Autre point important : la pr\u00e9sence d\u2019\u00e9quipes de projet distinctes ou d\u2019acc\u00e8s administrateurs externes, qui augmentent le risque d\u2019interventions involontaires. Les volumes de t\u00e9l\u00e9chargement \u00e9lev\u00e9s, les convertisseurs de fichiers ou le traitement d\u2019images justifient \u00e9galement cette s\u00e9paration, car ils constituent souvent des points d\u2019entr\u00e9e. Des exigences de conformit\u00e9 vari\u00e9es (par exemple, clients, march\u00e9s, protection des donn\u00e9es) plaident \u00e9galement en faveur d\u2019une segmentation plus fine. Ceux qui exploitent en parall\u00e8le les environnements de pr\u00e9production, de test et de production b\u00e9n\u00e9ficient de domaines d\u2019erreurs clairement s\u00e9par\u00e9s et d\u2019une <strong>M\u00e9decine l\u00e9gale<\/strong>.<\/p>\n\n<h2>Conditions pr\u00e9alables et compatibilit\u00e9 dans la pratique<\/h2>\n\n<p>Avant de mettre en production CageFS par site, je v\u00e9rifie l'environnement d'ex\u00e9cution : le gestionnaire PHP utilis\u00e9 (par exemple PHP-FPM, lsapi), le serveur web actif, l'int\u00e9gration disponible avec le panneau de contr\u00f4le et la mani\u00e8re dont les t\u00e2ches Cron et les sessions SSH sont g\u00e9r\u00e9es. Dans les environnements mutualis\u00e9s classiques, les applications continuent de fonctionner sans modification du code. Je m\u2019assure qu\u2019il existe un r\u00e9pertoire racine distinct pour chaque domaine, que les chemins d\u2019acc\u00e8s sont uniques (par exemple \/home\/user\/sites\/projet-a\/public) et qu\u2019un pool PHP-FPM d\u00e9di\u00e9 est utilis\u00e9 pour chaque site. Pour les t\u00e2ches Cron, j\u2019utilise des crontabs sp\u00e9cifiques \u00e0 chaque domaine ou, lorsque le panneau de contr\u00f4le les regroupe, des pr\u00e9fixes et des chemins de journalisation clairs, afin que les t\u00e2ches restent bien d\u00e9limit\u00e9es au sein de leur <strong>Jails<\/strong> travailler.<\/p>\n\n<h2>S\u00e9parer clairement les bases de donn\u00e9es, les caches et les sessions<\/h2>\n\n<p>La vue des fichiers n'est qu'une partie du processus. Je pousse cette s\u00e9paration jusqu'\u00e0 la base de donn\u00e9es et aux caches. Pour chaque site web, je cr\u00e9e une base de donn\u00e9es distincte et un utilisateur de base de donn\u00e9es d\u00e9di\u00e9 disposant de droits minimaux. Pour les caches d'objets ou de pages (par exemple Redis, Memcached), j'utilise des instances distinctes par site ou, au minimum, des pr\u00e9fixes de cl\u00e9s et des bases de donn\u00e9es\/espaces de noms d\u00e9di\u00e9s. Les sessions PHP sont stock\u00e9es dans des chemins propres \u00e0 chaque site ; je configure le param\u00e8tre `session.save_path` s\u00e9par\u00e9ment pour chaque pool FPM. Si j\u2019utilise une file d\u2019attente centrale ou un backend de recherche, je s\u00e9pare les index et les sujets par site. Ce principe de \u201e s\u00e9paration jusqu\u2019au dernier kilom\u00e8tre \u201c emp\u00eache les incidents de se propager aux syst\u00e8mes p\u00e9riph\u00e9riques.<\/p>\n\n<h2>CI\/CD et d\u00e9ploiements en conditions d'isolement<\/h2>\n\n<p>Dans les pipelines de build, je privil\u00e9gie syst\u00e9matiquement l'isolation : chaque site dispose de sa propre t\u00e2che de d\u00e9ploiement, qui n'acc\u00e8de qu'au r\u00e9pertoire du site. Je d\u00e9compresse les artefacts \u00e0 la racine du domaine, puis j'effectue les corrections de propri\u00e9taire\/groupe et je ne valide que les caches concern\u00e9s. Les commandes WP-CLI s\u2019ex\u00e9cutent dans le contexte CageFS correspondant, de sorte qu\u2019elles n\u2019affectent pas les projets tiers. Je s\u00e9pare les variables d\u2019environnement par site ; les secrets restent dans les fichiers de configuration propres au site ou dans le magasin de secrets du panneau d\u2019administration. Pour garantir une disponibilit\u00e9 sans interruption, j\u2019utilise des commutations atomiques de liens symboliques au sein des limites du domaine (par exemple, current\/releases), mais je veille \u00e0 ce que les liens symboliques ne pointent pas vers des projets voisins. Les v\u00e9rifications post-d\u00e9ploiement (\u00e9tat de sant\u00e9, analyse des erreurs 404\/500, v\u00e9rification des droits) sont obligatoires pour chaque site.<\/p>\n\n<h2>Surveillance, journalisation et analyse forensique<\/h2>\n\n<p>Je s\u00e9pare syst\u00e9matiquement les fichiers journaux : fichiers d'acc\u00e8s et d'erreurs par domaine, fichiers journaux PHP et Cron distincts, avec rotation et dur\u00e9e de conservation. En cas d'incident, cela me permet de reconstituer la chronologie d'un site donn\u00e9 sans avoir \u00e0 passer au crible l'ensemble du compte. En compl\u00e9ment, je mise sur des contr\u00f4les d\u2019int\u00e9grit\u00e9 des fichiers (sommes de contr\u00f4le des r\u00e9pertoires cl\u00e9s), des journaux d\u2019audit distribu\u00e9s pour les actions d\u2019administration et de simples fichiers \u00ab canary \u00bb qui signalent rapidement toute manipulation. Pour les alertes, des seuils suffisent souvent : hausses soudaines des codes d'erreur 500, tailles de fichiers t\u00e9l\u00e9charg\u00e9s inhabituelles, augmentation rapide de l'occupation des inodes ou d\u00e9marrages excessifs de workers PHP. J\u2019associe ces signaux \u00e0 des proc\u00e9dures d\u2019intervention claires : bloquer le site, v\u00e9rifier les sauvegardes, s\u00e9curiser les artefacts, red\u00e9marrer dans un environnement isol\u00e9.<\/p>\n\n<h2>Cas particuliers de WordPress : multisite, plugins MU et flux de t\u00e9l\u00e9chargement<\/h2>\n\n<p>Avec WordPress Multisite, je p\u00e8se le pour et le contre : une installation Multisite tire moins parti de CageFS par site, car plusieurs sites partagent d\u00e9lib\u00e9r\u00e9ment une base de code et une structure communes. Si j'ai besoin de limites plus strictes (\u00e9quipes ind\u00e9pendantes, caches s\u00e9par\u00e9s, analyse claire), je pr\u00e9f\u00e8re mettre en place des instances individuelles et les isoler. Je ne distribue les plugins MU, les drop-ins ou les biblioth\u00e8ques globales \u00ab Must-Use \u00bb qu'au sein d'un m\u00eame site et j'\u00e9vite les dossiers partag\u00e9s. Les workflows multim\u00e9dias (CDN, optimisation d\u2019images, convertisseurs) s\u2019ex\u00e9cutent au sein de la \u00ab prison \u00bb du domaine ; j\u2019emp\u00eache tout t\u00e9l\u00e9chargement depuis un site vers les r\u00e9pertoires d\u2019un autre. Si une \u00e9quipe souhaite partager des pipelines d\u2019actifs, je les r\u00e9plique par site ou je les encapsule sous forme de paquet int\u00e9gr\u00e9 au d\u00e9p\u00f4t correspondant.<\/p>\n\n<h2>Parcours de migration : du syst\u00e8me monolithique au compte segment\u00e9<\/h2>\n\n<p>De nombreux comptes d\u00e9marrent avec un r\u00e9pertoire public_html volumineux et se d\u00e9veloppent au fil du temps. Je proc\u00e8de en cinq \u00e9tapes : 1) Inventaire : quels sites, domaines, t\u00e2ches cron, bases de donn\u00e9es, secrets ? 2) D\u00e9finir la structure des chemins d'acc\u00e8s : pour chaque site, un r\u00e9pertoire racine, un r\u00e9pertoire temporaire, des fichiers journaux et des sauvegardes d\u00e9di\u00e9s. 3) D\u00e9finir les pools PHP-FPM par domaine et fixer des limites. 4) D\u00e9placer les fichiers, ajuster les droits d\u2019acc\u00e8s, nettoyer les chemins absolus et les inclusions. 5) Activer CageFS par site, effectuer des tests sous charge, mettre en place la surveillance. Pendant ce temps, je pr\u00e9vois une strat\u00e9gie de restauration (instantan\u00e9s, sauvegardes s\u00e9par\u00e9es). Apr\u00e8s la migration, je v\u00e9rifie si des outils tels que WP-CLI, Composer, les processus d\u2019images et les t\u00e2ches Cron fonctionnent dans le bon p\u00e9rim\u00e8tre et j\u2019ajuste les variables de chemin si n\u00e9cessaire.<\/p>\n\n<h2>Probl\u00e8mes courants et d\u00e9pannage<\/h2>\n\n<ul>\n  <li>Erreurs 403\/404 apr\u00e8s activation : la plupart du temps, les r\u00e8gles de r\u00e9\u00e9criture ou les inclusions renvoient vers des chemins situ\u00e9s en dehors de la racine du domaine. Je corrige ces chemins en utilisant des variantes relatives ou des variables.<\/li>\n  <li>Composer\/NPM plante : les caches globaux ne sont pas visibles. Je configure des r\u00e9pertoires de cache sp\u00e9cifiques au site et j'ajuste les variables HOME\/TMP lors du d\u00e9ploiement.<\/li>\n  <li>WP-CLI ne trouve pas le fichier wp-config.php : l'ex\u00e9cution ne se fait pas \u00e0 la racine du domaine. Je d\u00e9finis correctement le r\u00e9pertoire de travail ou j'indique explicitement le chemin d'acc\u00e8s.<\/li>\n  <li>Probl\u00e8me avec les t\u00e2ches Cron : les utilisateurs Cron ou les chemins d'acc\u00e8s ne sont pas d\u00e9finis par domaine. Je v\u00e9rifie les variables d'environnement, les chemins d'acc\u00e8s aux binaires et les destinations des journaux au sein de la \u00ab site-jail \u00bb.<\/li>\n  <li>\u00c9chec des t\u00e9l\u00e9chargements : session.save_path ou tmp_dir pointe vers le mauvais r\u00e9pertoire. J'attribue des chemins d'acc\u00e8s temporaires propres \u00e0 chaque site en fonction du pool FPM.<\/li>\n  <li>Biblioth\u00e8que partag\u00e9e manquante : le lien symbolique vers le projet voisin est bloqu\u00e9. Je r\u00e9plique la biblioth\u00e8que sur chaque site ou je l'int\u00e8gre sous forme de paquet dans le d\u00e9ploiement.<\/li>\n<\/ul>\n\n<h2>Gouvernance et mod\u00e8le d'acc\u00e8s<\/h2>\n\n<p>M\u00eame si tout est techniquement s\u00e9par\u00e9, la question des acc\u00e8s reste d'actualit\u00e9. J'attribue des acc\u00e8s SSH\/SFTP d\u00e9di\u00e9s \u00e0 chaque site ou je limite les acc\u00e8s au panneau d'administration au domaine concern\u00e9. Les \u00e9quipes de d\u00e9veloppeurs et d'agences ne re\u00e7oivent que les cl\u00e9s et les autorisations dont elles ont r\u00e9ellement besoin. En cas d\u2019urgence, je dispose d\u2019une proc\u00e9dure d\u2019urgence (droits temporairement \u00e9tendus, journalisation compl\u00e8te, retrait ult\u00e9rieur). Lors des audits, je documente pour chaque site : les chemins d\u2019acc\u00e8s, les pools, les limites, les responsables, les attributions RBAC et les sauvegardes. Ainsi, la segmentation reste solide non seulement sur le plan technique, mais aussi sur le plan organisationnel.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/hosting-sicherheitskonzept-4812.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>En bref<\/h2>\n\n<p>CageFS par site compl\u00e8te la s\u00e9paration des utilisateurs existante en ajoutant une <strong>site web<\/strong>-niveau, r\u00e9duisant ainsi efficacement le risque de mouvements lat\u00e9raux. Je consid\u00e8re cela comme une mesure pratique, car de nombreux comptes regroupent plusieurs projets ind\u00e9pendants. La combinaison de la s\u00e9paration des vues de fichiers et des limites de ressources permet d\u2019apporter de l\u2019ordre en mati\u00e8re de performances, de s\u00e9curit\u00e9 et d\u2019exploitation. Ceux qui h\u00e9bergent plusieurs instances WordPress ou de boutiques en ligne gagnent du temps lors du d\u00e9pannage, des sauvegardes et des red\u00e9marrages apr\u00e8s des incidents. Gr\u00e2ce \u00e0 des droits clairs, des mises \u00e0 jour, l\u2019authentification multifactorielle (MFA) et la journalisation, on obtient une solution viable <strong>cha\u00eene de s\u00e9curit\u00e9<\/strong>, ce qui rend l'h\u00e9bergement mutualis\u00e9 nettement plus r\u00e9sistant.<\/p>","protected":false},"excerpt":{"rendered":"<p>CageFS par site renforce la s\u00e9curit\u00e9 de l'h\u00e9bergement mutualis\u00e9 gr\u00e2ce aux isolats CloudLinux et \u00e0 une isolation claire des sites web au sein d'un m\u00eame compte.<\/p>","protected":false},"author":1,"featured_media":20461,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[794],"tags":[],"class_list":["post-20468","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sicherheit-computer_und_internet"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"116","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Per-Site CageFS","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20461","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/comments?post=20468"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media\/20461"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media?parent=20468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/categories?post=20468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/tags?post=20468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}