Resposta para novatos:
- monte com a
noexec
option para que os executáveis e as bibliotecas não possam ser executados (os scripts também não podem ser executados, mas eles ainda podem ser chamados combash malicious.sh
).
Ou
- configure algum tipo de ambiente chroot seguro para que você não se importe de explodir todo o "sistema" quando um vírus tentar neutralizá-lo, à la honeypot.
A opção 1 tem a desvantagem óbvia de que você não pode executar qualquer código legítimo, a opção 2 tem a desvantagem óbvia de que um único executável que se comporta mal pode neutralizar todos os seus dados legítimos.
Além disso, um bom design de permissão (usuários, grupos, bit pegajoso, bit setuid etc.) e umask restritivo devem garantir que um usuário só consiga explodir seus próprios arquivos ( ou em sua responsabilidade), que é melhor que uma completa destruição em caso de ataque.
Você também pode usar um sistema de arquivos com suporte a snapshot (não vou anunciar muito o ZFS, ele tem coisas boas e ruins, você pode tentar). Isso não impedirá que um ataque de privilégio de escalação ganhe raiz e exclua seus instantâneos, mas se for apenas a destruição de dados, você poderá reverter para um estado anterior).