...

CloudLinux SecureLinks: Proteção contra ataques de links simbólicos na hospedagem partilhada

O CloudLinux SecureLinks interrompe Ligação simbólica- Ataques em servidores partilhados, ao seguir ligações simbólicas inseguras em Kernel-nível. Desta forma, protejo os ficheiros sensíveis, uma vez que os processos só podem seguir ligações se o proprietário da ligação e do ficheiro de destino forem os mesmos.

Pontos centrais

  • Proteção do kernel bloqueia o seguimento de links entre utilizadores externos.
  • Exame de Proprietário associa de forma rígida o link simbólico ao ficheiro de destino.
  • Bloqueios de ligações físicas Impedir a inclusão de ligações para ficheiros externos.
  • Alojamento partilhado mantém-se isolado e resistente.
  • Simples Ativação através de parâmetros Sysctl.

O que torna os ataques de links simbólicos na hospedagem partilhada tão perigosos

Um ataque de ligação simbólica obriga Serviços como o Apache, o PHP-FPM ou o gestor de ficheiros, abrir um ficheiro externo através de um link simbólico, o que resulta em Contas que revelam informações de forma generalizada. Em ambientes mistos com muitas contas, vejo frequentemente estruturas de diretórios complexas, o que faz com que direitos de acesso incorretos revelem rapidamente dados críticos. Os atacantes colocam então links para ficheiros de configuração, dados de acesso ou artefactos temporários de outros utilizadores. Sem proteção, os processos seguem o caminho manipulado e acedem a conteúdos que nunca deveriam ver. É precisamente esta lacuna que uma verificação rigorosa de links colmata, permitindo-me reduzir significativamente o risco de fuga de dados e de comprometimento indesejado de contas.

Como funciona o CloudLinux SecureLinks ao nível do kernel

O SecureLinks verifica se sistema de ficheiros- Verifica se o proprietário de um link simbólico corresponde ao ficheiro de destino e recusa o acesso caso a atribuição seja diferente, o que me impede de Caminhos bloqueio fiável. Esta abordagem é mais profunda do que os filtros de aplicações e dificulta os truques executados através de PHP, WebDAV ou clientes FTP. Mesmo que uma aplicação web apresente falhas, o kernel mantém o controlo sobre o seguimento de links. Aproveito esta vantagem sobretudo em servidores partilhados com elevada carga, nos quais muitas instâncias funcionam em paralelo. Para uma análise mais aprofundada, remeto para um visão geral detalhada, que descreve a lógica central e os limites de proteção.

Requisitos de sistema e compatibilidade

Na prática, o que mais conta para mim é o grau de compatibilidade do SecureLinks com as configurações mais comuns. Nas versões modernas do CloudLinux, o mecanismo funciona de forma estável com ext4 e XFS; em ambientes mistos com sistemas de ficheiros em rede (por exemplo, NFS), faço testes particularmente exaustivos, porque os sistemas de ficheiros remotos apresentam semânticas de propriedade diferentes, dependendo das opções de exportação. Camadas de virtualização como o KVM ou o VMware não são críticas, uma vez que a proteção no sistema convidado atua ao nível do kernel. Importante: kernels mais antigos podem nomear de forma diferente os parafusos de ligação protegidos ou não os suportar na totalidade. Por isso, verifico atempadamente se os parâmetros pretendidos estão disponíveis e se todos os serviços afetados (servidor Web, PHP-FPM, Cron, scanner) funcionam em caminhos locais ou têm limites claramente definidos através de opções de montagem.

Delimitação e interação com outras medidas de proteção

