私は自分の RPC フレームワークを実装しており、ほとんどの作業は完了していますが、auth_unix を確認するにはどうすればよいですか? データの構造はhttp://www.faqs.org/rfcs/rfc1050.htmlで定義されています9.2 UNIX 認証ですが、ユーザーを確認するにはどうすればよいですか?
1 に答える
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は最も安全なプロトコルではなく、信頼できないクライアントに提供されるサービスには一般的に推奨されません。