Como posso dar um shell a alguém com segurança?

7

Eu tenho uma pergunta sobre dar uma conta de shell para alguém. Quão seguro é isso? Ele poderia ler / etc. Como posso dar uma conta de shell segura que restringirá o usuário apenas a algumas caixas e à sua própria casa? É a única maneira de uma cadeia chroot?

    
por CappY 21.03.2011 / 21:10

4 respostas

3

Uma das maneiras mais fáceis / eficientes de controlar o que um usuário pode fazer é lshell .

lshell is a shell coded in Python, that lets you restrict a user's environment to limited sets of commands, choose to enable/disable any command over SSH (e.g. SCP, SFTP, rsync, etc.), log user's commands, implement timing restriction, and more.

    
por 22.03.2011 / 00:53
1

Lembre-se de que partes de /etc precisam ser legíveis até mesmo por usuários sem privilégios. Se houver coisas em /etc que não devem ser legíveis, mas sim, você tem problemas maiores e, no mínimo, deve executar o programa de verificação / correção de permissões da sua distribuição.

Uma cadeia é a maneira mais fácil de estabelecer restrições draconianas. Existem outras maneiras, como configurar o SElinux e organizar o usuário para ter um contexto de segurança muito limitado.

    
por 21.03.2011 / 21:15
1

Se você der a alguém uma conta de shell, eles poderão ver todos os arquivos legíveis pelo mundo. Isso inclui muitos arquivos em /etc que são necessários para o sistema funcionar, incluindo /etc/passwd (que contém nomes de usuário, mas não senhas).

Se você permitir que o usuário faça login dentro de um chroot, eles não poderão ver os arquivos fora do chroot. Isso significa que você deve colocar programas, bibliotecas, etc. suficientes dentro do chroot - tudo o que o usuário deve ter acesso e toda dependência deles também.

Observe que um chroot apenas protege o acesso direto a arquivos. O usuário pode espionar várias coisas, incluindo os nomes e argumentos dos processos em execução de todos os usuários (a menos que você configure proteções adicionais, como o SELinux). Se o usuário não precisar fazer muito, você pode configurar restrições mais restritas (incluindo impedir que o usuário crie seus próprios executáveis) com um shell restrito, mas configurar um shell restrito é muito complicado, então eu não faço isso. t recomendá-lo.

Hoje em dia, as máquinas virtuais são muito baratas. Você tem muitas implementações gratuitas para escolher (Modo do usuário Linux, VirtualBox, VMware, KVM, OpenVZ, VServer,…) e o espaço em disco usado por uma instalação extra do sistema é mínimo (e você pode precisar dele para o chroot mesmo assim). Uma máquina virtual isola praticamente tudo: arquivos, processos, redes ... A menos que você tenha restrições muito incomuns, esse é o caminho a ser seguido.

    
por 21.03.2011 / 21:19
1

Uma opção é colocá-los em uma sessão de shell restrita, como rbash [bash -r].

É um pouco incerto, neste ponto, o que, exatamente, você deseja realizar, no entanto, na superfície posix acl's para "outro" se aplicará à nova conta, bem como a qualquer grupo acl para grupos aos quais a conta pertence , como "usuários", por exemplo.

    
por 21.03.2011 / 21:21