Existem três coisas que precisam ser feitas para que você faça o que está pedindo:
-
Um shell personalizado que não possui os comandos nos quais você está interessado . Isso é difícil, mas se você realmente não quer que os usuários tenham acesso a algumas primitivas de shell, esta é a única maneira de removê-las.
-
Defina corretamente as permissões de arquivo . Não quer que os usuários danifiquem o sistema? Defina as permissões para que não danifiquem o sistema, mesmo que tenham as ferramentas certas. Destes três passos, este é o passo mais fácil.
-
Use um technoloy de controle de acesso obrigatório como o AppArmor . MACs como o AppArmor e o SELinux incorporam permissões no kernel. Eles impedem que os usuários executem as ferramentas certas, mesmo que as encontrem em algum lugar (e, assim como as permissões de arquivos, impedem que elas sejam usadas fora da caixa restrita).
Cinto, suspensórios e uma pistola de grampo para uma boa medida. Difícil de dar errado lá.
O AppArmor é interessante, pois o MAC de um executável específico é herdado por todos os seus filhos. Defina o login de um usuário como /bin/bash-bob
, defina o perfil do AppArmor para esse direito binário específico e a única maneira de sair dessa prisão de permissão é através de explorações do kernel. Se algum script de instalação lenta deixar /var/opt/vendor/tmp
global-writeable por algum motivo estúpido, o usuário que usar /bin/bash-bob
como seu shell não conseguirá escrever lá . Defina o perfil bash-bob para permitir apenas gravar em seu diretório inicial e /tmp
, e esses erros de permissão não podem ser aproveitados. Mesmo que, de alguma forma, encontrem a senha de root, o perfil do AppArmor para /bin/bash-bob
ainda se aplicará mesmo depois que eles su
up, já que su
e bash
do processo, são filhos de /bin/bash-bob
.
A parte difícil é construir esse perfil do AppArmor.
- Crie um perfil do AppArmor para / bin / bash-bob e configure-o para o modo de auditoria
- Defina o shell de login do Bob para / bin / bash-bob
- Faça login como Bob. Faça tudo o que você quiser que o Bob possa fazer.
- Use o log de auditoria para criar o perfil do AppArmor (o SUSE tem ferramentas para isso, não tenho certeza sobre outras distribuições do Linux). Isso é monstruosamente tedioso, mas precisa acontecer se você precisar desse nível de segurança.
- Você estará fazendo coisas como:
- Aprovando acesso de leitura à maioria das bibliotecas do sistema
- Aprovar direitos de leitura e execução para os poucos comandos do sistema permitidos
- Aprovando acesso de gravação a espaços temporários
- Aprovando a criação de soquete, se necessário
- Defina a política para impor.
- Faça login como Bob, faça as coisas.
- Faça ajustes.
Na minha opinião, você só precisa dos passos 2 e 3, pois, em combinação, ambos impedem a capacidade de fazer algo prejudicial fora da caixa cuidadosamente construída que você configurou em ambas as etapas.