O SecureLinks não é concorrente de mecanismos como SELinux ou AppArmor, mas complementa-as. Enquanto as políticas MAC restringem o acesso com base no contexto, o SecureLinks impede especificamente que se aceda a links „externos“. Ao nível do servidor Web, implemento ainda SymLinksIfOwnerMatch e desativar FollowSymLinks em qualquer lugar onde seja adequado. Estas políticas de aplicação já bloqueiam muitos ataques, mas dependem da configuração correta da aplicação. A verificação do kernel, por outro lado, permanece independente das regras do vHost ou do .htaccess. Em suma, resulta numa cadeia robusta: o CageFS isola os diretórios, o SecureLinks bloqueia o uso indevido de ligações, o servidor Web impõe resoluções de caminho corretas e o SELinux/AppArmor mantêm os processos dentro dos seus limites.

Parâmetros importantes do kernel e valores predefinidos recomendados

Para a aplicação prática, utilizo Sysctl-Opções que regulam a verificação de propriedade e a criação de links, o que me permite Erros de acesso impedir a nível do sistema. São particularmente relevantes os parâmetros fs.enforce_symlinksifowner e fs.symlinkown_gid para a aplicação rigorosa da correspondência de proprietários. Além disso, limito a criação de ligações físicas e simbólicas através de opções «protected» específicas. Esta combinação bloqueia as vias de ataque típicas numa fase inicial do tratamento de percursos. A visão geral seguinte apresenta os parâmetros mais comuns e o seu efeito no dia a dia.

Parâmetros Objetivo Valor típico Efeito
fs.enforce_symlinksifowner Forçar a verificação do proprietário ao seguir ligações simbólicas 1 O processo só pode rastrear links se o proprietário do link e o do destino forem os mesmos
fs.symlinkown_gid Definir o GID que controla o comportamento estrito típico: GID do servidor web Limita os grupos aos quais se aplica a verificação rigorosa
fs.protected_symlinks_create Impedir a criação de ligações simbólicas por terceiros 1 Os utilizadores sem privilégios não criam ligações simbólicas para ficheiros de outros proprietários
fs.protected_hardlinks_create Bloquear a criação de ligações físicas por terceiros 1 As soluções alternativas baseadas em ligações físicas são bloqueadas

Na prática: percursos padrão e sessões seguras

Muitas fugas ocorrem em pastas partilhadas. Por isso, separo session.save_path, upload_tmp_dir e diretórios de trabalho temporários por conta. Defino os locais graváveis globalmente como «estrito» com o bit Sticky (chmod 1777) e, se possível, monte-as com nosuid, nodev, noexec, para que, mesmo em caso de utilização incorreta, nenhum código seja executado. Aplicações que utilizam ligações simbólicas para versões (por exemplo, um current -> lançamentos/xyz), continuam a funcionar, desde que o link e o destino pertençam ao mesmo proprietário. Por outro lado, os diretórios de equipa, nos quais vários utilizadores escrevem por meio de um grupo, representam um problema; neste caso, pretendo utilizar GIDs dedicados e esclarecer para qual GID o SecureLinks efetua uma verificação rigorosa. Desta forma, evito que fluxos de trabalho legítimos falhem na verificação do proprietário, sem comprometer a segurança.

Passo a passo: ativação e testes

Na prática, introduzo os parâmetros em Sysctl-Defina as configurações, carregue-as com o comando `sysctl -p` e verifique imediatamente o Registo-Comportamento em acessos de teste. Uma verificação rápida: dois utilizadores, um ficheiro de teste na conta de destino, um link simbólico na conta do atacante – a leitura tem de falhar. Paralelamente, verifico os workers do servidor web, os pools do PHP-FPM e o gestor de ficheiros para ver se ocorrem as recusas esperadas. Em caso de falsos alarmes, analiso as atribuições de GID e as identidades dos processos, pois grupos incorretos podem comprometer a correspondência. Só quando os testes forem reproduzíveis é que aplico a configuração de forma mais abrangente.

Estratégia de implementação e plano de contingência

