Se você quer executar um servidor cPanel  para hospedar os seus clientes, você realmente precisa tomar cuidados para que um cliente não tenha acesso aos arquivos de outros clientes. Não proteger seus clientes contra acesso indevidos aos arquivos deles por parte de outro cliente irá te dar uma baita dor de cabeça. Seus clientes podem não ser maliciosos , mas podem igualmente ser inconscientes de suas ações no que diz respeito à segurança.

Com a popularidade do CMS como o WordPress, Joomla, é muito fácil de obter um site/blog para funcionamento em minutos. Para o cliente sem saber, é também muito fácil de que se esqueça de atualizar suas instalações e que acabe instalando plugins e temas inseguros. Estas são as principais fontes de hackers para obter acesso aos seus arquivos e a conta do servidor, e se o servidor não estiver bem protegido, basta apenas um cliente ficar com a sua conta comprometida, para o  hacker ter acesso a todos os outros arquivos do servidor.

Felizmente, há uma maneira de evitar ou pelo menos tornar mais difícil que isto ocorra.

Faremos o uso do suPHP e open_basedir.

suPHP: 

Este recurso faz com que os scripts sejam executados com as permissões de proprietário em vez de nobody.

Para habilitar isso, o apache precisa ser compilado com mod_suphp. Isto pode ser feito via WHM.

– Software >> EasyApache

– Clique em um perfil salvo anteriormente e personalize-o, escolha a sua versão do apache e compile com o PHP. Na página seguinte, certifique-se de que o Mod suPHP está habilitado/assinalado.

– Clique em salvar e rebuild. Isso deve levar cerca de 5 minutos. O Apache agora está compilado com suPHP.

Screenshot_2

open_basedir

Esta é uma diretiva do PHP encontrada no arquivo PHP.INI que restringe a execução de scripts PHP para apenas determinados diretórios de arquivos especificados na diretiva. Para usuários do cPanel, isto pode ser definido para os diretórios /home/, /usr/local/lib/ e /tmp/ .

Para definir o open_basedir, você pode fazê-lo via WHM ou via SHELL.

# vi /usr/local/lib/php.ini

# open_basedir = “/home/:/tmp:/usr/local/lib/”

Via WHM:

Vá até: Configuração de serviço >> Editor de configuração PHP >> Marque “Modo avançado” e procure por open_basedir e coloque os valores.

Screenshot_3

Desativar o PHP.INI personalizado do usuário

O suPHP por padrão carrega o PHP.INI personalizado do usuário armazenado em seu diretório. Isto permite que o usuário substitua as configurações globais do PHP.INI. Um usuário/script malicioso poderia substituir os valores do open_basedir e a proteção acima será perdida. Para evitar isso, deve configurar suPHP para carregar apenas o arquivo PHP.INI principal:

# vi /opt/suphp/etc/suphp.conf

E descomente as seguintes linhas:

;application/x-httpd-php=/usr/local/lib/
;application/x-httpd-php4=/usr/local/php4/lib/
;application/x-httpd-php5=/usr/local/lib/
As linhas acima devem estar iguais a estas abaixo:
application/x-httpd-php=/usr/local/lib/
application/x-httpd-php4=/usr/local/php4/lib/
application/x-httpd-php5=/usr/local/lib/
Agora, salve o arquivo e reinicie o apache:
# service httpd restart