SSH Bash Jail Session

3

Eu vi alguns provedores de serviço de encapsulamento de jogos que prendem a conta do cliente a uma tela de Informações no login e qualquer entrada é ignorada. Ctrl + C fecha a sessão SSH e se desconecta. Isso basicamente prende o usuário, mas mantém o túnel.

Isso me deixou muito curioso como é feito. Alguém sabe como isso pode ser feito?

    
por Halfus 02.03.2012 / 14:35

2 respostas

1

Acho que você pode conseguir isso configurando o shell de login do usuário para algo muito restrito, por exemplo, algo como " Sleep Dummy Shell ". Citando o site,

This is a simple do-nothing, sleep-forever program that can be used as a login shell (in Linux or Unix) to keep the connection open but without interactive shell. We use it to create SSH accounts for users who will only use them for SSH-tunneling; to create an encrypted tunnel to our servers [...]

Most restricted shells still allow execution of local commands from the SSH account. Setting the account shell to something like /bin/false (or any other simple programs) usually won't work because the tunnel is closed as soon as the program finish its execution. Sleep Dummy Shell just sleeps until its execution is terminated by the user or the tunnel is closed.

Você tem a idéia, um programa simples faz parte do truque, sleepshell.c tem ~ 20 linhas de C.

Não tenho certeza se isso já é seguro o suficiente , ou seja, o que isso significa para usar ssh <server> /bin/bash ou similar, por exemplo.

Veja esta resposta (por michael-n) para mais dicas e informações.

    
por 02.03.2012 / 15:37
0

Existem maneiras rápidas e fáceis de fazer isso com o bash como o shell, mas elas não são muito seguras. (tem havido várias falhas de segurança encontradas nos últimos anos com a diretiva de comando authorized_keys ", e com as variáveis de ambiente do Bash. Deve ser seguro agora, a menos que haja outro bug à espreita ...)

Se você quiser fazer isso com segurança, mas ainda quiser escrever um script no bash para exibir a saída, sugiro escrever um pequeno programa em C para atuar como o shell, que executa e exibe a saída do seu script bash. O programa C deve ignorar seus argumentos e redefinir seu ambiente para um padrão seguro e, em seguida, fork / exec () seu script bash com um STDIN de / dev / null. Desta forma, o usuário não tem absolutamente nenhuma maneira de interagir com o script. Eu posso fornecer um exemplo se você precisar.

    
por 01.12.2014 / 17:15