Estou trabalhando em um servidor ssh onde a única coisa que quero que o usuário faça é
ssh user@ip cat somefile
Parte do meu plano de mitigação de ameaças era dar ao usuário bash restrito
Já vi exemplos com chsh rbash
mas no meu servidor o rbash não foi encontrado. Então eu fiz um script "rbash"
#!/bin/bash
bash -r
bash -r é uma opção para iniciar o shell restrito, então coloquei este script em /bin. e correuchsh user -s /bin/rbash
Agora eu posso ssh user@ip
entrar no servidor e me encontrar em um shell restrito, mas quando tento ssh user@ip cat somefile
o processo ssh fica preso emdebug1: sending command: cat somefile
Estou indo sobre isso da maneira certa? Quando eu ssh para fazer login cat somefile
, como faço para que o comando funcione remotamente e mantenho o shell restrito?
Outras informações possivelmente relevantes
- Os Fedora 29
- chave pública do método de autenticação ssh
Criar rbash
Se você rolar até o fim na
bash
página do manual, encontrará o capítuloRESTRICTED SHELL
:Para iniciar o bash com o nome 'rbash', você pode criar um link simbólico
ln -s /bin/bash /bin/rbash
.Restringir o usuário a
cat somefile
De
man authorized_keys
:Você pode ajustar seu arquivo authorized_key:
Agora, este combo de chave de usuário só pode ser executado
cat somefile
.Por que seu wrapper não funciona
Seu script é executado
bash -r
e não executa seu comandocat somefile
. Você pode ver o que acontece quando você colocaset -xe
seu script:Isso mostra que
bash
não está preso, mas aguardando entrada e que você gerou dois shells. Ele não tem prompt, mas pode executar comandos:Você poderia canalizar o comando para este shell, mas esta não é uma boa solução: