1

Esse comentário parece gerado por IA, mas de qualquer forma são dicas de hardening válidas.

Mas para deixar claro: só hardening não é defesa em profundidade por si só. Fazer hardening é bom, mas isso não é criar uma camada extra de defesa.

Pense em defesa em profundidade como criar várias barreiras de defesa ao invés de confiar na superfície de ataque como sua única barreira de defesa. Comparando:

Sem defesa em profundidade: superfície de ataque -> acesso a sistema.

Com defesa em profundidade: superfície de ataque -> barreira 2 -> barreira 3 -> acesso ao sistema.

Vamos pegar como exemplo a "tua" (ou da IA) dica um: "Usuário dedicado e sem privilégio por aplicação".

Ela é boa e faz sentido. Mas isso não é defesa em profundidade, mesmo que superficialmente possa parecer. Mesmo com limitações de acesso do usuário, ainda assim o atacante já obteve acesso ao sistema. Ele já pode persistir acesso, ele já tem acesso a tua rede interna, já pode tentar explorar uma vulnerabilidade no kernel etc.

Digamos que teu servidor tá hospedado na Google Cloud. Mesmo com um usuário com acesso limitado, o atacante já tem acesso a API de metadados da Google Cloud e, por consequência, já pode obter uma credencial de acesso ao painel da Google Cloud. Com isso ele poderia, potencialmente, obter acesso root não só à esse servidor, mas também todos os outros servidores do projeto. Também obteria acesso à banco de dados e por aí vai.

Para eu realmente considerar como uma "camada de proteção", eu diria que tem que haver isolamento de rede, processos e sistema de arquivos; melhor ainda se houver isolamento de kernel (com MicroVM, por exemplo).

É por isso que mencionei sandboxing e containerezição como exemplos, dá para fazer esse isolamento com os dois. Com SELinux/AppArmor também dá para hardenizar o processo, limitando os acessos dele.

Mas repito: são dicas de hardening válidas. Só queria esclarecer que existe diferença entre hardening e defesa em profundidade.

Carregando publicação patrocinada...
1

Justo, a distinção faz sentido: o que listei limita o estrago dentro da mesma máquina, mas não cria uma barreira separada.

O exemplo da API de metadados é ótimo, porque é justamente o caminho que um usuário sem privilégio ainda tem. Pra quem está em GCP ou AWS, duas coisas baratas nesse ponto: bloquear 169.254.169.254 no firewall de saída só para o usuário do PHP-FPM (com iptables dá pra filtrar por --uid-owner) e deixar a service account da VM com o mínimo de escopos possível. Na AWS, exigir IMDSv2 também ajuda contra SSRF simples.

Mas concordo: isolamento de verdade é container ou MicroVM com rede e sistema de arquivos separados.