Existe uma maneira simples de restringir um usuário SCP / SFTP a um diretório? Todos os métodos que encontrei exigem que eu instale uma prisão chroot copiando binários, mas não acho que isso seja necessário.
36
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.)fonte
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.fonte