Introdução
A configuração inadequada de permissões para scripts PHP pode permitir que usuários mal-intencionados executem código não autorizado, acessem arquivos sensíveis ou explorem vulnerabilidades do servidor. Para evitar esse risco, devemos restringir a execução de scripts PHP de maneira segura.
1. Definindo permissões adequadas para arquivos PHP
Certifique-se de que os arquivos PHP tenham permissões corretas, impedindo modificações indevidas:
find /var/www/html -type f -name "*.php" -exec chmod 640 {} \;
Isso define permissões para que apenas o proprietário e o grupo tenham acesso de leitura, impedindo execução por outros usuários do sistema.
2. Restringindo execução de scripts PHP em diretórios específicos
No Apache, podemos impedir a execução de scripts PHP em determinados diretórios, como uploads de usuários:
<Directory "/var/www/uploads">
php_flag engine off
</Directory>
Isso evita que arquivos maliciosos sejam executados se forem carregados na aplicação.
3. Bloqueando execução de scripts desconhecidos
Podemos evitar a execução de scripts PHP fora de diretórios específicos utilizando open_basedir
no php.ini
:
open_basedir = /var/www/html
Isso impede que scripts PHP sejam executados em locais não autorizados do sistema.
4. Impedindo execução de comandos no PHP
Evite que scripts PHP executem comandos no servidor desativando funções perigosas no php.ini
:
disable_functions = exec, shell_exec, system, passthru, popen, proc_open
Isso bloqueia funções que poderiam ser exploradas por invasores para executar comandos arbitrários.
5. Configurando um usuário seguro para o servidor web
O servidor web não deve rodar com privilégios administrativos. Configure um usuário dedicado para executar o PHP com permissões restritas:
usermod -a -G www-data phpuser
chown -R phpuser:www-data /var/www/html
Isso limita o impacto de um ataque, caso um invasor tente comprometer o sistema.
Conclusão
Restringir permissões de execução de scripts PHP é uma medida essencial para reforçar a segurança da aplicação. Configurar corretamente permissões de arquivos, bloquear execução em diretórios sensíveis, desativar funções perigosas e garantir um usuário seguro para o servidor minimizam riscos de exploração e ataques maliciosos.
Por que restringir permissões de execução de scripts PHP é fundamental?
O PHP é amplamente utilizado em servidores web, mas sem as configurações de segurança adequadas, pode ser explorado por atacantes para execução de código malicioso. Muitas brechas de segurança acontecem porque permissões inadequadas permitem a execução de scripts não autorizados.
Ao configurar corretamente o ambiente, podemos impedir que arquivos PHP sejam executados em diretórios onde não deveriam estar, como pastas de uploads de usuários. Além disso, desativar funções perigosas e restringir a execução a diretórios específicos reduz significativamente o risco de exploração.
Outra abordagem eficaz é configurar um usuário dedicado para executar o PHP, evitando que um ataque comprometa todo o sistema. Pequenas mudanças nas permissões podem ter um grande impacto na segurança da aplicação e na proteção dos dados armazenados no servidor.
Algumas aplicações:
- Impedir que invasores executem scripts maliciosos no servidor.
- Proteger diretórios sensíveis contra execução indevida de código PHP.
- Reduzir o impacto de ataques explorando vulnerabilidades do servidor.
- Evitar execução remota de código por usuários não autorizados.
Dicas para quem está começando
- Defina permissões adequadas para arquivos PHP, evitando acessos indevidos.
- Utilize
.htaccess
para bloquear execução de scripts PHP em diretórios não seguros. - Desative funções perigosas no
php.ini
para evitar execução remota de código. - Configure um usuário dedicado para rodar o PHP e reduzir privilégios desnecessários.
- Utilize
open_basedir
para restringir a execução de scripts a diretórios específicos.
Contribuições de Renata Oliveira