WMI、PowerShell、および Windows ファイアウォールIssue この資料では、Windows ファイアウォールでポートを開いてリモート サーバーにアクセスする方法について説明します。 Windows ファイアウォールと DCOM ポート Windows ファイアウォールが有効になっているリモート Windows マシンの場合、ポート 135 を開くだけでは、Discovery がマシンを正常に検出することはできません。MID サーバーがポート 135 を介してリモートサーバー上の RPC のドアをノックすると、リモートマシンは、MID サーバーがリモートサーバー上の DCOM にアクセスするために使用する必要がある (動的) ポートをアナウンスします。リモート コンピューター上の RPC サーバーによってアナウンスされるポートは、ポートの範囲の 1 つです (RPC が静的ポートで実行するように構成されている場合を除く)。 DCOM ポートのデフォルト範囲は次のとおりです。 1025 から 5000 まで: Windows 2000、Windows XP、および Windows Server 2003 49152 から 65535 まで: Windows Server 2008 以降のバージョン、および Windows Vista 以降のバージョン DCOM ポートの範囲が Windows ファイアウォールで開かれていない場合、ディスカバリーは失敗し、WMIRunner - WMI:分類プローブに対する次のエラー応答が返されます。 <error> Authentication failure with the local MID server service credential. </error> <error> Failed to access target system. Please check credentials and firewall settings on the target system to ensure accessibility: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Stack Trace: at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at System.Management.ManagementScope.InitializeGuts(Object o) at System.Management.ManagementScope.Initialize() at System.Management.ManagementObjectSearcher.Initialize() at System.Management.ManagementObjectSearcher.Get() at Microsoft.PowerShell.Commands.GetWmiObjectCommand.BeginProcessing() at System.Management.Automation.Cmdlet.DoBeginProcessing() at System.Management.Automation.CommandProcessorBase.DoBegin() </error> MID サーバーへのポートを開く方法 ServiceNow では、WMI 要件の固有の性質により、MID サーバーアプリケーションホストマシンがすべてのポートでターゲットにアクセスできることを推奨しています (詳細については、「 サーバーの要件 を参照)。ただし、顧客が MID サーバーへのすべてのポートを開かないことを選択した場合は、次の代替ソリューションがあります。 1 - Windows ファイアウォールでポート 135 を開く Windows 2000、XP、Server 2003 の場合: このソリューションは、Windowsファイアウォールに例外を追加することで構成されています。次の手順を実行します: [コントロールパネル]>[Windowsファイアウォール>例外]>[ポートの追加]に移動します。 名前: RPC エンドポイント マッパー - TCP ポート 135ポート: 135TCP Windows Server 2008、Vista、およびそれ以降の場合: このソリューションは、セキュリティが強化されたWindowsファイアウォールにポート135 / RPCを開くルールを追加することで構成されます。次の手順を実行します: [管理ツール] > [セキュリティが強化された Windows ファイアウォール] に移動します。[Inbound Rules] に移動 (右クリック) > [New Rule...][ルールタイプ]:[カスタム]を選択し、[次へ]をクリックします。[プログラム]:[すべてのプログラム]を選択します。[プログラム]: [サービス] で、次の操作を行います。 「カスタマイズ」をクリックします。[このサービスに適用: リモート プロシージャ コール (RPC) - RpcSs] を選択します。「OK」をクリックしてダイアログ・ボックスを閉じます。[Next (次へ)] をクリックします。 [プロトコルとポート]:プロトコルタイプ:TCPを選択します。[プロトコルとポート]:ローカルポート:RPC Endpoint Mapperを選択します。[プロトコルとポート]:[ポートをレポート]を[すべてのポート]のままにして、[次へ]をクリックします。[スコープ]: [このルールが一致するローカル/リモート IP アドレス] を [任意の IP アドレス] のままにして (セキュリティ ポリシーに応じて別の設定が必要な場合があります)、[次へ] をクリックします。[アクション]:[接続を許可する]を選択します。[プロファイル]: [ドメイン]、[プライベート]、および [パブリック] を選択し (セキュリティ ポリシーに応じて異なる設定が必要な場合があります)、[次へ] をクリックします。[名前]: ルールに名前を付け (例: RPC エンドポイント マッパー - TCP ポート 135)、[完了] をクリックします。 他の事前定義されたルールがすでに 135/RPC へのアクセスを許可している可能性があります。これは、ルール File and Printer Sharing - RPC-EPMAP の場合です。 2 – Windowsファイアウォールで標準のDCOMポートへのアクセスを開く Windows 2000、XP、Server 2003 の場合: このソリューションは、Windows ファイアウォールに例外を追加することで構成されています。追加する例外が多数あるため、このスクリプトを実行してエントリを追加します。次の手順を実行します。: ポート 135 が開いていることを確認します (セクション #1 を参照)。コマンドラインを開き、次のように入力します。 FOR /L %I in (1025,1,5000) do netsh firewall add portopening TCP %I "Dcom - TCP Port "%I これにより、ポートごとにエントリが Windows ファイアウォール (3975 エントリ) に追加されます。エントリが多すぎる場合は、セクション#3の手順に従って、DCOMがいくつかのポートのみを使用するようにします。 Windows Server 2008、Vista、およびそれ以降の場合: これを実現するには、いくつかの方法があります。 前のセクションのコマンドを実行して [Windows ファイアウォールの例外] を追加しますが、今回は Windows 2008 の DCOM ポートの範囲を使用します。そのためには、コマンドの(1025,1,5000)を(49152,1,65535)に置き換えます。これにより、ポートごとにエントリが Windows ファイアウォール (16383 エントリ) に追加されます。エントリが多すぎる場合は、セクション#3の次の手順に従って、DCOMがいくつかのポートのみを使用するようにします。セクション#1からセキュリティが強化されたWindowsファイアウォールにルールを追加します。以下の手順に従います。 ポート 135 が開いていることを確認します (セクション #1 を参照)。[管理ツール] > [セキュリティが強化された Windows ファイアウォール] に移動します。[Inbound Rules] に移動 (右クリック) > [New Rule...][ルールタイプ]:[カスタム]を選択し、[次へ]をクリックします。[プログラム]:[すべてのプログラム]を選択します。[プログラム]: [サービス] で、次の操作を行います。 [カスタマイズ...] をクリックします。[すべてのプログラムとサービスに適用] を選択します。「OK」をクリックしてダイアログ・ボックスを閉じます。[Next (次へ)] をクリックします。 [プロトコルとポート]:プロトコルタイプ:TCPを選択します。[プロトコルとポート]:ローカルポート:動的RPCを選択します。[プロトコルとポート]:[ポートをレポート]を[すべてのポート]のままにして、[次へ]をクリックします。[スコープ]: [このルールが一致するローカル/リモート IP アドレス] を [任意の IP アドレス] のままにして (セキュリティ ポリシーに応じて別の設定が必要な場合があります)、[次へ] をクリックします。[アクション]:[接続を許可する]を選択します。[プロファイル]: [ドメイン]、[プライベート]、および [パブリック] を選択し (セキュリティ ポリシーに応じて別の設定が必要な場合があります)、[次へ] をクリックします。[名前]: ルールに名前を付け (例: DCOM - TCP 動的 RPC)、[完了] をクリックします。 3 – 少数のポートのみを使用するように DCOM を構成する (オプション) 100ポートを追加してDCOMを構成します:65000 – 65100: [管理ツール] > [コンポーネント サービス] に移動します。[コンソールルート>コンポーネントサービス] > [コンピューター] > [マイコンピューター] (右クリック) > [デフォルトプロトコル] > [接続指向 TCP/IP] > [プロパティ] に移動します。ポート範囲 65000-65010 を追加します。サーバーを再起動します。セクション#2の手順に従います。Windows 2000、XP、Server 2003 の場合は、コマンドの (1025,1,5000) を (65000,1,65100) に置き換えます。これにより、Windows ファイアウォールに 100 個のエントリが追加されます。 注意: これは非常に低い値であり、ディスカバリー (およびその他のリモートアプリケーション) の実行が遅くなりすぎます。 Related LinksWindows ディスカバリー – リモートマシンでの WMI/Powershell の問題のトラブルシューティング