Geralmente sou fã de "Um usuário para qualquer coisa que abre o soquete de escuta na rede" - Um para o Apache, um para o Mail, um para o DNS, etc.
Esta é (como ouvi pela última vez) ainda a Melhor Prática Corrente, e a razão por trás disso é paranóia simples e simples: Esses serviços são expostos à Big Bad Internet, se alguém encontrar uma vulnerabilidade e explorá-la antes que eu tenha uma chance para corrigir o software, pelo menos estou limitando-os a uma conta de usuário, com apenas os privilégios necessários para executar o único serviço pelo qual é responsável.
De modo geral, considero que esse nível de isolamento é suficiente para proteger o sistema, embora cada aplicativo seja uma ilha de vulnerabilidade (por exemplo, se alguém instala um plug-in vulnerável do WordPress todos os itens aos quais o Apache tem acesso todos os sites) são efetivamente vulneráveis no caso de um compromisso.
Uma versão estendida desse argumento pode ser feita para sandboxing de sites de clientes Hosting Compartilhado com sua própria configuração e usuário do Apache (você não precisa necessariamente instalar uma pilha web completa para cada site, apenas uma configuração separada do apache) um usuário diferente), a desvantagem é que cada site agora está executando um monte de processos Apache, então seu uso de RAM aumentou substancialmente, e coisas que são legíveis ao mundo ainda estão vulneráveis se qualquer instância / usuário do Apache ficar comprometido.
Estendendo ainda mais o argumento para colocar cada Apache em um chroot (ou cadeia se você em sistemas BSD) pode ser feito para ainda mais segurança, mas agora você está falando sobre espaço adicional em disco já que cada chroot / jail precisará de todo o software necessário para executar o site que ele contém (e a necessidade de atualizar este software para cada site, em vez de apenas uma cópia mestre no servidor quando os patches saírem), além do requisito de RAM como quando você tinha usuários / instâncias de apache separados. br> Isso mitiga tudo, exceto um bug do OS / Kernel que permite que os usuários saiam do chroot (que se torna o argumento para executar cada site em um servidor físico separado - que se torna o argumento para separar os sites em diferentes vlans / subnets, etc.)
Como com todos os riscos, você não pode eliminá-lo: você só pode reduzi-lo a um nível aceitável com base no potencial dano / custo de um comprometimento, na probabilidade de um comprometimento e no custo de cada nível de mitigação.
Pelo meu dinheiro, para um ambiente de hospedagem compartilhada não-crítica, não-E-Commerce, o básico "Um usuário para Apache, um para DNS, um para e-mail, etc." rede de segurança é suficiente. Se houver necessidade de segurança além desse nível, seus usuários devem considerar seriamente seu próprio hardware.