Proteger ambientes PHP com PHP-FPM e SFTP

1

Eu gostaria de configurar ambientes seguros para um pequeno número de sites PHP não confiáveis em um servidor Debian. Agora mesmo tudo roda no mesmo Apache2 com mod_php5 e vsftpd para acesso a arquivos administrativos, então há espaço para melhorias.

A idéia é usar nginx ao invés de apache, SFTP através de OpenSSH ao invés de vsftpd e chrooted (em sshd_config), usuários individuais para cada site com seus próprios processos PHP. Todos esses usuários e nginx fazem parte do mesmo grupo.

Agora, em teoria, posso definir 700 permissões em todos os scripts PHP e 750 em arquivos estáticos que o nginx precisa exibir. Teoricamente, se um site for comprometido, todos os dados dos outros usuários estarão seguros, certo?

Existem soluções melhores que exigem menos tempo de configuração e memória por site?

Felicidades

    
por pdd 28.07.2011 / 17:01

2 respostas

1

Usando a diretiva chroot dentro da configuração do php-fpm, deve garantir segurança suficiente; então permitir que os usuários fiquem apenas dentro do ftp chroot (ou scp), seria suficiente com a configuração correta do Apache (não deixe links simbólicos enganá-lo!: P).
Então, ter tudo chrooted, deve ser o suficiente: você nem precisaria definir permissões nos arquivos, pois eles não seriam legíveis em outro ambiente chroot. :)
Outras soluções, fazendo com que você evite consumir memória é possível ... basta usar o cache com verniz ou algo semelhante (eu sei que não seria tão fácil de configurar para usuários não confiáveis btw).

    
por 30.06.2012 / 03:48
0
Levando em consideração sua configuração de tarefas desejada para o nginx, acabei de encontrar um ótimo script bash projetado para uso no Debian e no Ubuntu que automatiza a maioria dos as tarefas que precisam ser executadas para obter um cenário de configuração semelhante ao descrito por você.

O script bash automatiza a criação de novos hosts virtuais (blocos de servidores) no nginx e permite que você execute vários pools do PHP. O PHP-FPM processa todos os gerados a partir do master e para que cada pool seja executado como um usuário e / ou grupo diferente. Cada pool pode ser isolado ainda mais executando em um ambiente chroot e substituindo os valores padrão do php.ini por pool.

Confira no site do desenvolvedor:

link

O que mais o script faz:

  • Cria um novo usuário do sistema para o site
  • Cria um novo arquivo de configuração vhost para o nginx usando um modelo básico
  • Cria um novo conjunto PHP-FPM com o conjunto uid e gid com o do novo usuário do sistema
  • Cria um novo diretório para o site, dentro do novo diretório inicial de usuários
  • Recarrega o Nginx para permitir que o novo vhost seja detectado
  • Reinicia o PHP-FPM para gerar o novo pool de trabalhadores PHP

Espero que ajude você a otimizar seu tempo de configuração.

    
por 30.01.2014 / 10:29