Configure o Centos7 Apache 2.4 php-fpm para executar como usuário

2

Eu gostaria de configurar um Linode Centos 7 Apache 2.4 para usar o php-fpm para executar o php como o proprietário do arquivo. Os documentos para o Centos6 / Apache2.2 anteriores não funcionam e as configurações que vi para configurar os servidores Lamp no Centos7 são executadas apenas como o usuário do apache. Existem bons tutoriais para fazer isso, ou alguém pode fornecer os arquivos de configuração e as diretivas de host virtual precisam fazer isso? Obrigado.

    
por Town Websites 31.03.2015 / 05:57

2 respostas

0

Uma auto-resposta parcialmente educada. O php-fpm, ao contrário do suphp, não permite a execução como o proprietário do script, mas permite configurar pools que especificam um usuário e um grupo para serem executados como.

No Centos 7 com o Apache 2.4, encontrei estas declarações em /etc/php-fpm.d como www.conf. Eu criei uma cópia desse arquivo e coloquei o nome de usuário de um dos hosts virtuais como usuário e grupo, e configurei a porta de escuta para 9001 em vez de 9000 (cada um requer uma porta exclusiva no soquete de localhost). Em seguida, em cada declaração de virtualhost, você especifica a mesma porta com uma linha como abaixo:

ProxyPassMatch ^/(..php(/.)?)$ fcgi://127.0.0.1:9001/home/dancenew/public_html/dneuser/$1

Observe que o ProxyPassMatch acima é vulnerável a explorações, consulte CAVEATS na documentação do Apache WIKI no link . Talvez alguém possa fornecer um guia claro sobre como evitar essa exploração em vez de deixá-la como um exercício para o implementador mal educado ... Lembro-me de exemplos NGINX tendo problemas semelhantes mesmo no que foi considerado código de exemplo sólido que foi copiado por muitos sites ...

    
por 01.04.2015 / 04:42
0

A solução que você propõe tem uma preocupação de segurança potencial adicional além da mencionada no artigo ao qual você vincula sua resposta ... devido à maneira como o OpCache (por padrão) compartilha um único cache entre todos os usuários em um ambiente de hospedagem compartilhada. Um bug foi enviado (e você pode, e deve, ir votar para informar aos mantenedores como importante, isso pode ser para o seu caso de uso), embora nenhum compromisso tenha sido feito na entrega de uma correção.

TL; DR: Por padrão, quando o OpCache está habilitado, o cache usado para armazenar códigos de bytes compilados é compartilhado entre todos os usuários. Em um ambiente onde a hospedagem é compartilhada entre vários sites / usuários, isso pode resultar em um site que captura a saída em cache do php scripts de outro site ou, se configurações de segurança específicas estiverem habilitadas, mesmo gerando erros .

If you plan on using PHP-FPM with PHP 5.5+'s built in opcache, please read the blog post below before you actually do that. Turns out that the opcode cache can be read by any user on the server. This means that if there are say, 10 separate users, with their own vhosts and directories, and you configure one PHP-FPM pool per user, each user can still see what scripts are cached and their locations. Since they have read access to the cache they could potentially view all this data.

This is obviously a massive security concern, and even if no one exploits this, there is still a chance of scripts being read by the wrong user when generating a page, so websites could possibly be displaying the wrong data / info if there are multiple index.php scripts in the cache.

Embora nenhuma correção tenha sido lançada oficialmente, se você estiver usando o cPanel, este wiki tem uma maneira documentada de configurar o php-fpm pools a serem criados e protegidos por usuário e se você seguir as instruções abaixo, bem como as OBSERVAÇÕES IMPORTANTES na parte inferior desta resposta, deve ser capaz de obter a funcionalidade que você deseja sem erros

Essa postagem também documenta como você pode configurar isso manualmente por site / por usuário (embora eu possa apostar que isso pode se tornar tedioso se você estiver hospedando muitos sites). Se você não estiver usando o cPanel, pode ser necessário modificar os scripts para especificar seus caminhos individuais e nomes de usuários, em vez das variáveis que estão sendo usadas pelo mecanismo de configuração do cPanel.

NOTAS IMPORTANTES

Durante os testes e pesquisas adicionais, deparei-me com este artigo, que fornece alguns esclarecimentos que podem ser relevantes para o seu caso específico. situação:

  1. É necessário certificar-se de que o parâmetro opcache.use_cwd esteja definido como true para a configuração do OpCache do seu aplicativo - ele é definido como false por padrão e deixá-lo definido como padrão provavelmente causará colisões se você estiver hospedando mais de uma aplicação PHP no seu sistema:

First of all, probably in each typical project you will have to ensure that the opcache.use_cwd option is set to true. Enabling this setting means that the OpCache engine will look at the full file paths to distinguish between files with the same names. Setting it to false will lead to collisions between files with the same base name.

  1. Se você estiver executando um aplicativo desenvolvido pelo Zend Framework ou outra estrutura semelhante que faça uso de anotações, você TAMBÉM precisará garantir que as diretivas opcache.load_comments e opcache.save_comments estejam definidas como true . Você deve verificar essa sugestão com sua documentação de aplicativo / estrutura, pois a maioria já atualizou seus documentos com instruções específicas sobre como ativar o uso do OpCache adequadamente para seus sistemas:

There is also a setting that is important in tools and frameworks that make use of annotations. If you use Doctrine, Zend Framework 2 or PHP Unit, remember to set the opcache.load_comments and opcache.save_comments settings to true. In result, the documentation comments from your files will also be included in the precompiled code generated by OpCache. This setting will allow you to work with annotations without any disruptions.

If your project is based on a specific framework or a web application, it’s always a good idea to check the documentation for any guidelines regarding the OpCache configuration

NOTAS IMPORTANTES

Espero que isso tenha ajudado - e se você estiver usando o cPanel, deixe um comentário para nos informar como você lidou com essa parte da configuração! Veja também esta questão e comentários associados .

    
por 15.07.2015 / 12:17