Estou executando o Debian estável e pretendo estabelecer o seguinte ambiente para usuários do meu grupo 'sftponly':
- preso
- pode transferir com SFTP
- pode transferir com SCP
- não é possível fazer login interativamente com SSH
Pela minha experimentação e pesquisa, parece que a seguinte estrofe em sshd_config me leva 90% lá:
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 desativa o SCP, o que não é o ideal porque muitos clientes são processos herdados e com script que usam SCP em vez de SFTP (o servidor que estamos substituindo suporta ambos os protocolos) e como esses clientes não estão sob nosso controle e facilmente modificado, provavelmente não será prático desabilitar completamente o SCP.
Faz sentido que esta configuração desative o SCP, já que as conexões SCP de entrada 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 aconteceria com o SFTP, se não fosse pelo manipulador especial 'sftp interno'.
Então, suponho que minha pergunta seja: existe uma maneira de obter o mesmo efeito que 'sftp interno', mas para SCP, sem recorrer ao uso de ferramentas de terceiros como scponly e rssh? O que é realmente bom sobre o 'internal-sftp' é que ele não requer a criação de uma prisão com arquivos de suporte, ou lidar com binários setuid de terceiros potencialmente exploráveis (o rssh, em particular, tem um histórico de explorações).
Responder1
Dê uma olhadarsshque é um shell alternativo que permite acesso limitado a um sistema.
rssh é um shell restrito para fornecer acesso limitado a um host via ssh(1), permitindo que um usuário cujo shell esteja configurado para rssh use um ou mais dos comandos scp(1), sftp(1) cvs(1 ), rdist(1) e rsync(1) e apenas esses comandos.
Você pode configurar quais comandos podem ser usados por usuário ou em todo o sistema usando orssh.confarquivo
Alternativamente você pode usarscponlypara 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.
Responder2
Você precisa fazer isso através do ssh?
SE for assim, você pode tentar configurar o shell para:
/usr/libexec/openssh/sftp-server
E certifique-se de adicionar o acima em /etc/shells
Se quiser dissociar-se do uso de contas integradas, você pode configurar o proftpd
Eu configurei um SFTP seguro usando proftpd. compilou o proftpd assim:
./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_sftp
Pode usar este artigo abaixo e mais alguns no Google sobre como configurá-lo:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configurando.html
Responder3
Receio que não haja nada igualmente fácil ou confiável com o OpenSSH, pois, como você observou, existe um servidor SFTP integrado, mas nenhum servidor SCP integrado.
Um aviso: a sugestão doresposta de Vince Berké ruim por vários motivos:
O comportamento do shell em relação aos arquivos de inicialização pode ser influenciado por variáveis de ambiente, que o SSH pode definir remotamente dependendo da configuração do servidor.
O usuário pode simplesmente executar
ssh /bin/bash
e obter um shell. Não terá tty e será inconveniente de usar, mas e daí…. Sem mencionar todos os outros programas que ele pode executar e que você provavelmente não quer que ele execute.Alterar as permissões de
.bash_profile
não adianta muito se o usuário puder fazer issossh host rm -f .bash_profile
. Nada foi mencionado sobre as permissões do diretório inicial.
… e assim por diante. Esse tipo de abordagem é muito frágil.
Responder4
Esta é uma ferramenta de terceiros, que não está no escopo da questão, mas achei que merece menção de qualquer maneira.
Kit de prisão:https://olivier.sessink.nl/jailkit/
Ele possui uma coleção de ferramentas para facilitar a configuração de jails de usuários - copiando binários e bibliotecas para o jail e configurando o log de dentro do jail para o sistema operacional. Eu usei-o para criar chroots somente sftp/scp/rsync.
Ele também vem com jk_lsh
(shell 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ê quiser permitir scp/sftp/rsync apenas sem chroot.