Estou executando o Debian stable e estou procurando estabelecer o seguinte ambiente para usuários no meu grupo 'sftponly':
- preso
- pode transferir com SFTP
- pode transferir com SCP
- Não é possível fazer login interativamente com o SSH
De minhas experiências e pesquisas, parece que a seguinte estrofe no sshd_config me leva a 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Isso me dá SFTP preso e nenhum SSH, o que é bom. Mas também desabilita o SCP, que é menos do que o ideal, porque alguns clientes são processos herdados e com script que usam o SCP em vez do SFTP (o servidor que estamos substituindo suporta os dois protocolos) e, como esses clientes não estão sob nosso controle e são fáceis modificado, provavelmente não é prático desativar completamente o SCP.
Faz sentido que essa configuração desative o SCP, pois as conexões SCP recebidas fazem com que o sshd gere um processo `scp 'através do shell de login do usuário, como esse usuário. Parece que o mesmo normalmente seria verdade para o SFTP, não fosse o manipulador especial 'internal-sftp'.
Então, suponho que minha pergunta é: existe uma maneira de obter o mesmo efeito que 'internal-sftp', mas para o SCP, sem recorrer ao uso de ferramentas de terceiros como scponly e rssh? O mais interessante do 'internal-sftp' é que ele não requer a criação de uma prisão com arquivos de suporte ou o tratamento de binários setuid de terceiros potencialmente exploráveis (o rssh, em particular, tem um histórico de explorações).
Respostas:
Dê uma olhada no rssh, que é um shell alternativo que permite acesso limitado a um sistema.
Você pode configurar quais comandos podem ser usados por usuário ou em todo o sistema usando o arquivo rssh.conf
Como alternativa, você pode usar o scponly para fazer o que quiser. Ele atua como um wrapper para o conjunto ssh e permite a transferência de arquivos, mas não o acesso ao shell.
fonte
Você precisa fazer isso através do ssh?
SE, para que você possa tentar configurar o shell deles para:
E certifique-se de adicionar o acima em / etc / shells
Se você deseja desacoplar o uso de contas internas, pode configurar o proftpd
Eu configurei um SFTP seguro usando o proftpd. proftpd compilado da seguinte forma:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Pode usar este artigo abaixo e um pouco mais no google sobre como configurá-lo:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
fonte
Receio que não haja nada igualmente fácil ou confiável com o OpenSSH, pois como você observou, existe um servidor SFTP interno, mas nenhum servidor SCP interno.
Um aviso: a sugestão de Vince Berk é ruim por vários motivos:
... e assim por diante. Esse tipo de abordagem é muito frágil.
fonte
Esta é uma ferramenta de terceiros, que não está no escopo da pergunta, mas achei que merecia uma menção.
Jailkit: https://olivier.sessink.nl/jailkit/
Possui uma coleção de ferramentas para facilitar a configuração de cadeias de usuários - copiar binários e bibliotecas para a prisão e configurar o registro de dentro da prisão para o sistema operacional. Eu usei-o para criar chroots sftp / scp / rsync-only.
Ele também vem com
jk_lsh
(shellkit limitado do jailkit), que pode ser usado fora da prisão para limitar os comandos que um usuário pode executar, se, por exemplo, você deseja permitir o scp / sftp / rsync apenas sem chroot.fonte
Aqui está um truque sobre como executar esse servidor. Defina o shell dos usuários para, digamos, bash:
Agora crie em seu homedir um '.bash_profile' com a seguinte linha:
Isso faz com que sessões não interativas (como 'scp') continuem. No entanto, se eles tentarem um logon 'ssh', a 'saída' será chamada e a conexão será fechada.
Verifique se eles não podem 'sftp' um novo '.bash_profile' em seus diretórios pessoais!
Espero que ajude!
fonte