Visão geral:
Eu tenho uma dúzia ou mais de instalações WP hospedadas em um Ubuntu 14.04 LTS, com PHP 5.5.9 & Nginx 1.4.6. O MySQL é executado no nó alternativo, não na rede pública.
Meta:
Para ter diretórios & os arquivos de cada instalação do WP NÃO podem ser lidos pelo mundo. Se um usuário mal-intencionado obtiver acesso a uma determinada instalação do WP, não será possível navegar para uma instalação alternativa do WP e ler credenciais de banco de dados.
Detalhes:
O Nginx é executado como www-data. Um usuário, sem shell, é criado para cada vhost. Cada vhost suporta uma única instalação do WP. Os conjuntos PHP-FPM são executados especificamente para cada usuário / vhost. Conjuntos PHP-FPM conectam w / Nginx via socks, não o IP de loopback.
Lendo o seguinte artigo Wordfence , tentei definir o arquivo permissões da seguinte forma:
Arquivos - 640
Diretórios - 750
Quando configuro permissões desse tipo, o Nginx, executado como www-data, não pode mais acessar corretamente os arquivos WP. Se eu definir permissões de volta para 644 & 755 , tudo funciona conforme esperado.
Os sites são instalados na seguinte estrutura:
/var/www/site1.com/public
/var/www/site2.com/public
/var/www/site3.com/public
e assim por diante.
Cada diretório é de propriedade do usuário correspondente & grupo de usuários. ie:
site1-com: site1-com /var/www/site1.com
Tivemos um site do WP sendo invadido e eles puderam obter um script de gerenciador de arquivos php no servidor. Meu entendimento é que esse script está sendo executado pelo usuário www-data. (Verificado com ps aux
) Se isso for verdade, suspeito que o usuário mal-intencionado possa acessar todas as outras instalações do WP por meio de seu script de gerenciador de arquivos php.
Como posso melhorar minha configuração de permissão para proteger a segurança? Estou aberto a todas as sugestões, mesmo que isso signifique reconfigurar toda a instalação da pilha.
Obrigado antecipadamente.
Tags php nginx virtualhost php5 php-fpm