質問
独自のRPCフレームワークを実装しており、ほとんどの処理は完了していますが、auth_unixを確認するにはどうすればよいですか?データの構造は http://www.faqs.org/rfcs/rfc1050で定義されています。 html 9.2 UNIX認証ですが、ユーザーを確認するにはどうすればよいですか?
解決
UIDおよびGIDは、サーバー上のUIDおよびGIDと比較され、それらの信頼性が検証されます。これらのIDは、NISまたはその他の機能を使用してUNIXシステム間で共有できます。その後リモートシステムで実行されるものはすべて、その有効なUIDおよびGIDの下で実行されます。
サーバーの背後にあるアプリケーションはさらに認証を実装できますが、AUTH_UNIXはそれ自体ではユーザーを認証しません。提供されたUIDとGIDを信頼します。
セクション9.3から:
9.3 DES Authentication
UNIX authentication suffers from two major problems:
(1) The naming is too UNIX oriented.
(2) There is no verifier, so credentials can easily be faked.
DES authentication attempts to fix these two problems.
Unix認証を使用する場合、メッセージは信頼できるホストから発信され、呼び出しを発信する何かをする機会が得られる前にユーザーを認証するための何らかのメカニズムが存在すると想定できます。
この場合、ユーザーの資格情報を確認するのはアプリケーション次第です。発信元のマシン名も提供されるため、発信元のIPアドレスがそれに一致することを確認し、そのアドレスにのみ応答することができます。これには、DNSキャッシュポイズニング攻撃に対する明らかな脆弱性があります。また、これをDHCPまたはNATでうまく再生することは、読者の演習として残されています;-}
これは、UIDとGIDを信頼するか、RPCライブラリの上にあるアプリケーション内で追加の検証を行う以外に選択肢がないことを意味します。 RFCでは、より安全な認証メカニズムについて説明しています。ただし、Sun RPCは最も安全なプロトコルではないため、一般的に信頼できないクライアントに提供されるサービスには推奨されません。