Nunca ativo o „Big Bang“ do SecureLinks, mas sim de forma gradual: primeiro no Modo de auditoria (apenas análise de registos, se disponíveis) ou em ambientes de teste; posteriormente, em nós de produção selecionados, sob vigilância rigorosa. Em caso de irregularidades, posso, através de sysctl -w Ajustar as configurações em tempo real e, se necessário, revertê-las rapidamente. Paralelamente, documento os caminhos e GIDs afetados, para poder definir exceções de forma clara. A gestão de configuração (por exemplo, através do Ansible) garante que as predefinições idênticas sejam aplicadas em todos os locais e que se evitem desvios. Para as janelas de manutenção, planeio reinicializações curtas da aplicação, a fim de garantir a transição segura entre grupos nos processos de trabalho.

Interação com o CageFS e o Site-Isolation

O SecureLinks impede Uso indevido de links, enquanto o CageFS isola as pastas por conta, o que me permite ter várias Camadas Manter a segurança. Esta combinação reduz drasticamente os movimentos laterais em configurações com vários utilizadores. Aplico primeiro o isolamento e, em seguida, a proteção de ligações, para que ambos os níveis funcionem corretamente. Para mais detalhes sobre o encapsulamento do sistema de ficheiros, consulte a introdução sucinta sobre Isolamento do CageFS. Além disso, mantenho os direitos dos utilizadores e os handlers PHP o mais restritivos possível.

Erros de configuração típicos e como os evito

Os erros mais frequentes dizem respeito a Grupos-IDs, relações de propriedade pouco claras nas implementações e inconsistências Ligação simbólica-Alvos em scripts. Por isso, antes de ativar, verifico se o servidor Web e os pools de PHP estão a funcionar com os GIDs esperados. Os processos de compilação ou lançamento não devem criar ligações entre contas de utilizador. Além disso, verifico se os programas de cópia de segurança e os scanners de malware podem continuar a efetuar acessos legítimos. Um esquema de proprietários de ficheiros bem definido evita problemas posteriores na resolução de avarias.

Manual de resolução de problemas e comandos de diagnóstico

Quando algo não corre bem, conto com verificações que possam ser repetidas. Com namei -lx /caminho/para/o/link vejo toda a cadeia de liquidação, incluindo as relações de propriedade. stat fornece-me o proprietário e o modo do link e do destino. Através de ps -o utilizador,grupo,comando -p PID verifico sob que identidade um processo está efetivamente a ser executado; as discrepâncias entre os processos pai e os processos de trabalho são uma causa frequente de surpresas. Identifico as mensagens do kernel em dmesg ou no registo; as entradas «Deny» incluem normalmente o caminho e o UID/GID, o que facilita a correspondência com a conta. Para uma análise forense mais aprofundada, integro auditado e registe as chamadas de sistema relacionadas com os percursos em questão, para distinguir os falsos alarmes das tentativas reais de ataque.

Aspectos relacionados com o desempenho e a compatibilidade

O adicional Verificar Para o proprietário, isso implica apenas custos reduzidos, que, em comparação com o ganho em termos de segurança, são praticamente insignificantes para Reduzir o peso. Em configurações com elevado tráfego, observo latências baixas e estáveis. Continua a ser importante testar cargas de trabalho específicas que utilizam intencionalmente diretórios partilhados. Para uma distinção mais precisa, recorro a conceitos de host que separam ainda mais claramente as instâncias do site; o artigo sobre este tema reúne informações a este respeito Vantagens do isolamento de sites. Os problemas de compatibilidade surgem, na maioria das vezes, apenas devido a scripts antigos que dependem de links não seguros.

Monitorização, registo e resposta a incidentes

Após a implementação, vou associar Kernel-Registos com regras SIEM, para que as rejeições ao seguir links sejam imediatamente visíveis, o que Ataques que permite uma deteção rápida. Métricas úteis incluem os acessos a links rejeitados por conta, a frequência por processo e o intervalo de tempo. Valores atípicos indicam tentativas de exploração ou implementações com erros. Para a resposta, os manuais de procedimentos têm-se revelado eficazes: bloquear temporariamente a conta, salvaguardar os artefactos, analisar os percursos e corrigir as autorizações. Por fim, documento a causa e ajusto as configurações para que o padrão não volte a ocorrer.

