A maneira padrão de lidar com isso é configurar um ambiente de chroot. O que isto faz é estabelecer uma nova base para o sistema de arquivos. Em um ambiente chroot'd, o usuário tem seus próprios arquivos de configuração básicos para suportar o ambiente. Quando eles fazem o login, eles executam o chroot e ficam "presos" nesse ambiente limitado.
Para fazer isso, configure um diretório base para criar seu ambiente restrito e, em seguida, adicione diretórios ao ambiente.
mkdir -p <base>/{dev,etc,lib,usr,bin}
mkdir -p <base>/usr/bin
chown root.root <base>
Você pode fazer com que <base>
seja o que você quiser (ou seja, /var/jail
).
Adicione outros arquivos necessários e quaisquer binários ou executáveis que o usuário precisa executar:
cp /etc/ld.so.cache <base>/etc/
cp /etc/ld.so.conf <base>/etc/
cp /etc/nsswitch.conf <base>/etc/
cp /etc/hosts <base>/etc/
cp /usr/bin/ls <base>/bin/
cp /usr/bin/bash <base>/bin/
Adicione quaisquer bibliotecas compartilhadas necessárias para executar qualquer um dos comandos necessários (execute ldd <command>
para obter uma lista). cp
no diretório <base>/lib
.
Por último ... config sshd ( /etc/ssh/sshd_config
) com o seguinte:
Match group sshusers
ChrootDirectory <base>
X11Forwarding no
AllowTcpForwarding no
Adicione usuários que serão chroot ao grupo "sshuser" (ou faça com que seja qual for o grupo que você quiser, apenas certifique-se de que ele corresponda como você o configurou em sshd_config
).