Portanto, configurar o chroot para o SSH requer a ativação do SFTP (Protocolo de Transferência de Arquivo SSH), que faz parte do OpenSSH. Leia abaixo para as etapas exatas.
BTW, se vir USERNAME em maiúsculas, substitua USERNAME pelo nome de usuário que você está tentando fazer chroot.
Ativando o SFTP com Chrooted
Ativar o SFTP é muito fácil. Abra o / etc / ssh / sshd_config ...
vi /etc/ssh/sshd_config
e verifique se você tem a seguinte linha:
Subsystem sftp /usr/lib/openssh/sftp-server
Em seguida, adicione a seguinte estrofe no final do arquivo (adicione uma estrofe para cada usuário que você deseja chroot):
Match User USERNAME
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Em vez de adicionar uma sub-rotina para cada usuário, você também pode fazer chroot em grupos, por exemplo, da seguinte forma:
Match Group users
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Isso iria chroot todos os membros do grupo de usuários para o diretório / home. Reinicie o OpenSSH:
/etc/init.d/ssh restart
Se você executar vários usuários chroot no mesmo diretório, mas não quiser que os usuários naveguem pelos diretórios base dos outros usuários, você poderá alterar as permissões de cada diretório base da seguinte forma:
chmod 700 /home/USERNAME
Em seguida, você pode efetuar login com um cliente SFTP, como o FileZilla ou o WinSCP.
Ativando o SSH do Chrooted
Ativar o SSH chrooted é um pouco mais complicado, porque precisamos configurar um ambiente chroot com todos os programas / ferramentas (por exemplo, / bin / bash, / bin / cp, etc.) que os usuários devem poder usar. Isso significa que também devemos copiar todas as bibliotecas que esses programas precisam para a cadeia chroot. Você pode fazer isso manualmente com o comando cp e descobrir quais bibliotecas uma ferramenta precisa usando o comando ldd, por exemplo,
ldd /bin/bash
Também precisamos criar alguns dispositivos como / dev / null, / dev / zero, / dev / tty e / dev / urandom dentro da jaula chroot com o comando mknod. No entanto, isso pode ser uma tarefa tediosa. Felizmente, há um script que pode fazer isso por nós. Primeiro, precisamos instalar alguns pré-requisitos:
apt-get install sudo debianutils coreutils
Em seguida, baixamos make_chroot_jail.sh para / usr / local / sbin e torná-lo executável para o usuário root:
cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh
Antes de usarmos o script, talvez você queira adicionar alguns programas (por exemplo, / usr / bin / vi) à linha APPS de sua distribuição nesse script, para que essas ferramentas sejam adicionadas automaticamente à cadeia chroot:
vi /usr/local/sbin/make_chroot_jail.sh
elif [ "$DISTRO" = DEBIAN ]; then
APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vi"
else
Em seguida, adicionamos um link simbólico / home / home que aponta para / home:
cd /home
ln -s . home
Agora já podemos usar o script. O uso é o seguinte:
make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]
O chroot-shell é um shell especial criado pelo script para chroot users. Como o OpenSSH agora suporta o chrooting por padrão, não precisamos do script para criar um shell especial; em vez disso, podemos usar / bin / bash ou / bin / sh. Não importa se o usuário já existe ou não. Se ele existir, ele será atualizado; se não, ele será criado.
make_chroot_jail.sh USERNAME /bin/bash /home
Isso criará / atualizará o usuário USERNAME com o chroot jail / home. Para atualizar todos os arquivos / bibliotecas na jaula chroot, execute
make_chroot_jail.sh update /bin/bash /home
Agora, precisamos configurar o OpenSSH, que é semelhante à configuração do SFTP. Abra o / etc / ssh / sshd_config ...
vi /etc/ssh/sshd_config
Adicione a seguinte estrofe no final do arquivo (adicione uma estrofe para cada usuário que você queira chroot):
Match User USERNAME
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
Em vez de adicionar uma sub-rotina para cada usuário, você também pode fazer chroot em grupos, por exemplo, da seguinte forma:
Match Group users
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
Isso iria chroot todos os membros do grupo de usuários para o diretório / home. A diferença para a configuração do SFTP é que, desta vez, não devemos usar a linha ForceCommand / usr / lib / openssh / sftp-server nas estrofes Match! Isso faz com que os usuários ainda possam usar o SFTP com chroot (desde que você também tenha a linha Subsistema sftp / usr / lib / openssh / sftp-server em / etc / ssh / sshd_config), mas também o SSH chroot.
Reinicie o OpenSSH
/etc/init.d/ssh restart
Se você executar vários usuários chroot no mesmo diretório, mas não quiser que os usuários naveguem pelos diretórios base dos outros usuários, você poderá alterar as permissões de cada diretório base da seguinte forma:
chmod 700 /home/USERNAME
Depois, você pode fazer login com um cliente SSH, como o PuTTY.