В настоящее время я работаю над идеей для забавного 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, вам нужно немного подправить его.