¿Es posible establecer un límite de tiempo en una conexión ssh activa para un usuario de Linux específico?

¿Es posible establecer un límite de tiempo en una conexión ssh activa para un usuario de Linux específico?

Actualmente estoy trabajando en una idea para un desafío CTF divertido. Sin embargo, uno de los mayores obstáculos de este desafío es permitirle al usuario una cantidad específica de tiempo en una conexión ssh.

Básicamente, el usuario debe conectarse a una máquina virtual Linux utilizando el usuario de desafío. Tienen 10 minutos para encontrar 10 piezas de la bandera que deben organizarse en un orden determinado antes de que finalice la sesión SSH, lo que desencadena un evento que intercambia la ubicación de las piezas de la bandera. En este punto el usuario debe abrir una nueva conexión SSH y continuar buscando.

El principal problema aquí es limitar la cantidad de tiempo que tiene el usuario. ¿Es esto posible incluso con SSH? Si es así, ¿cómo logro esto?

Gracias de antemano por cualquier ayuda.

Respuesta1

Hmm, hacerlo A TRAVÉS de SSH sería prohibitivamente difícil. Creo que la forma más sencilla sería hacer que un programa en segundo plano comience a ejecutarse cada vez que inicie sesión ssh en una cuenta específica, lo que, después de 10 minutos, elimina todas las conexiones ssh. Sinceramente sería muy fácil.

Agregarías algo a ~/.profile o ~/.bashrc que diga algo como

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

o entiendes la idea.

Respuesta2

Usar ForceCommanden sshd_config. Está garantizado que se ejecutará después de iniciar sesión:

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

Si sólo necesita acceso al shell, esto es suficiente. Si también necesita SFTP o SCP, debe modificarlo un poco.

información relacionada