Com o lançamento do OpenSSH 4.9p1, você não precisa mais confiar em hacks de terceiros ou em configurações complicadas de chroot para confinar os usuários aos seus diretórios pessoais ou dar acesso a serviços SFTP.
edite / etc / ssh / sshd_config (/ etc / sshd_config em algumas distribuições) e defina as seguintes opções:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Verifique se a diretiva "Corresponder" está no final do arquivo. Isso informa ao OpenSSH que todos os usuários do grupo sftp devem ser chrootados para o diretório inicial (o que% h representa no comando ChrootDirectory
Para qualquer usuário que você deseja chroot, adicione-o ao grupo sftp usando:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
O comando usermod acima adicionará user joe ao grupo sftp e configurará seu shell como / bin / false para que eles nunca possam obter acesso ao shell. Os comandos chown e chmod definirão as permissões necessárias para o diretório. Com essas permissões definidas, o usuário poderá carregar e baixar arquivos, mas não poderá criar diretórios ou arquivos no diretório raiz
Fazer o chroot de contas shell é um pouco mais complicado, pois exige que certos arquivos de dispositivo e um shell estejam disponíveis no diretório inicial do usuário. Os seguintes comandos configuram um sistema chroot muito básico no Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Com o exposto acima, o usuário joe pode entrar e será restrito ao chroot. Infelizmente, isso não faz muito, mas fornece uma idéia de como ele pode ser configurado. Dependendo do que você deseja fornecer, será necessário instalar bibliotecas e binários adicionais.
Criando um chroot
Instale os pacotes dchroot e debootstrap.
Como administrador (por exemplo, usando o sudo), crie um novo diretório para o chroot. Neste procedimento, o diretório /var/chroot
será usado. Para fazer isso, digite sudo mkdir /var/chroot
uma linha de comando.
Como administrador, abra
/etc/schroot/schroot.conf
em um editor de texto. Digite cd /etc/schroot
, seguido por gksu gedit schroot.conf
. Isso permitirá que você edite o arquivo.
Adicione as seguintes linhas schroot.conf
e salve e feche o arquivo. Substitua
your_username
pelo seu nome de usuário.
[lucid] description = Localização do Ubuntu Lucid = / var / chroot priority = 3 usuários = your_username groups = sbuild root-groups = root
Abra um terminal e digite:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Isso criará uma 'instalação' básica do Ubuntu 10.04 (Lucid Lynx) no chroot. Pode demorar um pouco para que os pacotes sejam baixados. Nota: Você pode substituir o lucid pela versão do Ubuntu de sua escolha. Nota: Você deve alterar o acima mirror.url.com
com o URL de um espelho de arquivamento válido local para você. Um chroot básico agora deveria ter sido criado. Digite sudo chroot /var/chroot
para mudar para um shell raiz dentro do chroot.
Configurando o chroot
Existem algumas etapas básicas que você pode executar para configurar o chroot, fornecendo recursos como resolução e acesso DNS /proc
.
Nota: Digite esses comandos em um shell que está fora do chroot.
Digite o seguinte para montar o /proc
sistema de arquivos no chroot (necessário para gerenciar processos):
sudo mount -o bind /proc /var/chroot/proc
Digite o seguinte para permitir a resolução DNS a partir do chroot (necessário para acesso à Internet):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Muito poucos pacotes são instalados por padrão em um chroot (mesmo o sudo não está instalado). Use apt-get install package_name
para instalar pacotes.