Como posso chroot conexões ssh?

20

Gostaria de configurar uma prisão chroot para a maioria (não todos) dos usuários que efetuam login através do SSH. Ouvi dizer que é possível com as versões mais recentes do openssh, mas não consegui descobrir como fazê-lo. O How To fala sobre o patch de uma versão antiga, e o patch não está mais disponível.

Estou executando o debian etch.

Malfist
fonte

Respostas:

13

Estou usando o rssh para esse fim.

Você está certo de que existe uma nova maneira de fazer isso e é um recurso interno das versões ssh recentes.

Aqui está um artigo sobre Undeadly .

cstamas
fonte
6

Eu apenas tive que configurar um usuário que seria capaz de efetuar login via ssh e o ssh em outro servidor (que não está diretamente conectado ao mundo externo). Os links de cstamas e ericmayo foram um bom começo.

Basicamente, adicionei o seguinte ao / etc / ssh / sshd_config:

Corresponder Usuário myuser
  Diretório Chroot / chroot / myuser

A partir daí, eu apenas tive que criar o ambiente chroot abaixo / chroot / myuser. Copiei / bin / bash e / usr / bin / ssh e as bibliotecas compartilhadas necessárias (o ldd mostrará essas). Para um ambiente maior, provavelmente faria sentido compilar versões vinculadas estaticamente dos executáveis ​​necessários.

O Bash funcionou imediatamente, para o ssh funcionar, eu também tive que criar o diretório .ssh, copiar / etc / passwd, /etc/nsswitch.conf e / lib / libnss_ * e criar / dev / null, / dev / tty e / dev / urandom via mknod.

Marie Fischer
fonte
2
mkdir /chroot
mkdir -p /chroot/home/<user_name>

mkdir /chroot/home/<user-name>/bin  
cp -pr /bin/bash /chroot/home/<user_name>/bin/.  
cp -pr /bin/ls /chroot/home/<user_name>/bin/.  
cp -pr /lib64 /chroot/home/<user_name>/.

Você precisa editar o arquivo / etc / sshd_config e adicionar

ChrootDirectory /chroot/%h

E reinicie o daemon sshd.

Tudo dito, honestamente, acho que o sftp é uma opção melhor.

Além disso, encontrei esse URL se for útil.

http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

Soham Chakraborty
fonte
1

Se você estiver usando autenticação de chave pública, poderá usar a opção "comando" em chaves autorizadas para configurar a prisão chroot.

~ / .ssh / chaves_autorizadas:

command="/path/to/the/chroot/script" ssh-dss keydata.....keydata... user@host
UloPe
fonte
Eu não estou usando autenticação de chave pública, autenticação é feita por uma senha e nome de usuário
Malfist
0

Tanto quanto eu sei, novas versões do OpenSSH só permitem chroot para conexões SFTP. Eu tentei e funciona. Mas, para o SSH, a solução disponível é o patch chrootssh. Eu navego no site SourceForge e não há arquivos, então acho que foi descontinuado.

Para o Debian Etch, existem alguns arquivos aqui: http://debian.home-dn.net/etch/ssh/

Existem outras soluções aqui: http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html , incluindo chrootssh.

hdanniel
fonte
-1 Desculpe, sua resposta estava correta anos atrás quando você a escreveu, mas não está mais.
Chris S