私は現在、楽しい 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 も必要な場合は、少し調整する必要があります。