
一部のゲームトンネリングサービスプロバイダは、ログイン時に顧客のアカウントを情報画面に制限し、すべての入力が無視されるのを見ました。 Ctrl + C SSHセッションを閉じて切断します。これは本質的にユーザーを刑務所に閉じ込めますが、トンネルは維持します。
どうなったか気になりますね。これを行う方法を知っている人はいますか?
答え1
ユーザーのログインシェルを次のように非常に制限的に設定すると、これを達成できるようです。睡眠ダミーシェル「。ホームページを引用すると、
これは、接続を開いたままにするためにログインシェル(LinuxまたはUnix)として使用できますが、対話型シェルを持たない単純な何もしない永久省電力プログラムです。これは、SSHトンネルでのみ使用するユーザー用のSSHアカウントを作成して、サーバー用の暗号化されたトンネルを作成するために使用します。
ほとんどの制限されたシェルでは、まだSSHアカウントでローカルコマンドを実行できます。プログラムの実行が終了するとトンネルが閉じるため、アカウントシェルを同様のもの
/bin/false
(または他の単純なプログラム)に設定することは通常は機能しません。 Sleep Dummy Shellは、ユーザーが実行を終了するかトンネルが閉じるまで、単にスリープモードのままです。
ご覧のとおり、sleepshell.c
約20行のCコード操作の一部を実行する簡単なプログラムです。
これが十分に安全かどうかはわかりません。ssh <server> /bin/bash
例えば、これが何を使用するのか、それと似ているのですか?
答え2
bashをシェルとして使用してこれを行うための迅速で簡単な方法がありますが、それほど安全ではありません。 (過去数年間、authorized_keys "command"ディレクティブとBashの環境変数でいくつかのセキュリティ上の欠陥が見つかりました。別のバグが隠されていない限り、今は安全です。
これを安全に実行したいが、まだbashで出力を表示するスクリプトを作成したい場合は、bashスクリプトの出力を実行して表示するシェルで小さなCプログラムを作成することをお勧めします。 Cプログラムは引数を無視し、環境を安全なデフォルト値にリセットしてから、STDINが/ dev / nullのbashスクリプトを分岐/exec()する必要があります。これにより、ユーザーはスクリプトと対話する方法がまったくありません。必要に応じて例を提供できます。