Respostas:
SSH Suporta chroot de um usuário SFTP nativamente. Você só precisa fornecer
ChrootDirectory
No seu arquivo de configuração sshd, e reinicie o sshd.
Se você está apenas executando sftp, não precisa fazer mais nada. Infelizmente, isso não funciona para o scp. Para shell interativo, você precisará copiar binários e nós / dev no chroot.
Um exemplo de configuração, para apenas um usuário, testuser:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
Algumas coisas a serem observadas, na página de manual do sshd_config:
Todos os componentes do nome do caminho devem ser diretórios de propriedade raiz que não são gravável por qualquer outro usuário ou grupo. Após o chroot, o sshd (8) altera o diretório de trabalho para o diretório inicial do usuário.
Procure por ChrootDirectory no man sshd_config para obter mais informações.
Subsystem sftp /usr/lib/openssh/sftp-server
linha paraSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
seção.
Um chroot é um método razoavelmente simples. Como o sistema operacional já possui esse recurso de segurança, os gravadores de daemon tendem a não tentar reimplementá-lo.
O Rssh vem com um guia sobre a criação de uma prisão chroot. Está no CHROOT
arquivo na distribuição de origem. Em poucas palavras, você precisa ter:
/usr/bin/scp
, /usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
) que eles usam também copiam/etc/passwd
(possivelmente não uma cópia, mas derivada do mestre)/dev/null
, /dev/tty
, e também um /dev/log
soquete para o registo (e você precisa dizer ao seu daemon syslog para ouvir em que socket)Dica adicional que não está na documentação do rssh: Se você precisar que alguns arquivos estejam acessíveis em uma prisão chroot, poderá usar bindfs ou Linux mount --bind
para criar hierarquias de diretório adicionais de fora da prisão. bindfs
permite que o diretório remontado tenha permissões mais restritivas, por exemplo, somente leitura. ( mount --bind
a menos que você aplique um patch do kernel; o Debian o incluiu desde o leste da lenny, mas a maioria das outras distribuições ainda não o fez em 2011.)
Você pode querer dar uma olhada no scponly (ou mais recentemente, rssh ); é essencialmente um shell de login que só pode ser usado para iniciar o scp ou o subsistema sftpd. Na scponlyc
variante, ele executa um chroot antes de ativar o subsistema em questão.