Deixando um usuário SSH em um ambiente contido

0

Digamos que eu tenha um usuário no meu sistema (Ubuntu 16.04).

Existe uma maneira de garantir que o SSH só possa ser usado em algum tipo de ambiente virtual, mas faça com que ele tenha direitos de sudo?

Os namespaces do Linux podem ajudar? Como eu aplico chroot ou namespacing em um usuário que se conecta a partir do ssh?

Edit: Supondo que o telnet esteja desabilitado, existem outras maneiras além do SSH para acessar minha máquina remotamente?

    
por Gilad Naaman 01.05.2017 / 12:05

1 resposta

3

chroot é inútil para segurança (por outras razões, como executar programas que precisam dele) se o usuário for root, porque a alteração do chroot atual requer privilégios de root. Então, um usuário root chroot 'ed simplesmente tem que fazer um chroot / para escapar.

No Linux, o LXC aproveita o namespacing para criar efetivamente uma máquina virtual leve. Eu experimentei isso há alguns anos e acredito que era possível que o root saísse de um LXC acessando o sistema de arquivos /proc , que fornece uma interface para criar e gerenciar contêineres existentes. Isso pode ser melhor agora.

Por segurança, a melhor coisa que eu sei fazer atualmente é criar uma VM usando algum tipo de software de VM, seja VMWare, QEMU ou outro. O QEMU, em particular, suporta a eliminação de direitos depois que a VM é iniciada, portanto, toda a VM não terá privilégios de root no sistema - isso não afeta nada que esteja acontecendo na VM, é claro.

Você terá que recriar o ambiente que deseja na VM, e como a VM é praticamente um sistema físico separado, você terá que atualizá-lo separadamente, fornecer espaço em disco suficiente para um SO completo, etc. não é possível que programas em execução na VM escapem, impedindo quaisquer vulnerabilidades no software da VM.

    
por 01.05.2017 / 13:05

Tags