EDIT # 2 23 de julho de 2015: Procurando uma nova resposta que identifique um item de segurança importante esquecido na configuração abaixo ou possa dar motivos para acreditar que tudo está coberto.
EDIT # 3 29 de julho de 2015: Estou procurando especialmente por uma possível configuração incorreta, como permitir inadvertidamente algo que possa ser explorado para contornar restrições de segurança ou, pior ainda, deixar algo em aberto.
Essa é uma configuração de hospedagem compartilhada / em vários sites e queremos usar uma instância compartilhada do Apache (ou seja, é executada em uma conta de usuário), mas com o PHP / CGI sendo executado como usuário de cada site, para garantir que nenhum site possa acessar os arquivos de outro site, e queremos verifique se nada está faltando (por exemplo, se não soubéssemos sobre a prevenção de ataques de links simbólicos).
Aqui está o que eu tenho até agora:
- Certifique-se de que os scripts PHP sejam executados como a conta e o grupo de usuários Linux do site e estejam presos (como o CageFS) ou pelo menos adequadamente restritos usando as permissões do sistema de arquivos Linux.
- Use suexec para garantir que os scripts CGI não possam ser executados como usuário do Apache.
- Se precisar de suporte de inclusão no servidor (como em arquivos shtml), use
Options IncludesNOEXEC
para impedir que o CGI possa ser executado quando você não espera (embora isso não deva ser uma grande preocupação se você estiver usando o suexec). - Tenha a proteção contra ataques de link simbólico para que um hacker não consiga convencer o Apache a exibir os arquivos de outro site como texto sem formatação e a divulgar informações exploráveis, como senhas de banco de dados.
- Configure
AllowOverride
/AllowOverrideList
para permitir apenas quaisquer diretivas que um hacker não possa explorar. Eu acho que isso é menos preocupante se os itens acima forem feitos corretamente.
Eu usaria o MPM ITK se não fosse tão lento e não rodasse como root, mas estamos especificamente querendo usar um Apache compartilhado e ainda assim garantir que seja feito com segurança.
Encontrei http://httpd.apache.org/docs/2.4/misc/security_tips.html , mas não foi abrangente sobre este tópico.
Se é útil saber, estamos planejando usar o CloudLinux com CageFS e mod_lsapi.
Existe mais alguma coisa para se certificar de fazer ou conhecer?
EDIT 20 de julho de 2015: As pessoas enviaram boas soluções alternativas que são valiosas em geral, mas observe que esta pergunta é direcionada apenas à segurança de uma configuração compartilhada do Apache. Especificamente, há algo não coberto acima que poderia permitir que um site acesse os arquivos de outro site ou comprometa outros sites de alguma forma?
Obrigado!