É possível definir um limite de tempo para uma conexão SSH ativa para um usuário específico do Linux?

É possível definir um limite de tempo para uma conexão SSH ativa para um usuário específico do Linux?

Atualmente estou trabalhando em uma ideia para um divertido desafio CTF. Um dos maiores obstáculos deste desafio, entretanto, é permitir ao usuário um período específico de tempo em uma conexão ssh.

Essencialmente, o usuário deve fazer ssh em uma VM Linux usando o usuário 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 principal questão aqui é limitar a quantidade de tempo que o usuário tem. Isso é possível com SSH? Se sim, como faço isso?

Agradecemos antecipadamente por qualquer ajuda.

Responder1

Hmm, fazer isso através do SSH seria proibitivamente difícil. Acho que a maneira mais fácil seria iniciar um programa em segundo plano toda vez que você fizer login ssh em uma conta específica, o que, após 10 minutos, matará 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ê entendeu.

Responder2

Use ForceCommandem 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 será suficiente. Se você precisar também de SFTP ou SCP, será necessário ajustá-lo um pouco.

informação relacionada