RPC で特定のポートが使用されるように構成する方法、および IPSec を使用してそれらのポートをセキュリティで保護する方法

Windows XP のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Windows XP のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響します。 この変更の意味および保護された状態を維持する方法について説明します。

概要
この資料では、RPC で特定の動的ポートの範囲が使用されるように構成する方法と、IPSec (Internet Protocol Security) ポリシーを使用して、その範囲のポートをセキュリティで保護する方法について説明します。既定では、TCP エンドポイントをリッスンする必要がある RPC アプリケーションにポートが割り当てられる際には、RPC ではエフェメラル ポートの範囲 (1024 ~ 5000) のポートが使用されます。この動作により、ネットワーク管理者にとって管理が難しいこれらのポートへのアクセスを制限することができます。この資料では、RPC アプリケーションで使用できるポートの数を減らす方法と、レジストリ ベースの IPSec ポリシーを使用して、これらのポートへのアクセスを制限する方法について説明します。

この資料の手順を使用すると、コンピューター全体にわたる変更が発生し、コンピューターを再起動する必要があります。そのため、ここで説明する手順を実行する場合、最初は運用環境以外の環境で実行して、この変更によって発生する可能性のあるアプリケーションの互換性に関する問題の特定を行うことをお勧めします。
詳細
RPC ポートの再配置、ポートの削減、およびポートへのアクセスの制限を行うには、複数の構成タスクを完了する必要があります。

まず最初に、ファイアウォールや IPSec ポリシーを使用したブロックを行いやすくするために、RPC の動的ポートの範囲を、より小さく管理可能なポート範囲に制限する必要があります。既定では、RPC は、リッスンするポートが指定されていないエンドポイントに対して、ポートを 1024 ~ 5000 の範囲に動的に割り当てます。

: この資料では、5001 ~ 5021 のポートの範囲を使用することで、エフェメラル ポートが使い果たされないようにし、RPC エンドポイントで使用可能なポート数を、3,976 から 20 に削減します。

次に、IPSec ポリシーを作成して、このポートの範囲に対するアクセスを制限し、ネットワーク上のすべてのホストに対するアクセスを拒否する必要があります。

最後に、IPSec ポリシーを更新して、特定の IP アドレスまたはネットワークのサブネットに、ブロックされた RPC ポートへのアクセス許可を付与し、その他すべてを除外することができます。

RPC の動的ポート範囲の構成タスクを始めるには、RPC Configuration Tool (RPCCfg.exe) をダウンロードして、構成するワークステーションまたはサーバーにコピーします。これを行うには、次のマイクロソフト Web サイトを参照してください。IPSec ポリシーの作成に続くタスクを実行するには、Internet Protocol Security Policies Tool (Ipsecpol.exe) をダウンロードして、構成するワークステーションまたはサーバーにコピーします。これを行うには、次のマイクロソフト Web サイトを参照してください。: Microsoft Windows XP またはそれ以降のバージョンの Windows オペレーティング システム用に IPSec ポリシーを作成するには、Ipseccmd.exe を使用します。Ipseccmd.exe は、Windows XP サポート ツールに含まれています。IPseccmd.exe の構文および使用方法は、Ipsecpol.exe の構文および使用方法と同じです。Windows XP サポート ツールの関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
838079Windows XP Service Pack 2 サポート ツール

RPCCfg.exe を使用して RPC の動的ポートの範囲を変更し、縮小する

RPCCfg.exe を使用して RPC の動的ポートの範囲を変更し、縮小するには、次の手順を実行します。
  1. 構成するサーバーに RPCCfg.exe をコピーします。
  2. コマンド プロンプトで、「rpccfg.exe -pe 5001-5021 -d 0」と入力します。
    : この範囲内のポートは他のアプリケーション用に割り当てられることは少ないため、このポートの範囲を RPC のエンドポイントで使用することをお勧めします。既定では、RPC はエンドポイントの割り当てポートとして 1024 ~ 5000 のポートの範囲を使用しますが、この範囲のポートは、すべての Windows ソケット アプリケーション用に Windows オペレーティング システムによって動的に割り当てられるポートでもあり、リモート システムへの発信呼び出しを多数行うターミナル サーバーや中間層サーバーなどの高負荷のサーバーでは、使い果たされる可能性があります。

    たとえば、Internet Explorer で Web サイトのポート 80 に接続すると、サーバーからの応答は 1024 ~ 5000 の範囲のポートでリッスンされます。他のリモート サーバーに対して発信呼び出しを行う中間層の COM サーバーでも、その呼び出しに対する返信の着信でこの範囲のポートが使用されます。RPC でエンドポイント用に使用されるこのポートの範囲を、5001 からのポートの範囲に移動すると、これらのポートが他のアプリケーションによって使用される可能性を低減できます。
    Windows オペレーティング システムでのエフェメラル ポートの使用状況の詳細については、次のマイクロソフト Web サイトを参照してください。

