{"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":"seguranca-da-arquitetura-de-alojamento-partilhado-do-site-cagefs","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/per-site-cagefs-shared-hosting-sicherheit-architektur\/","title":{"rendered":"CageFS por site: nova arquitetura de seguran\u00e7a para alojamento partilhado"},"content":{"rendered":"<p><strong>CageFS por site<\/strong> Separa rigorosamente os sites individuais dentro de uma conta de alojamento partilhado, limitando assim o risco de propaga\u00e7\u00e3o lateral ap\u00f3s um ataque. Vou explicar a nova arquitetura de seguran\u00e7a, apresentar cen\u00e1rios pr\u00e1ticos de utiliza\u00e7\u00e3o e explicar como podes gerir v\u00e1rios projetos de forma segura numa \u00fanica conta.<\/p>\n\n<h2>Pontos centrais<\/h2>\n\n<ul>\n  <li><strong>Isolamento do site<\/strong>: A separa\u00e7\u00e3o adicional no \u00e2mbito de uma conta reduz os riscos colaterais.<\/li>\n  <li><strong>CloudLinux<\/strong>: Alargamento do conceito CageFS ao n\u00edvel do dom\u00ednio.<\/li>\n  <li><strong>WordPress<\/strong>: Executar v\u00e1rias inst\u00e2ncias em paralelo de forma segura.<\/li>\n  <li><strong>Recursos<\/strong>: Os limites para CPU\/RAM\/E\/S complementam a separa\u00e7\u00e3o da visualiza\u00e7\u00e3o de ficheiros.<\/li>\n  <li><strong>Pr\u00e1tica<\/strong>: Ativa\u00e7\u00e3o por dom\u00ednio e uma estrat\u00e9gia clara em termos de direitos e percursos.<\/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>O que o \u201ePer-Site CageFS\u201c faz, concretamente<\/h2>\n\n<p>A extens\u00e3o isola cada um <strong>Dom\u00ednios<\/strong> dentro de um CageFS de utilizador j\u00e1 existente, para que cada site veja apenas os seus pr\u00f3prios ficheiros e processos. Desta forma, evito que um projeto comprometido aceda a ficheiros de configura\u00e7\u00e3o, ficheiros carregados ou chaves de outros sites na mesma conta. De acordo com <strong>CloudLinux<\/strong> O blogue (an\u00fancio da vers\u00e3o beta) explica que o CageFS por site refor\u00e7a o isolamento entre sites dentro da mesma conta de utilizador, reduzindo assim o risco de contamina\u00e7\u00e3o cruzada. Para mim, a vantagem \u00e9 evidente: consigo segmentar de forma clara as contas da ag\u00eancia, as configura\u00e7\u00f5es multisite e os ambientes de teste, sem alterar a estrutura de alojamento. Esta explica\u00e7\u00e3o fornece uma vis\u00e3o geral r\u00e1pida do princ\u00edpio do CageFS: <a href=\"https:\/\/webhosting.de\/pt\/cloudlinux-cagefs-sistema-de-ficheiros-isolamento-seguranca-hostingshield\/\">Sistema de ficheiros CageFS<\/a>, no qual se baseia o isolamento por local.<\/p>\n\n<h2>Por que raz\u00e3o o isolamento de contas, por si s\u00f3, n\u00e3o \u00e9 suficiente<\/h2>\n\n<p>Uma conta re\u00fane frequentemente v\u00e1rias <strong>Projectos<\/strong> \u2013 cerca de duas lojas, tr\u00eas blogs e um ambiente de teste. Se um exploit atacar um plugin vulner\u00e1vel, um atacante pode, sem segmenta\u00e7\u00e3o adicional, aceder a diret\u00f3rios adjacentes e colocar a\u00ed mais cargas maliciosas. \u00c9 precisamente aqui que o Per-Site CageFS restringe o acesso ao sistema de ficheiros e aos processos de tal forma que cada site funciona como se estivesse numa <strong>Pris\u00e3o<\/strong> funciona. Especialmente no caso de inst\u00e2ncias separadas do WordPress com um utilizador PHP comum, isso criaria, de outra forma, uma possibilidade de escaladas, que eu elimino com o isolamento de dom\u00ednios. Isso reduz os danos consequentes, simplifica a an\u00e1lise forense e permite planear as recupera\u00e7\u00f5es mais rapidamente.<\/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>Eis como funciona, do ponto de vista t\u00e9cnico, o isolamento do site<\/h2>\n\n<p>O CloudLinux encapsula, atrav\u00e9s do CageFS, um ambiente virtual por utilizador <strong>sistema de ficheiros<\/strong>; a camada \u00abPer-Site\u00bb alarga isto aos limites do dom\u00ednio. Cada dom\u00ednio ativado recebe uma \u00e1rea de visibilidade separada dentro do CageFS do utilizador, incluindo percursos restritivos, diret\u00f3rios tempor\u00e1rios pr\u00f3prios e execu\u00e7\u00e3o de scripts isolada. Desta forma, ficheiros wp-config.php, pastas de upload ou ficheiros de chaves de terceiros desaparecem da perspetiva do site atacado. As tarefas cron, o PHP e, se for o caso, os comandos SSH acedem \u00e0s mesmas bibliotecas do sistema, mas apenas visualizam as \u00e1reas atribu\u00eddas <strong>Subconjuntos<\/strong> do sistema de ficheiros. De acordo com a documenta\u00e7\u00e3o, \u00e9 poss\u00edvel ativar ou desativar a separa\u00e7\u00e3o por dom\u00ednio, o que me proporciona um controlo muito preciso para as inst\u00e2ncias em produ\u00e7\u00e3o, de teste e de pr\u00e9-produ\u00e7\u00e3o.<\/p>\n\n<h2>Compara\u00e7\u00e3o: isolamento de contas, CageFS por site e contentores<\/h2>\n\n<p>Para fazer a escolha de forma estruturada, comparo tr\u00eas op\u00e7\u00f5es comuns <strong>Modelos<\/strong> em fun\u00e7\u00e3o do n\u00edvel de isolamento, do esfor\u00e7o envolvido e da compatibilidade. O isolamento de contas resolve a separa\u00e7\u00e3o entre clientes, mas deixa em aberto as fronteiras internas entre sites. O CageFS por site colmata essa lacuna, tanto do ponto de vista do sistema de ficheiros como dos processos. Os contentores criam limites r\u00edgidos, mas exigem frequentemente mais manuten\u00e7\u00e3o e ajustes. Esta an\u00e1lise fornece uma classifica\u00e7\u00e3o fundamentada do isolamento de processos <a href=\"https:\/\/webhosting.de\/pt\/processo-isolamento-alojamento-chroot-cagefs-contentores-jails-seguranca-comparacao\/\">Compara\u00e7\u00e3o entre Chroot, CageFS e Jails<\/a>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Abordagem<\/th>\n      <th>Separa\u00e7\u00e3o entre contas<\/th>\n      <th>Separa\u00e7\u00e3o entre sites na conta<\/th>\n      <th>Compatibilidade (PHP\/CGI\/SSH\/Cron)<\/th>\n      <th>Despesas de funcionamento<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Isolamento de contas (cl\u00e1ssico)<\/td>\n      <td><strong>Elevado<\/strong><\/td>\n      <td>Baixa<\/td>\n      <td>Muito bom<\/td>\n      <td>Baixa<\/td>\n    <\/tr>\n    <tr>\n      <td>CageFS por site<\/td>\n      <td><strong>Elevado<\/strong><\/td>\n      <td>M\u00e9dio a elevado<\/td>\n      <td>Muito bom<\/td>\n      <td>Baixo a m\u00e9dio<\/td>\n    <\/tr>\n    <tr>\n      <td>Contentores por local<\/td>\n      <td><strong>Muito elevado<\/strong><\/td>\n      <td>Muito elevado<\/td>\n      <td>Bom a muito bom<\/td>\n      <td>M\u00e9dio a elevado<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Em ambientes de alojamento partilhado, o CageFS por site oferece uma combina\u00e7\u00e3o eficaz de controlo preciso <strong>Separa\u00e7\u00e3o<\/strong> e com poucas altera\u00e7\u00f5es, uma vez que os scripts, em regra geral, continuam a funcionar sem altera\u00e7\u00f5es. Desta forma, protejo o ponto fraco mais comum: v\u00e1rios sites independentes sob uma \u00fanica conta de utilizador.<\/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>Na pr\u00e1tica: gerir v\u00e1rias inst\u00e2ncias do WordPress de forma segura<\/h2>\n\n<p>Separo cada inst\u00e2ncia do WordPress com a fun\u00e7\u00e3o ativada <strong>Isolamento de dom\u00ednios<\/strong> e defino conjuntos pr\u00f3prios de PHP-FPM para cada site, para que os registos, o opcache e os limites possam ser atribu\u00eddos de forma clara. Al\u00e9m disso, defino SALTs\/KEYS pr\u00f3prios para cada site no ficheiro wp-config.php e impedo qualquer acesso cruzado atrav\u00e9s de direitos de ficheiro e equivalentes ao open_basedir. Guardo os ficheiros carregados estritamente dentro da respetiva raiz de documentos e pro\u00edbo diret\u00f3rios globais de carregamento partilhados. Durante as implementa\u00e7\u00f5es, mantenho os caminhos tempor\u00e1rios dentro do pr\u00f3prio site e elimino imediatamente os artefactos de compila\u00e7\u00e3o, para que n\u00e3o fiquem pontos de vulnerabilidade desnecess\u00e1rios. Para as caches do Composer ou do NPM, utilizo caches locais do site <strong>Diret\u00f3rios<\/strong>, para que n\u00e3o surjam efeitos colaterais.<\/p>\n\n<h2>Desempenho e gest\u00e3o de recursos em sinergia<\/h2>\n\n<p>O CageFS por site trata da visualiza\u00e7\u00e3o dos ficheiros; o <strong>Desempenho<\/strong> Asseguro-me de que existem limites para a CPU, a RAM, as E\/S e os processos, tanto ao n\u00edvel da conta como do pool. Desta forma, evito que um site gere demasiada carga devido a plugins defeituosos e abrande toda a conta. Em muitas configura\u00e7\u00f5es, isto est\u00e1 integrado em quotas LVE ou semelhantes, que ajusto com precis\u00e3o por pool ou conta. Associo isto \u00e0 limita\u00e7\u00e3o de pedidos no servidor web ou no WAF, para que os picos de tr\u00e1fego sejam geridos de forma ordenada. Esta combina\u00e7\u00e3o de isolamento e quotas aumenta a seguran\u00e7a dos servi\u00e7os e a previsibilidade <strong>Distribui\u00e7\u00e3o da carga<\/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>Cadeia de prote\u00e7\u00e3o: O que o CageFS por site n\u00e3o substitui<\/h2>\n\n<p>O isolamento impede vis\u00f5es transversais, mas considero as atualiza\u00e7\u00f5es, <strong>Endurecimento<\/strong> continua a aplicar de forma rigorosa as diretrizes relativas ao PHP e \u00e0s palavras-passe seguras. A autentica\u00e7\u00e3o multifator (MFA) para in\u00edcios de sess\u00e3o de administrador, os direitos m\u00ednimos sobre ficheiros e os filtros de upload continuam a ser obrigat\u00f3rios. Um WAF, limites de taxa e registo cont\u00ednuo cobrem vias adicionais que a simples separa\u00e7\u00e3o de acesso a ficheiros n\u00e3o controla. Al\u00e9m disso, verifico regularmente as tarefas Cron e os tokens de integra\u00e7\u00e3o, que os atacantes muitas vezes se esquecem de remover. Para saber mais sobre a intera\u00e7\u00e3o entre a separa\u00e7\u00e3o de clientes e o refor\u00e7o de seguran\u00e7a, consulte este guia sobre <a href=\"https:\/\/webhosting.de\/pt\/alojamento-partilhado-seguranca-isolamento-do-inquilino-serverguard\/\">Seguran\u00e7a do alojamento partilhado<\/a>, que sublinha essa linha de pensamento.<\/p>\n\n<h2>Implementa\u00e7\u00e3o e obst\u00e1culos t\u00edpicos<\/h2>\n\n<p>Ativo o isolamento de dom\u00ednios de forma espec\u00edfica para cada <strong>website<\/strong> e, em seguida, testo os acessos via SSH, Cron e PHP em condi\u00e7\u00f5es reais. Os caminhos absolutos nos scripts de implementa\u00e7\u00e3o ou nos plugins podem causar problemas, por isso opto por caminhos relativos ou vari\u00e1veis. Evito liga\u00e7\u00f5es simb\u00f3licas entre projetos, porque enfraquecem o princ\u00edpio de segrega\u00e7\u00e3o; prefiro adicionar as bibliotecas necess\u00e1rias ao reposit\u00f3rio de cada site. Para as c\u00f3pias de seguran\u00e7a, defino arquivos separados e guardo os registos por dom\u00ednio, para que a recupera\u00e7\u00e3o e a an\u00e1lise forense se mantenham organizadas. No que diz respeito aos direitos de acesso, os valores 640 para ficheiros e 750 para pastas t\u00eam-se revelado eficazes, al\u00e9m de <strong>Propriet\u00e1rio<\/strong> adequado ao respetivo pool de PHP.<\/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>An\u00e1lise custo-benef\u00edcio para ag\u00eancias e freelancers<\/h2>\n\n<p>Calculo o ganho em termos de seguran\u00e7a em rela\u00e7\u00e3o ao tempo de gest\u00e3o e aos potenciais custos de inatividade que um incidente transversal provocaria, tendo em conta <strong>Euro<\/strong>-Base. Muitas vezes, apenas algumas horas de resposta a incidentes custam significativamente mais do que um pequeno custo adicional mensal para um melhor isolamento. Para contas de ag\u00eancias com v\u00e1rios projetos de clientes, a segmenta\u00e7\u00e3o reduz sensivelmente o risco de responsabilidade civil e de reputa\u00e7\u00e3o. Al\u00e9m disso, os processos de c\u00f3pia de seguran\u00e7a e restaura\u00e7\u00e3o decorrem de forma mais organizada, uma vez que posso restaurar sites individuais com precis\u00e3o. No geral, o CageFS \u00abpor site\u00bb contribui para uma maior fiabilidade <strong>Gest\u00e3o operacional<\/strong> com processos previs\u00edveis.<\/p>\n\n<h2>Lista de verifica\u00e7\u00e3o: Quando o CageFS por site se torna obrigat\u00f3rio<\/h2>\n\n<p>Ativo o isolamento de dom\u00ednios assim que houver v\u00e1rios <strong>Instala\u00e7\u00f5es<\/strong> funcionam numa \u00fanica conta e t\u00eam ciclos de atualiza\u00e7\u00e3o diferentes. Outro aspeto importante: equipas de projeto separadas ou acessos de administrador externos, que aumentam o risco de interven\u00e7\u00f5es n\u00e3o intencionais. Os elevados volumes de upload, os conversores de ficheiros ou o processamento de imagens justificam ainda mais a separa\u00e7\u00e3o, uma vez que \u00e9 aqui que muitas vezes surgem pontos de vulnerabilidade. Requisitos de conformidade diferentes (por exemplo, clientes, mercados, prote\u00e7\u00e3o de dados) tamb\u00e9m apontam para segmentos mais espec\u00edficos. Quem opera os ambientes de prepara\u00e7\u00e3o, teste e produ\u00e7\u00e3o em paralelo beneficia de dom\u00ednios de erros claramente separados e de uma <strong>Forense<\/strong>.<\/p>\n\n<h2>Requisitos e compatibilidade na pr\u00e1tica<\/h2>\n\n<p>Antes de colocar o Per-Site CageFS em produ\u00e7\u00e3o, verifico o ambiente de execu\u00e7\u00e3o: o handler PHP utilizado (por exemplo, PHP-FPM, lsapi), o servidor web ativo, a integra\u00e7\u00e3o dispon\u00edvel com o painel de controlo e a forma como as tarefas Cron e as sess\u00f5es SSH s\u00e3o geridas. Em ambientes partilhados t\u00edpicos, as aplica\u00e7\u00f5es continuam a funcionar sem altera\u00e7\u00f5es no c\u00f3digo. Certifico-me de que existe uma raiz de documentos pr\u00f3pria para cada dom\u00ednio, que os caminhos s\u00e3o \u00fanicos (por exemplo, \/home\/user\/sites\/projeto-a\/public) e que cada site disp\u00f5e de um pool dedicado de PHP-FPM. Para as tarefas Cron, utilizo crontabs pr\u00f3prias por dom\u00ednio ou \u2014 quando o painel as agrupa \u2014 prefixos e caminhos de registo claros, para que as tarefas permane\u00e7am dentro do seu <strong>Pris\u00f5es<\/strong> trabalho.<\/p>\n\n<h2>Separar claramente bases de dados, caches e sess\u00f5es<\/h2>\n\n<p>A visualiza\u00e7\u00e3o dos ficheiros \u00e9 apenas uma parte. Estendo essa separa\u00e7\u00e3o at\u00e9 \u00e0 base de dados e aos caches. Por cada site, crio uma base de dados pr\u00f3pria e um utilizador de base de dados pr\u00f3prio com direitos m\u00ednimos. Para caches de objetos ou de p\u00e1ginas (por exemplo, Redis, Memcached), utilizo inst\u00e2ncias separadas por site ou, pelo menos, prefixos de chave e bases de dados\/espa\u00e7os de nomes dedicados. As sess\u00f5es PHP s\u00e3o armazenadas em caminhos pr\u00f3prios de cada site; defino o `session.save_path` separadamente para cada pool do FPM. Se utilizar uma fila central ou um backend de pesquisa, separo os \u00edndices e os t\u00f3picos por site. Este princ\u00edpio de \u201esepara\u00e7\u00e3o at\u00e9 ao \u00faltimo quil\u00f3metro\u201c impede que os incidentes se propaguem atrav\u00e9s de sistemas secund\u00e1rios.<\/p>\n\n<h2>CI\/CD e implementa\u00e7\u00f5es em isolamento<\/h2>\n\n<p>Nas pipelines de compila\u00e7\u00e3o, fa\u00e7o do isolamento a regra: existe uma tarefa de implementa\u00e7\u00e3o espec\u00edfica para cada site, que acede apenas ao diret\u00f3rio do site. Descompacto os artefactos na raiz do dom\u00ednio, executo em seguida as corre\u00e7\u00f5es de propriet\u00e1rio\/grupo e invalido exclusivamente as caches afetadas. Os comandos WP-CLI s\u00e3o executados no respetivo contexto CageFS, para que n\u00e3o afetem projetos externos. Mantenho as vari\u00e1veis de ambiente separadas por site; os segredos permanecem nos ficheiros de configura\u00e7\u00e3o pr\u00f3prios de cada site ou no armazenamento de segredos do painel. Para garantir um tempo de inatividade zero, utilizo trocas at\u00f3micas de liga\u00e7\u00f5es simb\u00f3licas dentro dos limites do dom\u00ednio (por exemplo, current\/releases), mas tenho o cuidado de garantir que as liga\u00e7\u00f5es simb\u00f3licas n\u00e3o apontem para projetos vizinhos. As verifica\u00e7\u00f5es p\u00f3s-implanta\u00e7\u00e3o (estado de funcionamento, verifica\u00e7\u00e3o de erros 404\/500, verifica\u00e7\u00e3o de direitos) s\u00e3o obrigat\u00f3rias para cada site.<\/p>\n\n<h2>Monitoriza\u00e7\u00e3o, registo e an\u00e1lise forense<\/h2>\n\n<p>Separo os registos de forma sistem\u00e1tica: registos de acesso\/erro por dom\u00ednio, registos pr\u00f3prios de PHP e Cron, incluindo rota\u00e7\u00f5es e per\u00edodos de reten\u00e7\u00e3o. Em caso de incidente, consigo assim reconstruir a cronologia de um \u00fanico site, sem ter de vasculhar toda a conta. Al\u00e9m disso, recorro a verifica\u00e7\u00f5es de integridade de ficheiros (somas de verifica\u00e7\u00e3o de diret\u00f3rios principais), registos de auditoria distribu\u00eddos para a\u00e7\u00f5es administrativas e ficheiros \u00abcanary\u00bb simples, que detetam manipula\u00e7\u00f5es numa fase precoce. Para os alertas, muitas vezes bastam valores-limite: aumentos repentinos nos erros 500, tamanhos de upload invulgares, ocupa\u00e7\u00e3o de inodes em forte crescimento ou arranques excessivos de workers PHP. Associo estes sinais a manuais de interven\u00e7\u00e3o claros: bloquear o site, verificar as c\u00f3pias de seguran\u00e7a, salvaguardar os artefactos e reiniciar num \u00e2mbito isolado.<\/p>\n\n<h2>Casos especiais do WordPress: Multisite, plugins MU e fluxos de upload<\/h2>\n\n<p>No caso do WordPress Multisite, tenho de ponderar: uma instala\u00e7\u00e3o Multisite beneficia menos do CageFS por site, uma vez que v\u00e1rios sites partilham deliberadamente uma base de c\u00f3digo e uma estrutura. Se precisar de limites mais rigorosos (equipas independentes, caches separadas, an\u00e1lise forense clara), prefiro configurar inst\u00e2ncias individuais e isol\u00e1-las. Distribuo plugins MU, drop-ins ou bibliotecas globais \u00abMust-Use\u00bb apenas internamente no site e evito pastas partilhadas. Os fluxos de trabalho de multim\u00e9dia (CDN, otimiza\u00e7\u00e3o de imagens, conversores) decorrem dentro da \u00abjaula\u00bb do dom\u00ednio; excluo os uploads de um site para diret\u00f3rios de outro. Se uma equipa pretender partilhar pipelines de ativos, replico-os por site ou encapsulo-os num pacote que \u00e9 integrado no respetivo reposit\u00f3rio.<\/p>\n\n<h2>Percurso de migra\u00e7\u00e3o: do sistema monol\u00edtico \u00e0 conta segmentada<\/h2>\n\n<p>Muitas contas come\u00e7am com uma pasta `public_html` grande e v\u00e3o crescendo ao longo do tempo. Eu sigo cinco passos: 1) Fazer um invent\u00e1rio: que sites, dom\u00ednios, tarefas cron, bases de dados e chaves secretas existem? 2) Definir a estrutura de caminhos: para cada site, uma pasta raiz, tempor\u00e1ria, de registos e de c\u00f3pias de seguran\u00e7a pr\u00f3prias. 3) Definir os pools do PHP-FPM por dom\u00ednio e estabelecer limites. 4) Mover ficheiros, ajustar direitos de acesso, limpar caminhos absolutos e inclus\u00f5es. 5) Ativar o CageFS por site, realizar testes sob carga e ativar a monitoriza\u00e7\u00e3o. Entretanto, mantenho uma estrat\u00e9gia de revers\u00e3o pronta (instant\u00e2neos, c\u00f3pias de seguran\u00e7a separadas). Ap\u00f3s a transi\u00e7\u00e3o, verifico se ferramentas como o WP-CLI, o Composer, os processos de imagens e as tarefas Cron est\u00e3o a funcionar no \u00e2mbito correto e, se necess\u00e1rio, ajusto as vari\u00e1veis de caminho.<\/p>\n\n<h2>Imagens de erros e resolu\u00e7\u00e3o de problemas<\/h2>\n\n<ul>\n  <li>Erros 403\/404 ap\u00f3s a ativa\u00e7\u00e3o: na maioria das vezes, as regras de reescrita ou as inclus\u00f5es remetem para caminhos fora da raiz do dom\u00ednio. Corrijo os caminhos para variantes relativas ou utilizo vari\u00e1veis.<\/li>\n  <li>O Composer\/NPM falha: as caches globais n\u00e3o s\u00e3o vis\u00edveis. Defino diret\u00f3rios de cache locais ao site e ajusto as vari\u00e1veis HOME\/TMP na implementa\u00e7\u00e3o.<\/li>\n  <li>O WP-CLI n\u00e3o encontra o ficheiro wp-config.php: a execu\u00e7\u00e3o n\u00e3o est\u00e1 na raiz do dom\u00ednio. Defino o diret\u00f3rio de trabalho corretamente ou indico o caminho explicitamente.<\/li>\n  <li>Cronjobs inativos: os utilizadores Cron ou os caminhos n\u00e3o est\u00e3o definidos por dom\u00ednio. Verifico as vari\u00e1veis de ambiente, os caminhos dos ficheiros bin\u00e1rios e os destinos dos registos dentro do \u00abSite-Jail\u00bb.<\/li>\n  <li>Falhas nos uploads: session.save_path ou tmp_dir apontam para o diret\u00f3rio errado. Atribuo caminhos tempor\u00e1rios locais ao site para cada pool do FPM.<\/li>\n  <li>Falta uma biblioteca partilhada: a liga\u00e7\u00e3o simb\u00f3lica para o projeto vizinho est\u00e1 bloqueada. Replico a biblioteca em cada site ou integro-a como um pacote na implementa\u00e7\u00e3o.<\/li>\n<\/ul>\n\n<h2>Governan\u00e7a e modelo de acesso<\/h2>\n\n<p>Mesmo que, do ponto de vista t\u00e9cnico, tudo esteja separado, a quest\u00e3o dos acessos mant\u00e9m-se. Atribuo acessos SSH\/SFTP dedicados a cada site ou restrinjo os acessos ao painel ao dom\u00ednio em quest\u00e3o. As equipas de programadores e das ag\u00eancias recebem apenas as chaves e as autoriza\u00e7\u00f5es de que realmente necessitam. Para situa\u00e7\u00f5es de emerg\u00eancia, disponho de um processo de \u00abbreak-glass\u00bb (direitos temporariamente alargados, registo completo, revoga\u00e7\u00e3o posterior). Nas auditorias, documento, por site: caminhos, pools, limites, respons\u00e1veis, atribui\u00e7\u00f5es RBAC e c\u00f3pias de seguran\u00e7a. Desta forma, a segmenta\u00e7\u00e3o mant\u00e9m-se robusta n\u00e3o s\u00f3 do ponto de vista t\u00e9cnico, mas tamb\u00e9m organizacional.<\/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>Brevemente resumido<\/h2>\n\n<p>O CageFS por site complementa a separa\u00e7\u00e3o de utilizadores existente com uma <strong>website<\/strong>-n\u00edvel, reduzindo assim eficazmente o risco de movimentos laterais. Considero que esta \u00e9 uma medida pr\u00e1tica, uma vez que muitas contas agrupam v\u00e1rios projetos independentes. A combina\u00e7\u00e3o entre a separa\u00e7\u00e3o da visualiza\u00e7\u00e3o de ficheiros e os limites de recursos traz ordem ao desempenho, \u00e0 seguran\u00e7a e ao funcionamento. Quem hospeda v\u00e1rias inst\u00e2ncias do WordPress ou de lojas online ganha tempo na dete\u00e7\u00e3o de erros, nas c\u00f3pias de seguran\u00e7a e na recupera\u00e7\u00e3o ap\u00f3s incidentes. Com direitos claros, atualiza\u00e7\u00f5es, autentica\u00e7\u00e3o multifator (MFA) e registo de atividades, cria-se uma estrutura sustent\u00e1vel <strong>Corrente de seguran\u00e7a<\/strong>, o que torna o alojamento partilhado significativamente mais robusto.<\/p>","protected":false},"excerpt":{"rendered":"<p>O CageFS por site refor\u00e7a a seguran\u00e7a na hospedagem partilhada com os isolados do CloudLinux e um isolamento claro dos sites dentro de uma conta.<\/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":"108","_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\/pt\/wp-json\/wp\/v2\/posts\/20468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/comments?post=20468"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/20468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/20461"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=20468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=20468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=20468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}