特定の Linux ユーザーのアクティブな SSH 接続に時間制限を設定することは可能ですか?

特定の Linux ユーザーのアクティブな SSH 接続に時間制限を設定することは可能ですか?

私は現在、楽しい CTF チャレンジのアイデアに取り組んでいます。しかし、このチャレンジの大きなハードルの 1 つは、ユーザーに SSH 接続の一定時間を許可することです。

基本的に、ユーザーはチャレンジ ユーザーを使用して Linux VM に SSH で接続する必要があります。SSH セッションが終了してフラグ ピースの位置が入れ替わるイベントがトリガーされる前に、特定の順序で並べられた 10 個のフラグ ピースを 10 分以内に見つける必要があります。この時点で、ユーザーは新しい 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 も必要な場合は、少し調整する必要があります。

関連情報