LDAP の SSH ユーザーを SSH 要塞上の 1 つのコマンドのみに制限する

LDAP の SSH ユーザーを SSH 要塞上の 1 つのコマンドのみに制限する

Centos 7 サーバーのプライベート ネットワークがあります。各サーバーには SSH 要塞経由でのみアクセスできます。さらに、これらのサーバーはすべて SSSD を使用して、SSH ユーザーのキーを LDAP ディレクトリに対して認証します。

キーは LDAP ディレクトリに対して認証されるため、標準ファイルはありませんauthorized_keys。標準authorized_keysファイルの代わりに、バイナリは/usr/bin/sss_ssh_authorizedkeysLDAP に対するクエリをファイルsshdとしてフォーマットされたファイルにパイプしますauthorized_keysが、実際にはファイルではありません。したがって、RSA キーをエントリにバインドしてユーザーを特定のコマンドに制限することはcommands=" ... "、私の知る限り不可能です。

SSH ユーザーは、次のコマンドを使用して、要塞を介してワークステーションに認証できます。

ssh -A -l [email protected] joes.workstation.ip -o ProxyCommand="ssh -l [email protected] -q bastion.ip nc joes.workstation.ip %p"

残念ながら、彼らは要塞サーバー上のセッションに SSH で接続することもできますが、これは許可してほしくありません。

現在のツール(SSSD、SSHD、LDAPディレクトリ)を使用してSSHユーザーが要塞を通過できるようにする方法はあるでしょうか?の中へ要塞?

答え1

sssdこの問題に遭遇したとき、グループごとに構成を設定できる のバージョンはまだ開発中でした。

最終的に、ディレクティブの下にForceCommandエントリとディレクティブを追加しました。sshd_configMatchAcceptEnv

Match Group [email protected]
  AcceptEnv SomeVariable
  AcceptEnv SomeOtherVariable
  ForceCommand /path/to/some/script/I/wrote

次に、シェル スクリプトで、ssh クライアントから渡された変数を使用して何らかのアクションを実行します。

たとえば、クライアントが次のように呼び出した場合:

$ SomeVariable=foo ssh -i path/to/key -l [email protected] -o SendEnv=SomeVariable bastion.server

スクリプトは環境変数にアクセスしますSomeVariable。任意の言語を使用して環境変数にアクセスし、それを使用して何らかのアクションを実行します。

スクリプトが要塞上のシェル セッションに終了しないように注意してください。

関連情報