IPSec またはファイアウォール ポリシーを使用して、影響を受けるホスト上の攻撃を受けやすいポートへのアクセスをブロックする

以下のコマンドでは、パーセント記号 (%) で囲まれたテキストはすべてコマンド内でテキストに置き換えるためのもので、IPSec ポリシーを作成するユーザーが入力する必要があります。たとえば、%IPSECTOOL% というテキストは、このポリシーを作成するユーザーが以下のように置き換える必要があります。
  • Windows 2000 では、%IPSECTOOL% を ipsecpol.exe で置き換えます。
  • Windows XP またはそれ以降のバージョンの Windows では、%IPSECTOOL% を ipseccmd.exe で置き換えます。
IPSec を使用してポートをブロックする方法の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
813878IPSec を使用して特定のネットワーク プロトコルとポートをブロックする方法

すべての IP アドレスに関して RPC エンドポイント マッパーへのアクセスをブロックする

すべての IP アドレスに関して RPC エンドポイント マッパーへのアクセスをブロックするには、次の構文を使用します。

: Windows XP およびそれ以降のオペレーティング システムでは Ipseccmd.exe を使用します。Windows 2000 では Ipsecpol.exe を使用します。
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
: このコマンド内で %IPSECTOOL% というテキスト自体を入力しないでください。%IPSECTOOL% は、コマンド内でユーザーが任意に入力する必要のある部分を表しています。たとえば、Windows 2000 で TCP 135 にアクセスする着信をすべてブロックするには、Ipsecpol.exe のあるディレクトリで次のコマンドを入力します。
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
Windows XP およびそれ以降のオペレーティング システムで TCP 135 にアクセスする着信をすべてブロックするには、Ipseccmd.exe のあるディレクトリで次のコマンドを入力します。
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK

すべての IP アドレスに関して RPC の動的ポートの範囲へのアクセスをブロックする

すべての IP アドレスに関して RPC の動的ポートの範囲へのアクセスをブロックするには、次の構文を使用します。

: Windows XP およびそれ以降のオペレーティング システムでは Ipseccmd.exe を使用します。Windows 2000 では Ipsecpol.exe を使用します。
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP %PORT% Rule" -f *=0:%PORT%:TCP -n BLOCK
: このコマンド内で %IPSECTOOL% と %PORT% というテキスト自体を入力しないでください。%IPSECTOOL% と %PORT% は、コマンド内でユーザーが任意に入力する必要のある部分を表しています。たとえば、Windows 2000 のホストで TCP 5001 にアクセスする着信をすべてブロックするには、次のコマンドを入力します。
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
Windows XP およびそれ以降の Windows オペレーティング システムのホストで TCP 5001 への着信アクセスをすべてブロックするには、次のコマンドを入力します。
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
ブロックする必要のある各 RPC ポートに対して、このコマンドを実行します (コマンド内のポート番号を変更してください)。ブロックする必要のあるポートの範囲は、5001 ~ 5021 です。

: 規則名 (-r スイッチ) とフィルター (-f スイッチ) の両方でポート番号を変更することを忘れないようにしてください。

省略可能: RPC エンドポイント マッパーへのアクセスが必要な場合に、特定のサブネットに対してアクセス許可を付与する

