É possível definir um limite de tempo em uma conexão ssh ativa para um usuário linux específico?

3

Atualmente, estou trabalhando em uma ideia para um desafio divertido de CTF. Um dos principais obstáculos desse desafio, no entanto, é permitir que um usuário tenha uma quantidade específica de tempo em uma conexão ssh.

Essencialmente, o usuário deve usar ssh em uma VM linux usando o usuário do desafio. Eles têm 10 minutos para encontrar 10 peças da bandeira que devem ser organizadas em uma determinada ordem antes que a sessão SSH seja encerrada, acionando um evento que troca a localização das peças da bandeira. Neste ponto, o usuário deve abrir uma nova conexão SSH e continuar pesquisando.

A questão principal aqui é limitar a quantidade de tempo que o usuário tem. Isso é possível com o SSH? Se sim, como faço isso?

Agradecemos antecipadamente por qualquer ajuda.

    
por fataldarkness 19.10.2016 / 21:45

2 respostas

1

Hmm, fazer isso através do SSH seria proibitivamente difícil. Eu acho que a maneira mais fácil seria ter um programa em segundo plano começando a ser executado toda vez que você tiver um login ssh em uma conta específica, que, após 10 minutos, mata todas as conexões ssh. Honestamente, seria muito fácil.

Você adicionaria algo a ~ / .profile ou ~ / .bashrc que diz algo como

sleep 600
killall --user {whateverhis/herusernameis}
end

ou você tem a ideia.

    
por 19.10.2016 / 23:10
0

Use ForceCommand em sshd_config . É garantido que será executado após o login:

Match User ctfuser
  ForceCommand "(sleep 600; killall -u ctfuser)& bash"

Se você precisar apenas de acesso ao shell, isso é suficiente. Se você precisa também de SFTP ou SCP, você precisa ajustar um pouco.

    
por 20.10.2016 / 10:22

Tags