Você provavelmente desejará configurar o shell padrão desses usuários como /bin/rbash
- restricted bash ( bash -r
). Veja man rbash
. Isso pode ser feito com o comando chsh -s /bin/rbash {USER}
.
Para evitar que eles executem outros comandos além daquele que você deseja, defina o ambiente variável PATH como apenas a pasta que contém o executável que você deseja que eles executem em ~/.bash_profile
:
export PATH="$HOME/bin"
Editar:
Neste ponto, ainda é possível que um invasor escape do rbash. Na verdade, ssh
permite executar comandos remotos. Eles ainda podem fazer algo como ssh ... cp /bin/bash bin
, para adicionar o bash ao conjunto de comandos que podem ser executados. O problema é que quando executado diretamente do ssh, parece que o bash (ou rbash) não lê .bash_profile
, nem .profile
, nem /etc/profile
.
O link (2) propõe soluções para este problema. man sshd_config
descreve todas as opções que podem ser definidas em /etc/ssh/sshd_config
. Aparentemente, o script ~/.ssh/rc
(assim como /etc/sshrc
ver link (4)) é executado quando precisamos que ele seja - sempre que um usuário ssh algum comando. Mas eu não testei.
Neste ponto, pode ou não ainda ser possível quebrar o rbash usando scp
.
Além disso, você precisará desativar o SFTP em /etc/ssh/sshd_config
. Isso é feito comentando a linha:
Subsystem sftp /usr/lib/openssh/sftp-server
Links: