メインコンテンツまでスキップ

9. Host-Based Authentication: "hostbased" (ホストベース認証: "hostbased")

一部のサイトでは、ユーザーがどのホストから来ているか、およびリモートホスト上のユーザー名に基づいて認証を許可したいと考えています。この形式の認証は高セキュリティサイトには適していませんが、多くの環境では非常に便利です。この形式の認証はオプションです。使用する場合、一般ユーザーが秘密ホスト鍵を取得しないように特別な注意を払う必要があります。

クライアントは、次のメッセージを送信することで、この形式の認証をリクエストします。これは UNIX の "rhosts" および "hosts.equiv" スタイルの認証に似ていますが、クライアントホストのIDがより厳密にチェックされる点が異なります。

この方法は、クライアントがクライアントホストの秘密鍵で作成された署名を送信することで機能し、サーバーはそのホストの公開鍵でチェックします。クライアントホストのIDが確立されると、サーバーとクライアント上のユーザー名、およびクライアントホスト名に基づいて承認(ただしそれ以上の認証は行わない)が実行されます。

byte      SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "hostbased"
string public key algorithm for host key
string public host key and certificates for client host
string client host name expressed as the FQDN in US-ASCII
string user name on the client host in ISO-10646 UTF-8 encoding [RFC3629]
string signature

'public key algorithm for host key' で使用する公開鍵アルゴリズム名は、トランスポート層仕様 [SSH-TRANS] で定義されています。'public host key and certificates for client host' には証明書が含まれる場合があります。

'signature' の値は、次のデータに対するホスト秘密鍵による署名です。順序は次のとおりです:

string    session identifier
byte SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "hostbased"
string public key algorithm for host key
string public host key and certificates for client host
string client host name expressed as the FQDN in US-ASCII
string user name on the client host in ISO-10646 UTF-8 encoding [RFC3629]

サーバーは、ホスト鍵が実際にメッセージで指定されたクライアントホストに属していること、そのホスト上の指定されたユーザーがログインを許可されていること、および 'signature' 値が指定されたホスト鍵による適切な値の有効な署名であることを検証しなければなりません。クライアントホストのみを認証したい場合、サーバーはクライアントの 'user name' を無視することができます。

可能な限り、サーバーは(信頼できない)ネットワークから取得したネットワークアドレスが指定されたクライアントホスト名と一致することを検証するために追加のチェックを実行することが推奨されます。これにより、侵害されたホスト鍵の悪用がより困難になります。ファイアウォールを通過する接続には特別な処理が必要になる場合があることに注意してください。