特定のサブネットに対して、制限された RPC ポートへのアクセス許可を付与する必要がある場合、まず、既にアクセスをブロックした RPC エンドポイント マッパーへのアクセス許可をそれらのサブネットに付与する必要があります。特定のサブネットに、RPC エンドポイント マッパーへのアクセス許可を付与するには、次のコマンドを使用します。
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP 135 from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:135:TCP -n PASS
: このコマンドでは以下の事項が適用されます。
  • %IPSECTOOL% は使用するコマンド (ipsecpol.exe または ipseccmd.exe) を表します。使用するコマンドは、構成対象のオペレーティング システムによって異なります。
  • %SUBNET% は、アクセス許可を付与するリモート IP サブネットを表します (10.1.1.0 など)。
  • %MASK% は、使用するサブネット マスクを表します (255.255.255.0 など)。

    たとえば、次のコマンドを使用すると、すべてのホストで、10.1.1.0/255.255.255.0 サブネットから TCP 135 ポートへの接続が可能になります。その他のすべてのホストは、既にこのポートに対して作成した既定のブロックを行う規則によって、接続が拒否されます。
    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 135 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:135:TCP -n PASS

省略可能: 新しい RPC の動的ポートの範囲へのアクセスが必要な場合に、特定のサブネットに対してアクセス許可を付与する

既に RPC エンドポイント マッパーへのアクセス許可が付与されている各サブネットに、新しい RPC の動的ポートの範囲 (5001 ~ 5021) 内のポートすべてに対するアクセス許可も付与します。

サブネットが RPC エンドポイント マッパーには到達でき、動的ポートの範囲には到達できないようにすると、アプリケーションの応答が停止するなどの問題が発生する場合があります。

次のコマンドを使用すると、特定のサブネットに対して、新しい RPC の動的ポートの範囲のポートへのアクセス許可が付与されます。
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP %PORT% from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:%PORT%:TCP -n PASS
: このコマンドでは以下の事項が適用されます。
  • %IPSECTOOL% は使用するコマンド (ipsecpol.exe または ipseccmd.exe) を表します。使用するコマンドは、構成対象のオペレーティング システムによって異なります。
  • %PORT% は、アクセス許可を付与する動的ポートの範囲を表します。
  • %SUBNET% は、アクセス許可を付与するリモート IP サブネットを表します (10.1.1.0 など)。
  • " %MASK% は、使用するサブネット マスクを表します (255.255.255.0 など)。

    たとえば、次のコマンドを使用すると、すべてのホストで、10.1.1.0/255.255.255.0 サブネットから TCP 5001 ポートへの接続が可能になります。その他のすべてのホストは、既にこのポートに対して作成した既定のブロックを行う規則によって、接続が拒否されます。
    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 5001 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:5001:TCP -n PASS
: このコマンドは、新しい RPC の動的ポートの範囲の各ポートおよび各サブネットごとに実行する必要があります。

IPSec ポリシーを割り当てる

: ここに記載されているコマンドは、実行後すぐに有効になります。

構成した RPC ポートに関して、ブロックを行う規則と許可する規則 (省略可能) をすべて作成したら、次のコマンドを使用してポリシーを割り当てます。
%IPSECTOOL% -w REG -p "Block RPC Ports" –x
: ポリシーの割り当てをすぐに解除するには、次のコマンドを使用します。
%IPSECTOOL% -w REG -p "Block RPC Ports" –y
: ポリシーをレジストリから削除するには、次のコマンドを使用します。
%IPSECTOOL% -w REG -p "Block RPC Ports" -o
行った変更を有効にするにはホストを再起動する必要があります。

  • RPC 構成の変更内容を有効にするには、再起動する必要があります。
  • IPSec ポリシーは、変更するとすぐに有効になり、再起動は必要ありません。
ワークステーションまたはサーバーの再起動後、ncacn_ip_tcp プロトコル シーケンスを使用し、バインドする特定の TCP ポートを指定しない RPC インターフェイスでは、RPC サーバー起動時に RPC ランタイムによって、この範囲からポートが割り当てられます。

: サーバーで必要な TCP ポートの数が 20 を超える場合があります。rpcdump.exe コマンドを使用すると、TCP ポートにバインドされる RPC エンドポイントの数を算出し、必要に応じてこの数を増やすことができます。RPC Dump ツールの入手方法の詳細については、次のマイクロソフト Web サイトを参照してください。
プロパティ

文書番号:908472 - 最終更新日: 11/05/2009 10:06:59 - リビジョン: 6.0

Microsoft Windows Server 2003 Service Pack 1, Microsoft Windows 2000 Server SP4, Microsoft Windows XP Home Edition SP2, Microsoft Windows XP Media Center Edition 2005, Microsoft Windows XP Professional SP2, Microsoft Windows XP Tablet PC Edition 2005

  • kbinfo KB908472
フィードバック