Можно ли установить ограничение по времени активного SSH-подключения для конкретного пользователя Linux?

Можно ли установить ограничение по времени активного SSH-подключения для конкретного пользователя Linux?

В настоящее время я работаю над идеей для забавного CTF-челленджа. Однако одним из главных препятствий этого челленджа является предоставление пользователю определенного количества времени на ssh-подключении.

По сути, пользователь должен подключиться по ssh к виртуальной машине Linux, используя пользователя challenge. У них есть 10 минут, чтобы найти 10 частей флага, которые должны быть расположены в определенном порядке, прежде чем сеанс SSH будет завершен, что вызовет событие, которое меняет расположение частей флага. В этот момент пользователь должен открыть новое соединение SSH и продолжить поиск.

Основная проблема здесь — ограничение времени, которым располагает пользователь. Возможно ли это вообще с SSH? Если да, то как мне этого добиться?

Заранее благодарю за любую помощь.

решение1

Хм, сделать это ЧЕРЕЗ SSH было бы непозволительно сложно. Я думаю, что самым простым способом было бы запустить фоновую программу каждый раз, когда вы входите в ssh-аккаунт с определенной учетной записью, которая через 10 минут убивает все ssh-соединения. Честно говоря, это было бы очень просто.

Вам нужно добавить что-то в ~/.profile или ~/.bashrc, что-то вроде

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

или вы поняли.

решение2

Использовать ForceCommandв sshd_config. Гарантируется, что он будет выполнен после входа в систему:

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

Если вам нужен только доступ к оболочке, этого достаточно. Если вам также нужен SFTP или SCP, вам нужно немного подправить его.

Связанный контент