Configuração do servidor para evitar injeções de código

1

História anterior: Eu estava limpando o espaço da Web invadido em um host compartilhado outro dia e encontrei um script no diretório da Web que permite que o invasor injete código em todos os arquivos php e html no diretório da web. Ele tinha acesso a tudo no diretório da web, mas não tenho certeza de quais permissões de usuário o arquivo tinha.

Pergunta: Eu acho que seria difícil impedir que um script php em execução em um host compartilhado tenha acesso a outros arquivos da web (php, html, etc), devido à falta de opções de configuração do servidor. Existe uma maneira de configurar um servidor linux apache http (no qual você tem acesso root completo) para que, mesmo que o invasor pudesse fazer upload de um script como esse para o diretório da web, ele não teria acesso para modificar outros arquivos no diretório? servidor?

    
por JMC 13.09.2011 / 19:17

4 respostas

1

No mínimo, você deve:

  • Limite a quais diretórios acessíveis pela Web o usuário do servidor da Web tem permissão para gravar. (ou não de todo)
  • Não processe PHP, CGIs ou quaisquer outros scripts em diretórios nos quais o servidor da Web tenha permissão para gravar.

suPHP e similares não são tão úteis para esse tipo de problema, já que alterar o usuário com o qual os scripts PHP são executados freqüentemente lhes dá acesso para escrever em lugares que não deveriam ser ... a única maneira de contornar isso é gerenciar ainda mais usuários (um conjunto que o servidor da Web usa, um conjunto com permissão para atualizar arquivos), e você perde uma das principais vantagens de poder testar se a propriedade do arquivo está limpa antes de executar o script. / p>     

por 13.09.2011 / 19:32
0

Uma resposta curta é sim, claro. Assim que você tiver acesso root, poderá proteger seus arquivos de origem contra modificações feitas pelo usuário do Apache. Mas se o seu software depender de tais modificações (por exemplo, se um arquivo .php config for editável a partir do aplicativo da web), não será possível impedir que o usuário do Apache modifique seus arquivos de origem sem interromper seu aplicativo. projetado.

E aposto que o problema está na configuração do cliente FTP / SFTP, e não na configuração do servidor Apache de hospedagem compartilhada. Eu acho que seu PC foi trojan e um aplicativo de trojan carregou um código malicioso para sua conta usando suas credenciais do seu cliente FTP / SFTP. Isso é bastante comum nos dias de hoje.

    
por 13.09.2011 / 19:23
0

meu módulo favorito para compilar para permitir que o apache seja executado como um uid / gid per vhost diferente é itk.

link

É bem novo, então geralmente não é compilado por padrão. É mais rápido do que o suexec ou o phpsuexec. Você configura uma entrada vhost para executar como um determinado usuário. Então você pode chmodar a webroot de cada usuário para gostar de 700, de modo que apenas o usuário possa entrar lá.

Você pode então executar um módulo como o mod_security para ajudar a parar ataques de sql

    
por 13.09.2011 / 19:24
0

Instale algo como suphp. link

E, em seguida, verifique o servidor o tempo todo, para ter certeza de que nenhum de seus usuários faz algo bobo como chmod 777 em seus diretórios.

    
por 13.09.2011 / 19:28