Share via


RPC over HTTP セキュリティ

RPC over HTTP では、標準の RPC セキュリティに加えて 3 種類のセキュリティが提供されます。その結果、RPC over HTTP トラフィックは RPC によって 1 回保護され、RPC over HTTP によって提供されるトンネリング メカニズムによって二重に保護されます。 標準的な RPC セキュリティ メカニズムの詳細については、「セキュリティ」を参照してください。 RPC over HTTP トンネリング メカニズムは、次の方法で通常の RPC セキュリティに追加されます。

  • IIS を通じてセキュリティを提供します (RPC over HTTP v2 でのみ使用できます)。
  • SSL 暗号化と RPC プロキシ検証 (相互認証) を提供します。 また、RPC over HTTP v2 でのみ使用できます。
  • サーバー ネットワーク上のどのマシンが RPC over HTTP 呼び出しの受信を許可するかを示す RPC プロキシ レベルの制限が提供されます。

これらの 3 つのセキュリティ機能については、以下のセクションで詳しく説明します。

IIS 認証

RPC over HTTP では、IIS の通常の認証メカニズムを利用できます。 RPC プロキシの仮想ディレクトリは、次の IIS MMC スナップインの既定の Web サイトの RPC ノードを使用して構成できます。

Screenshot showing the Rpc node under the Default Web Site in the IIS MMC snap-in.

IIS は、匿名アクセスを無効にし、RPC プロキシ用の仮想ディレクトリへの認証を要求するように構成できます。 これを行うには、RPC ノードを右クリックし、[プロパティ] を選択します。 以下に示すように [ディレクトリ セキュリティ] タブを選択し、[認証とアクセス制御] グループの [編集] ボタンをクリックします。

Screenshot showing the RPC Properties dialog box.

RPC プロキシ仮想ディレクトリで匿名アクセスが許可されている場合でも RPC over HTTP を使用できますが、Microsoft ではセキュリティ上の理由から、その仮想ディレクトリへの匿名アクセスを無効にすることを強くお勧めします。 代わりに、RPC over HTTP では、基本認証、Windows 統合認証、またはその両方を有効にします。 基本認証または Windows 統合認証を必要とする RPC プロキシに対して認証できるのは RPC over HTTP v2 だけであることに注意してください。[匿名アクセスを許可しない] が無効になっている場合、RPC over HTTP v1 は接続できません。 RPC over HTTP v2 はより安全で堅牢な実装であるため、それをサポートする Windows のバージョンを使用すると、インストールのセキュリティが向上します。

Note

既定では、RPC プロキシ仮想ディレクトリは匿名アクセスを許可するようにマークされます。 ただし、RPC over HTTP v2 の RPC プロキシは、既定では認証されていない要求を拒否します。

 

トラフィックの暗号化

RPC over HTTP では、RPC over HTTP クライアントと RPC プロキシ間のトラフィックを SSL で暗号化できます。 RPC プロキシと RPC over HTTP サーバーの間のトラフィックは、通常の RPC セキュリティ メカニズムを使用して暗号化され、(クライアントと RPC プロキシ間の SSL が選択されている場合でも) SSL は使用されません。 これは、トラフィックのその部分が組織のネットワーク内およびファイアウォールの背後で移動するためです。

RPC over HTTP クライアントと RPC プロキシ (通常はインターネット経由) の間のトラフィックは、RPC 用に選択された暗号化メカニズムに加えて、SSL を使用して暗号化できます。 この場合、ルートのインターネット部分のトラフィックは二重に暗号化されます。 RPC プロキシを通じてトラフィックを暗号化すると、境界ネットワーク内の RPC プロキシまたはその他のマシンが侵害された場合に備え、セカンダリ防御が提供されます。 RPC プロキシはセカンダリ暗号化レイヤーの暗号化を解除できないため、RPC プロキシは送信されるデータにアクセスできません。 詳細については、「RPC over HTTP 展開の推奨事項」を参照してください。 SSL 暗号化は、RPC over HTTP v2 でのみ使用できます。

特定のコンピューターへの RPC over HTTP 呼び出しの制限

IIS のセキュリティ構成は、許可されているコンピューターとポートの範囲に基づいています。 RPC over HTTP を使用する機能は、IIS を実行しているコンピューター上の 2 つのレジストリ エントリと RPC プロキシによって制御されます。 最初のエントリは、RPC プロキシ機能を切り替えるフラグです。 2 つ目は、プロキシが RPC 呼び出しを転送できるコンピューターのオプションの一覧です。

