Olhe para o scponly 'shell' e configure um chroot.
Em vez de usar ...
ssh://[email protected]:1234/mnt/thing/usr/prj
Eu quero usar
ssh://[email protected]:1234/prj
Como eu faria isso? Seria bom se os usuários não pudessem acessar /home
, /var
e tal. Eu só preciso disso para transferências de dados.
Olhe para o scponly 'shell' e configure um chroot.
Crie um usuário cujo diretório pessoal seja /prj
.
Crie um arquivo ~/.ssh/authorized_keys
para o usuário que contém a chave pública de usuários remotos, bem como alguma restrição sobre os comandos e as opções ssh disponíveis, como:
command="/usr/bin/scp-wrapper",no-port-forwarding,no-X11-forwar
ding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQA
BAAABAQCblahblahblahblahblahblahblahblahblahblahblahblahblahbla
hblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahbl
ahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahb
lahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah
blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahbla
hblahblahblahblahblahblahblahblahB [email protected]
Torne-o o mais restritivo possível.
Então você precisará criar esse wrapper para scp. Algo tão simples quanto o seguinte funcionará, mas você desejará adicionar mais testes e verificações conscientes de segurança antes de usá-lo na produção.
#!/usr/bin/env bash
$SSH_ORIGINAL_COMMAND
Este é apenas um exemplo do que é possível. Nesse caso, o comando scp completo é capturado na variável de ambiente $SSH_ORIGINAL_COMMAND
, mas como não é possível especificar um comando com argumentos na cláusula command=
do arquivo .authorized_keys
, você precisa do wrapper.
Os usuários provavelmente ainda podem acessar diretórios públicos fixos, como / tmp, mas não terão acesso para percorrer / var ou / home.
e eles podem conseguir extrair arquivos do seu servidor, mas você pode juntar tudo isso com chroot
e proteger o sistema um pouco mais, com o mínimo de esforço.