我目前正在构思一个有趣的 CTF 挑战。然而,这个挑战的主要障碍之一是允许用户在 ssh 连接上停留特定时间。
本质上,用户必须使用挑战用户通过 SSH 进入 Linux VM。他们有 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"
如果您只需要 shell 访问,这就足够了。如果您还需要 SFTP 或 SCP,则需要稍微调整一下。