【Windows OS】リモートの手続きを呼び出す「MS-RPC」とは?Tech TIPS

「MS-RPC」は、リモートのコンピュータ上で稼働するサービスを呼び出すためのプロトコルである。MS-RPCを利用する場合は、まず「ポートマッパー」と呼ばれるポートを呼び出し、実際のサービスを受けるポート番号の通知や認証などを受ける。そのため、実際に利用するポート番号は実行時に動的に変わる。MS-RPCはSMBやCIFS上でも利用されている。ファイアウォールを設定する場合は、MS-RPCのポートだけでなく、SMBやCIFSのポートもフィルタリングする必要がある。

» 2007年06月08日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

【Windows OS】リモートの手続きを呼び出す「MS-RPC」とは?

対象:Windows NT/Windows 2000/Windows XP/Windows Vista、Windows Server 2003


 Windows OSネットワーク環境でよく使われるプロトコルの1つに、「MS-RPC」(Microsoft Remote Procedure Call)がある。Windows OSの基本サービスのほか、例えばExchange Serverなどでもよく使われている重要なプロトコルである。

 ところが、最近ではセキュリティの脆弱性情報などでも目にすることが少なくない。その場合、脆弱性を避けるためにはMS-RPCプロトコルを禁止するという手段が推奨されていたりする。

 しかし、そもそもMS-RPCとは何であるか、その通信メカニズムはどうなっているか、などを知らないとファイアウォールを設定することもできない。本Tech TIPSでは、このMS-RPCについて簡単に説明する。

MS-RPCとは

 MS-RPCとは、分散コンピューティング環境において、リモートのPC上のプログラム(手続き)を呼び出すために開発された「RPC」(Remote Procedure Call)という機能を、Windows OS上に実装したものである。

 元々は「OSF」(Open Software Foundation。ソフトウェアのオープン化を推進する団体)によって規定された「DCE」(Distributed Computing Environment。分散コンピューティング環境)仕様をベースに、マイクロソフトが拡張したものである。

 MS-RPC機能を使えば、ローカルPCで動作するサービスやサブルーチンなどを呼び出すのと同じように、リモートPCで動作しているサービスを呼び出し、処理を依頼できる。

MS-RPCの通信形態

 MS-RPCでは、サービスを提供する側(サーバ側)と、そのサービスを利用する側(クライアント側)が協調して動作する。通常のサーバとクライアントの関係でもこれは同じだ(例えばHTTPではTCPの80番ポートでサーバが待ち受けし、クライアントはそのポートへ接続する)。

 ただし、MS-RPCの場合、次の2つの段階を経てサービスを利用する。

●第1段階――ポートマッパーへの接続

 MS-RPCでリモートPCへ接続する場合、最初は「ポートマッパー」(port mapper)と呼ばれる代表ポートへ接続し、セキュリティチェックや対象となるサービスが稼働しているかどうかのチェック、通信環境のセットアップなどを行う。

 現実の世界でいうなら、まず代表番号へ電話して、自分自身の認証を受けたり、呼び出したいサービスが存在しているかどうかを問い合わせたり、そのサービスへ接続するためのポート番号情報などを尋ねることに例えられる。

 実際のMS-RPCサービスでは、ポートマッパーはTCPの135番で待ち受けしているので、ここへ接続して対象となるサービスへの接続要求を送信する。接続が許可されると、MS-RPCのサーバは、新しくポートを割り当て、以後はそのポートへ接続するように応答を返す。

 このように、接続するべき新しいポート番号を返すので(マッピングするので)、ポートマッパーと呼ばれる。このときに返されるポート番号は、動的に決定されるため、事前にファイアウォールで静的に許可しておくことは困難である。

●第2段階――サービスポートへの接続

 ポートマッパーへの接続が成功すると、クライアント側では、サーバから返された動的ポートへ接続を行い、サービスを受ける。

●netstatコマンドでMS-RPCの通信の様子を確認する

 以上がMS-RPCを使った場合の通信の状態である。この様子は、例えば「netstat -an」コマンドなどで、待ち受けしているポート番号を調べることによって確認できる。

C:\>netstat -an

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:23             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING …… (1)MS-RPCのポートマッパー
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    192.168.1.155:139      0.0.0.0:0              LISTENING
  UDP    0.0.0.0:445            *:*
  UDP    0.0.0.0:500            *:*
  UDP    0.0.0.0:1025           *:* …… (2)MS-RPCの動的ポート1
  UDP    0.0.0.0:1026           *:* …… (2)MS-RPCの動的ポート2
  UDP    0.0.0.0:4500           *:*
  UDP    127.0.0.1:123          *:*
  UDP    192.168.1.155:123      *:*
  UDP    192.168.1.155:137      *:*
  UDP    192.168.1.155:138      *:*

C:\>



 この画面で、(1)のTCP 135番が、MS-RPCのポートマッパーの待ち受けポート番号である。MS-RPCを利用したいクライアントはまずこのポートへ接続を試み、成功すれば、次に(サーバから指示された)サービス用のポート(この例では(2))へ接続する。

 サービス用のポート番号はこの例では「1025」「1026」となっている。ただし、先ほども述べたように、この番号は実行時に動的に決定される。そのため、システムによって異なる可能性がある。

 もっともWindows OSでは、デフォルトでは1024番から順番にポート番号を利用するようになっているため、初期ポート番号はいつもこのあたりになっているはずである(MS-RPC以外でも利用されることがあるので、これらが必ずしもMS-RPCで利用されているポートとは限らない)。

 また以下のサポート技術情報で示される方法を利用して、別の範囲のポートを利用させることもできる。

SMB(CIFS)上のMS-RPCサービス

 以上の説明は、TCPの135番ポートを使ったMS-RPCにおける通信方法である。これ以外にも、「SMB」(Server Message Block)もしくは「CIFS」(Common Internet File System)プロトコル上でもMS-RPCを利用できる。

 SMBやCIFSは、Windows OSにおけるファイル共有プロトコルである一方で、Windows OSはこの機能を使ってリモートのサーバ上のMS-RPCサービスを呼び出すのである。この場合は、ネットワーク的にはSMBやCIFSプロトコル中にMS-RPCプロトコルが隠ぺい(含有)されることになる。

 これらのプロトコルについては、以下の記事などを参照していただきたい。

MS-RPCで動作しているサービスを調査する

 MS-RPCで提供されているサービスの一覧は、例えば「portqry.exe」コマンドを使えば調査できる。具体的な方法については、Tech TIPS「ポートのリッスン状態を調査する」を参照していただきたい。

MS-RPCとファイアウォール

 以上の説明で分かるように、MS-RPCで使われるプロトコルには複数のものがある。ファイアウォールでMS-RPCの通信を許可したい(もしくは禁止したい)場合は、TCPの135番だけでなく、SMB(NBT:NetBIOS over TCP/IP)やCIFSのポートなどもフィルタの対象とする必要がある。

プロトコル 種別 ポート番号
MS-RPC TCP 135
NetBIOS名前サービス UDP 137
NetBIOS名前サービス TCP 137
NetBIOSデータグラムサービス UDP 138
NetBIOSセッションサービス TCP 139
CIFS TCP/UDP 445
MS-RPC関連で使われるポート番号
MS-RPC通信を許可したい(禁止したい)場合は、これらのポート番号をファイアウォールのルールに設定する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。