SSHログイン用の元のユーザーを記録または制限します。

SSHログイン用の元のユーザーを記録または制限します。

SSHログインの元のユーザーを記録および/または制限することは可能ですか?

たとえば、

user1@server1server2でログインしてくださいuser2

またでuser3@server1ログインしてください。server2user2

user1「ソースユーザー」とは、以上を意味しますuser3

user1@server1どのセッションがによって開始され、どのセッションがによって開始されたかを追跡できるようにしたいですuser3@server1

その目的は、複数のユーザーがこのuser2アカウントを使用してサーバー2などのプロセスを管理できるようにすることです。 (これはセキュリティに影響を与えることを知っていますが、問題の一部はこれらのトラップの程度を評価することです。)

マニュアルページに記載されているように、.NETsshd_config(5)の設定オプションをsshd使用してAllowUsers特定のユーザーにアクセスを制限することができますsshd_config

ユーザーを許可

このキーワードの後に​​は、スペースで区切られたユーザー名パターンのリストが続きます。指定した場合、これらのパターンのいずれかに一致するユーザー名のみがログインを許可されます。ユーザー名のみが有効で、数値のユーザーIDは認識されません。デフォルトでは、すべてのユーザーはログインが許可されます。パターンがUSER @ HOST形式の場合は、USERとHOSTを別々に確認して、特定のホスト上の特定のユーザーへのログインを制限します。許可/拒否ディレクティブは、DenyUsers、AllowUsers、DenyGroup、最後にAllowGroupsの順序で処理されます。

ただし、USER上記のマニュアルページで指定されている内容は、ターゲットシステムのユーザー名を説明しているようです(server2例では)。

AllowUsersオプションをに設定してこれをテストした結果、->でログインできることがわかりuser2@server1ました。 user1@server1user2@server2

また、ログには元のユーザーが表示されないようです。

これは ->/var/log/secureでログインした後の RHEL6 のログです。user1@server1user2@server2

11月17日 16:14:59 server2 sshd[28349]: /proc/self/oom_score_adjを0に設定

11月17日 16:14:59 server2 sshd[28349]: 10.1.2.3 ポート 36508 で接続

11月17日 16:14:59 server2 sshd[28349]: 一致する RSA キーが見つかりました: aa:bb:cc:dd:ee:ff:gg:..

11月17日 16:14:59 server2 sshd[28350]: 10.1.2.3 ポート 36508 ssh2 で user2 の公開鍵が遅延しました。

11月17日 16:14:59 server2 sshd[28349]: 一致する RSA キーが見つかりました: aa:bb:cc:dd:ee:ff:gg:..

11月17日 16:14:59 server2 sshd[28349]: 10.1.2.3 ポート 36508 ssh2 で user2 の公開鍵を受け入れます。

11月17日 16:14:59 server2 sshd[28349]: pam_unix(sshd:session): (uid=0) でユーザー user2 のセッションを開く

11月17日 16:14:59 server2 sshd[28349]: ユーザーサブプロセスの pid は 28351 です。

では、方法はないだろうか?

sshd(a)SSH接続を実行しているソースユーザーを追跡するためにロギングまたは動作を変更しましたか?

(b) ソースユーザーに基づいて接続を制限するように sshd を制限しますか?

ベストアンサー1

短い答えは「いいえ」です。サーバーは、サーバー側の観点から有効なログインを許可します。

ただし、必要なものを達成するためのいくつかの考えられる解決策があります。次の事項がお客様の要件を満たしていることをテストして確認します。

ノートこれは「一般」ユーザーにとっては十分であり、クライアントも制御する必要があります。経験豊富なユーザーは、CLIENTUSER以下に使用する変数を偽にする方法を見つけるでしょう。

AcceptEnv次のディレクティブを使用して、/etc/ssh/sshd_configCLIENTUSERという変数を許可できます。

AcceptEnv CLIENTUSER

次のステップは、ユーザーがログインシェルのコマンドを使用して強制的にログインできるようにすることです。たとえば、次のようになります。

ForceCommand /bin/bash -l

sshd サービスを再起動し、/etc/profile に以下を追加します。

if [ -z "$CLIENTUSER" ] || [ "$CLIENTUSER" != "user3" ] && [ ! -z "$SSH_CLIENT" ]
then
       echo 'Client logon not allowed'
       logout
fi

上記のコマンドは、変数を送信しないか、および値が異なる変数をCLIENTUSER送信するすべてのCLIENTUSERクライアントをログアウトしますuser3

次のクライアントコマンドラインを使用してこれをテストできます。

$ ssh user2@host
Client logon not allowed

$ CLIENTUSER=user3 ssh -o "SendEnv CLIENTUSER" user2@host
user2@host $

ご覧のとおり、CLIENTUSERこれはコマンドラインを介して簡単に偽造できます。これを防ぐには、次のように追加します。顧客` / etc /設定ファイル:

declare -r CLIENTUSER="$USER"

CLIENTUSERユーザーが変数の値を変更しようとすると、次のエラーが発生します。

bash: CLIENTUSER: readonly variable

おすすめ記事