Atualmente estou executando um proxy reverso Nginx na frente de um servidor Apache PHP no Ubuntu. Eu tenho um arquivo, log.txt
, no mesmo diretório que eu sirvo arquivos PHP para o meu site. PHP grava neste arquivo de log com atividade de API. Posso acessar o arquivo de log alterando o URL de lookup.php
para log.txt
ao visitar em um navegador da Web, o que é completamente inseguro. Eu só quero acessar o arquivo de log quando estou conectado ao SSH.
Mudei a propriedade do arquivo de log para www-data
, o grupo no qual o PHP está sendo executado atualmente. O que eu queria que acontecesse é que os arquivos PHP pudessem gravar nesse arquivo de log, mas não que os usuários pudessem navegar para o caminho do arquivo de log no navegador da Web e exibi-lo. Eu acho que o problema é que, como o Nginx também está sendo executado como www-data
, alterando o proprietário do arquivo de log para www-data
que o PHP possa escrever nele, o Nginx agora pode lê-lo.
Aqui estão algumas das ideias que eu estava pensando, mas não tenho certeza se elas têm grandes falhas de segurança:
Alterando o arquivo de log para ser somente gravação para o proprietário do arquivo,
www-data
. Eu estava fazendo uma pesquisa e isso parecia ser uma abordagem rara.Fazendo o PHP e o Nginx rodarem como grupos separados, dando ao PHP um acesso rwx e nenhum ao nginx.
Criando um novo diretório fora da raiz da web para que não haja uma URL da web associada ao arquivo, mas tendo o diretório de propriedade
www-data
(para PHP e Nginx). Eu não tinha certeza se isso tem vulnerabilidades.Proibindo o acesso ao arquivo de log através do Nginx. Isso parece um pouco "hacky" para mim.
Qual seria um caminho adequado a tomar?