Estratégias para proteger arquivos de configuração de aplicativos web de terceiros

2

Estou interessado em comentários e estratégias para proteger arquivos de configuração do PHP, particularmente aqueles com credenciais Db.

O conselho de ações, defina a extensão do arquivo como * .php, está bem, mas não protege contra ataques diretos de diretório. O cenário particular que estou considerando:

  1. Temos um servidor que hospeda uma variedade de aplicativos de terceiros.
  2. Não podemos examinar completamente todos os aplicativos
  3. Se um invasor comprometer um aplicativo, ele poderá usar esse aplicativo para ler arquivos de outros diretórios. Arquivos de configuração do banco de dados são um alvo óbvio.

Eu tenho uma solução, que parece ter mérito, mas não me sinto totalmente confortável com isso. Eu adoraria ouvir comentários sobre isso, assim como

  1. encontre o que o php_include está definido como
  2. coloque o arquivo de configuração nesse diretório
  3. certifique-se de que as instruções require / include que carregam a configuração não especifiquem o caminho físico (sem o comando ./ etc.)

OBJETIVOS

  • oculta completamente o arquivo de configuração de um aplicativo da Web irmã errante (e, mais importante, do próprio servidor da Web).

  • oculta a localização real do arquivo de configuração. Não pode ser facilmente determinado pela leitura do código. Isso se opõe a especificar um caminho fora da árvore da Web.

  • intervenção mínima, tanto em nível de servidor quanto em nível de aplicativo.

  • Evita codificar o caminho.

Isso não aborda conflitos de nome de arquivo de configuração, embora mais do que alguns aplicativos provavelmente valha a pena alterar o nome do arquivo de configuração de inclusão.

Infelizmente, muitos de nossos aplicativos da Web parecem exigir caminhos codificados.

Que abordagens outras pessoas têm?

    
por Joe Fortier 22.09.2011 / 22:34

1 resposta

0

O conselho padrão se aplica:

  • Coloque o arquivo de configuração acima da raiz da web
  • Use .htacess ou similar para negar acesso a essas pastas
  • Use permissões de arquivo para proteger pastas

Um conselho ainda melhor:

  • Assegure-se de que seu servidor de banco de dados possa ser acessado apenas por seu servidor da Web pelas ACLs de rede / firewall e por sua própria autenticação baseada em host
  • Não use senhas, use certificados / Kerberos / PKI (um breve google tem essa sugestão para implementar isso no MySQL )
  • Se você não confia em um aplicativo, execute-o em seu próprio servidor da web que não tem acesso a outros arquivos de aplicativos
  • Use um tripwire para detecção de intrusão

Ocultar os arquivos de configuração, como você sugere, parece inútil, uma vez que um invasor tenha o controle do seu sistema dessa forma, o jogo acaba de qualquer forma. Você está apenas tornando o seu próprio trabalho mais difícil de manter seus aplicativos da Web com mais dificuldade, com pouco ganho em segurança.

    
por 28.10.2011 / 14:34