OpenSSH algo como 'internal-sftp', mas para SCP?

OpenSSH algo como 'internal-sftp', mas para SCP?

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:

  1. 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.

  2. O usuário pode simplesmente executar ssh /bin/bashe 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.

  3. Alterar as permissões de .bash_profilenão adianta muito se o usuário puder fazer isso ssh 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.

informação relacionada