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