suPHP – Segurança para seu servidor compartilhado
Citando a página oficial do projeto…
O suPHP é uma ferramenta para executar scripts PHP com seus próprios usuários, ao invés destes utilizarem o usuário padrão do Apache (nobody).
A utilização deste sistema só agrega para o servidor, facilitando na localização de usuários abusivos e evitando a comum prática de injection em websites vulneráveis.
Há algum tempo, o cPanel embarcou a opção de compilar o Apache já com o suPHP integrado, facilitando assim a vida do administrador.
Veja abaixo algumas situações vivenciadas por desenvolvedores e administradores:
Apache sem suPHP
- O desenvolvedor precisa setar aquela permissão 777 em uma pasta, porque sua galeria não consegue fazer o upload de uma imagem.
- O desenvolvedor precisa editar via FTP aquele arquivo do módulo que foi baixado pelo seu sistema, mas o owner (dono) do arquivo é o nobody (99).
- O administrador precisa atender constantes requisições de mudança de owner para todos os clientes que efetuam uploads através de seus sistemas.
- O administrador precisa descobrir quem é que está com aquele processo consumindo 100% de CPU via strace ou apache status.
- O administrador precisa remover constantemente arquivos maliciosos inseridos em pastas com permissão 777.
- O cPanel não vai contabilizar o espaço em disco corretamente, pois arquivos com o owner nobody “não pertencem” ao user do domínio.
Apache com suPHP
- O desenvolvedor não precisa mais da permissão 777, pois agora os scripts php todos são executados à partir de seu próprio usuário.
- O desenvolvedor necessita apenas duas permissões para o funcionamento ideal do sistema: 755 para diretórios e 644 para arquivos. Nem mais nem menos.
- O desenvolvedor não precisa mais requisitar mudanças de owner para editar aqueles arquivos inseridos pelo seu site.
- O administrador saberá imediatamente na listagem de processos (top) quem é dono daquele processo php ocupando 100% de CPU.
- O administrador não precisa mais se preocupar com sistemas sendo invadidos através de sites vulneráveis e suas pastas com permissões 777.
- A contabilização de espaço em disco estará sempre correta, pois não haverá arquivos nobody.
Ok. Compilar o Apache com o suPHP resolve todos os problemas, certo? Sim, mas traz outros consigo, ao menos no início.
O Impacto
Como dito anteriormente, as permissões de pastas e arquivos terão apenas uma configuração:
755 para diretórios
644 para arquivos
Qualquer permissão acima disso resultará em um “Internal Server Error”.
Como resolver? Setando as permissões da maneira adequada. Simples assim, porém trará um pouco de incomodação caso você já tenha vários sites. Eu ainda prefiro ver isto como um mal necessário.
Compilando
Para deixar o sistema funcionando com o suPHP, você só precisa acessar o EasyApache (Apache Update) no WHM. Ao chegar na sessão Short Options List, apenas marque a caixa do suPHP e mande compilar.
Ao final da compilação, você será direcionado para a tela de configuração do php, que também pode ser encontrada acessando o PHP and SuExec Configuration que por sua vez está em Apache Configuration.
Nesta tela, você configurará o suPHP para o PHP 5 Handler. Pode configurar para o PHP 4 também, caso esteja rodando os dois. Salve e pronto, seu sistema estará configurado para utilizar o suPHP.
Resumo
Mesmo trazendo um pouco de impacto para os clientes quando se trata de um servidor em produção, esta é uma fase curta, que você já pode preparar seus clientes à mudança antes de efetuá-la.
Certamente, a utilização do suPHP traz muito mais prós do que contras. Traz a comodidade da independência e segurança para os desenvolvedores e menos dor de cabeça para os administradores.
| Imprimir artigo | Este artigo foi escrito por Alexandre Silva Hostert em 22 de janeiro de 2010 às 16:45, e está arquivado em Tutoriais. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |

há 2 anos atrás
curti demais isso tudo =D
há 1 ano atrás
Olá, o problema é que depois de ativo, ele fica em safe mode, não consegui usar o set_time_limit(0);, apresenta erro… o que deveria mudar na conf e onde fazer isso ?