既定では、RPC プロキシに連絡して RPC over HTTP 呼び出しをトンネリングするクライアントは、RPC プロキシと同じコンピューター上で実行されている RPC over HTTP サーバー プロセス以外の RPC サーバー プロセスにはアクセスできません。 ENABLED フラグが定義されていないか、0 の値に設定されている場合、IIS は RPC プロキシを無効にします。 ENABLED フラグが定義され、0 以外の値に設定されている場合、クライアントは IIS を実行しているコンピューター上の RPC over HTTP サーバーに接続できます。 クライアントが別のコンピューター上の RPC over HTTP サーバー プロセスにトンネリングできるようにするには、IIS コンピューターの RPC over HTTP サーバーの一覧にレジストリ エントリを追加する必要があります。

RPC サーバーは、RPC over HTTP でリッスンするように RPC を具体的に要求しない限り、RPC over HTTP 呼び出しを受け入れることができません。

次の例は、クライアントがインターネット経由でサーバーに接続できるようにレジストリを構成する方法を示しています。

HKEY_LOCAL_MACHINE\
   Software\Microsoft\Rpc\RpcProxy\Enabled:REG_DWORD
   Software\Microsoft\Rpc\RpcProxy\ValidPorts:REG_SZ

ValidPorts エントリは、IIS RPC プロキシが RPC 呼び出しを転送できるコンピューターの一覧と、RPC サーバーへの接続に使用する必要があるポートを含む REG_SZ エントリです。 REG_SZ エントリは次の形式です: Rosco:593;Rosco:2000-8000;Data*:4000-8000。

この例では、IIS はポート 593 と 2000 から 8000 のサーバー "Rosco" に RPC over HTTP 呼び出しを転送できます。 また、名前が "Data" で始まる任意のサーバーに呼び出しを送信することもできます。 これは、ポート 4000 から 8000 に接続します。 さらに、RPC プロキシは、RPC over HTTP サーバー上の指定されたポートにトラフィックを転送する前に、そのポートをリッスンする RPC サービスとの特別なパケット交換を実行して、HTTP 経由で要求を受け入れることを確認します。

これらの設定例に基づく例では、RPC サービスがサーバー "Data1" 上のポート 4500 でリッスンしていますが、RpcServerUseProtseq* 関数のいずれかを ncacn_http で呼び出していない場合、要求は拒否されます。 この動作により、構成エラーが原因で開かれたポートでリッスンするサーバーの追加の保護が強化されます。サーバーが RPC over HTTP でリッスンすることを具体的に要求しない限り、ファイアウォールの外部から発信された呼び出しを受信することはありません。

ValidPorts キーのエントリは、クライアントが要求した RPC over HTTP サーバーと完全に一致している必要があります (大文字と小文字は区別されません)。 処理を効率化するために、RPC プロキシは、RPC over HTTP クライアントによって提供される名前の正規化を行いません。 したがって、クライアントが rosco.microsoft.com を要求し、ValidPorts に Rosco のみが含まれている場合、両方の名前が同じコンピューターを参照している場合でも、RPC プロキシは名前と一致しません。 さらに、Rosco の IP アドレスが 66.77.88.99 で、クライアントが 66.77.88.99 を要求しても ValidPorts キーに Rosco のみが含まれている場合、RPC プロキシは接続を拒否します。 クライアントが名前または IP アドレスで RPC over HTTP サーバーを要求する場合は、両方を ValidPorts キーに挿入します。

Note

RPC では IPv6 が有効になっていますが、RPC プロキシは ValidPorts キーの IPv6 アドレスをサポートしていません。 IPv6 を使用して RPC プロキシと RPC over HTTP サーバーを接続する場合は、DNS 名のみ使用できます。

 

IIS は起動時に Enabled レジストリ エントリと ValidPorts レジストリ エントリを読み取ります。 さらに、RPC over HTTP は ValidPorts キーの内容を約 5 分ごとに再読み込みします。 ValidPorts エントリが変更された場合、変更は 5 分以内に実装されます。

RPC over HTTP v1: Web サービスを停止し、Internet Service Manager を使用して再起動し、レジストリ エントリの新しい値を実装する必要があります。