Como permitir o SSH, mas não a transferência de arquivos de um servidor Linux?

Como permitir o SSH, mas não a transferência de arquivos de um servidor Linux?

Tenho um servidor Linux (Ubuntu 16.04) onde executo algumas simulações. Gostaria de dar a um funcionário acesso a este servidor para que ele possa testar seu código (ele o acessaria remotamente, de seu computador pessoal), mas não permitir que ele baixe nenhum arquivo do servidor para seu sistema.

Os arquivos são muito grandes (vários GBs), então não estou preocupado com ele copiar e colar todo o conteúdo do arquivo manualmente em seu computador.

Então, como faço para permitir o acesso SSH a ele, mas proibir o acesso SCP/WinSCP a ele?

Responder1

Não tenho certeza se você pode fazer isso se eles realmente quiserem mover os dados. Você pode impedir a execução scpde ou sftp, mas isso ainda deixa muitas outras maneiras de transferir arquivos.

Primeiro, o protocolo de transferência de arquivos realmente simples é este:

ssh user@hostname 'cat /some/remote/file' > /some/local/path

E você pode substituir catpor quase qualquer programa, caramba, até cp somefile /dev/stdoutparece funcionar.

Nos comentários houve sugestões sobre como desconectar sessões após um determinado horário ou após uma determinada quantidade de dados transferidos. Aparentemente, isso parece funcionar, se você também limitar o número de conexões que o usuário pode fazer. Permitir 10 conexões por dia, com limite de 1 MB/conexão, os limitaria a movimentar apenas 10 MB. Talvez algo assim pudesse funcionar se o uso normal pretendido exigir muito menos transferência de dados do que o cenário indesejado.

Mas e se eles simplesmente enviarem o arquivo para outro lugar? Deve ser fácil configurar um servidor SSH/FTP/qualquer outro lugar e enviar o arquivo através dele. Ou via HTTP(S), pelo menos curltem opções como --data @filenamee --upload-file, e configurar o lado do servidor não deve ser difícil. Se você remover as ferramentas já existentes, e se o programa que elas executam no sistema enviar os dados enquanto/em vez de processá-los?


O que você precisaria fazer é limitar o que o programa que tem acesso aos dados pode fazer com algum tipo de sandbox.

Providencie para que o código seja executado em uma máquina virtual que não tenha acesso externo, exceto alguma interface para upload do código e download dos resultados, com controles apropriados para o que é aceito como upload válido e resultado válido. Ou use algo comoseccomppara limitar o que o código pode fazer.

Responder2

você pode editar /etc/ssh/sshd_config para seguir

ForceCommand           /bin/sh
PermitOpen             0.0.0.0
AllowTcpForwarding     no
PermitTunnel           no
# Subsystem sftp       /usr/lib/openssh/sftp-server
PermitUserEnvironment  no

e remova o scp do servidor e também remova o acesso sudo à sua conta. você pode adicionar scp novamente conforme necessário.

cortesia das respostas de Brad e Mike dehttps://serverfault.com/questions/28858/is-it-possible-to-prevent-scp-while-still-allowing-ssh-access

informação relacionada