Integração com o cPanel, o Plesk e as plataformas mais comuns

No dia-a-dia da hospedagem, os servidores Web, o PHP e os serviços auxiliares funcionam frequentemente com os seus próprios utilizadores de serviço (apache, nginx, lshttpd) e IDs de grupo. Eu defino o fs.symlinkown_gid de tal forma que o utilizador do servidor Web e os workers FPM dos clientes são abrangidos por esta verificação rigorosa. No caso do PHP-FPM por utilizador ou do LSAPI por conta, raramente surgem conflitos, uma vez que os workers funcionam, de qualquer forma, sob a respetiva conta do cliente. Mais críticos são os scanners globais, as cópias de segurança ou as caches (Composer, NPM) que escrevem de forma centralizada; neste caso, defino exceções de forma específica ou transfiro os artefactos para diretórios por conta. Em painéis como o cPanel ou o Plesk, verifico adicionalmente a escolha do handler PHP (suEXEC, FPM, LSAPI) e certifico-me de que nenhum handler „global“ possa ler arquivos alheios sem autorização.

Perguntas frequentes na prática

Muitos administradores perguntam se o SecureLinks todos Links simbólicos bloqueados – isso não está correto, pois os links partilhados dentro de um Contas continuam a funcionar. O essencial é que o proprietário do link e o do ficheiro coincidam. Outra questão frequente: basta o nível da aplicação? A minha resposta é um claro «não», porque as verificações do kernel impedem que se contornem as restrições através da lógica da Web ou de scripts. A combinação de isolamento, direitos mínimos e SecureLinks eleva significativamente o obstáculo para os atacantes.

Casos especiais e melhores práticas para equipas e implementações

Em equipas com repositórios e sistemas de compilação partilhados, certifico-me de que as versões sejam lançadas dentro dos limites da mesma conta. As estruturas de ligações simbólicas do tipo Capistrano não apresentam problemas, desde que permaneçam na posse de um único utilizador. Proíbo rigorosamente as ligações entre contas e substituo-as por interfaces bem definidas (API, HTTP, filas de mensagens). Para diretórios de trabalho em grupo, utilizo GIDs de projeto dedicados, claros umask-Defina os valores e verifique se a verificação rigorosa do SecureLinks deve ou não ser aplicada a estes GIDs. Desta forma, mantém-se o equilíbrio entre colaboração e segurança. No caso de armazenamento via NFS, seleciono opções de exportação que garantam a consistência do proprietário (sem mapeamentos anónimos para caminhos produtivos) e testo se as verificações de ligações funcionam conforme o esperado. Para cargas de trabalho em contentores, documento cuidadosamente os caminhos de montagem, para que não surjam atalhos indesejados entre inquilinos.

Avaliação e resumo

O CloudLinux SecureLinks fornece-me um claro Proteção contra o uso indevido de ligações simbólicas e ligações físicas, uma vez que é o kernel que toma a decisão final sobre os acessos aos caminhos e, assim, Formas de ataque bloqueadas de forma fiável. Em ambientes de alojamento partilhado com muitas contas, este controlo compensa imediatamente. Predefinições bem pensadas, estratégias claras de propriedade e testes garantem o bom funcionamento do dia-a-dia. Em conjunto com o CageFS, manipuladores PHP rigorosos e monitorização de registos, cria-se uma defesa em várias camadas que torna as falhas e as fugas de dados significativamente menos prováveis. Quem é responsável pela hospedagem deve, idealmente, considerar o SecureLinks como parte integrante da segurança de base, aumentando assim a confiança, a disponibilidade e a reputação de forma sustentável.

Artigos actuais

Infraestrutura técnica de servidores com foco na análise NUMA do Linux
Servidores e Máquinas Virtuais

Como interpretar corretamente as estatísticas NUMA do Linux

Analisar corretamente as estatísticas NUMA do Linux: compreender as estatísticas NUMA, verificar a localidade da memória e melhorar de forma específica o desempenho do servidor.