SSHサーバーにアクセスする必要がある人がいますが、プログラムへのアクセスを制限したいです。彼らが使用する必要があるのは、別のサーバーにログインするためのsshです。私のサーバーは、別のサーバーへのアクセスポイントです。このユーザーに、他のネットワークで取得するために必要なsshプログラム以外のプログラムを実行させたくありません。
理想的には、ユーザーがログインすると、別のSSHログインにリダイレクトされ、他に何かを行うためのその他の即時オプションはありません。
Rootユーザー権限を持つSSHユーザーはいません。
これをどのように設定できますか?私は彼らのbashrcファイルでそれができると考えています。ログイン時に実行するセカンダリログインスクリプトを作成します。ユーザーがSSHサーバーにログインし、ログイン時にbashrcファイルを無視する方法はありますか?考慮すべきより良い方法はありますか?
sshd_config
でForceCommand
ディレクティブを使用することを検討してください。たとえば、 これら を使用して、ユーザーのgroupsを一連のサーバーに強制します。
Match Group group1
ForceCommand ssh -t group1.fqdn
Match Group="*,!local,!group2,!root"
ForceCommand ssh -t group3.fqdn
次を使用できます。
Match User foo
ForceCommand ssh -t target-Host
ユーザーのログインシェルを、2番目のエンドポイントへのssh構文を含むbashまたはshではなく、シェルスクリプトに設定するだけです。すべてのログインは、ssh構文で-sを使用してシェルを明示的に定義しない限り、要求どおりにリダイレクトします。
さまざまな方法でBASHRCの制限から抜け出すことができます。悪意があると思われる場合は、ログイン時に代替シェルを指定できないようにしてください。
できないようにユーザーsigintをトラップします Ctrl + C sshの終了時に終了コード0をチェックしてください。そうでない場合は完全に終了するか、無期限に再試行してください。あなたの選択。
ユーザーにProxyCommand
をローカルで使用するように強制することにより、ユーザーのサーバーをSSH bastion Host として扱うことで、これをある程度透過的に行うことができます。
サーバー(要塞)で、sshd_config
で次のようにnc
にユーザーを制限します。
Match User restricted_usr
ForceCommand nc -w 600 restricted_usr_vm 22
~/.ssh/config
のクライアント(OpenSSH
と仮定):
Host myserver
ProxyCommand ssh bastion nc -w 600 restricted_usr_vm 22
(Windowsユーザーは PuTTY経由でsshプロキシを使用 PuTTYのplink
を使用することができます)。
ただし、ForceCommand
のおかげで、sshコマンドは無視されると確信しています。 ProxyCommand ssh bastion I am a bannana
は同じ効果があります。ユーザーからの直接接続(ProxyCommand
なし)は、restricted_usr_vmへの生のSSHダンプになります。
別の回答へのコメント で説明したように、ForceCommand
は要塞ホストへのSSHキーアクセスの管理を非常に困難にします。私は2つの簡単な解決策を考えることができます:(1)ターゲットホストへのアクセスを許可する要塞にそのユーザーのパスワードなしのSSHキーをインストールして要塞でのユーザーのcrontabの実行scp restricted_usr_vm:.ssh/authorized_keys ~/.ssh/
または(2)そのファイルのアップロードを許可するWebフォーム(GitHubのような)を作成します。 (3)NFSも機能しますが、.ssh
ディレクトリがルートを持つ誰かによって侵害される可能性があるため、私はあまり好きではありません。 (または同じUID)をマウントするシステムで。
非常によく似たServerFaultの質問 ユーザー名ベースのSSHプロキシ に 非常によく似た答え (ProxyCommandの詳細)を投稿しました。
ForceCommand ssh -t restricted_usr_vm
はタイムアウトをより適切に処理し、ssh -t
はちょっと不格好です(そして、おそらく過去には信頼性が低い場合があるため)。また、scp
のようなものはProxyCommand
を介して完全に機能するが、このメソッドでは機能しないと推測しています。