web-dev-qa-db-ja.com

RPCとは何ですか。なぜそれほど重要なのですか。

最初から、Windowsでリモートプロシージャコールサービスを無効にすることはないと聞いたことがあります。そうすることで、かつてはひっくり返るのが困難であった恐ろしいことにつながります(これを行うのは簡単ではなくなったが、修正がはるかに簡単になったと思います)。しかし、私はそれが何をするのか、なぜ基本的にオペレーティングシステム全体にとってそれがなぜそれほど重要であるのか分かりません。

RPCサービスの目的を要約することは可能ですか?なぜ他の多くのサービス/アプリケーション/操作が実行に依存しているのですか?

15
redknightalex

Windowsの設計者は、RPCを介して多くのことを互いに対話させることを決定しました。これにより、ローカルまたはネットワークを介して対話できるようになります。

これには、Active Directory、ほとんどのMMCコンソール、デバイスマネージャなどの一部のコントロールパネルアプレットの機能、管理ツールの多くの機能、および場合によっては内部Windowsコンポーネントが含まれます。

MMCコンソール、compmgmt.mscなどのローカルマシンに関する情報を表示するためにコンソールにアクセスしている場合でも、基本的にはlocalhostへのRPCが行われています(ただし、間違っている可能性があります)。

RPCは、TCP/IPの1レベル上にあるものと考えてください。これは、多くのWindowsコンポーネントによって低レベル(および安全ではない)のネットワーク通信フレームワークとして使用されます。 TCP/IPを直接使用しないのはなぜですか? Windows NTが設計されたとき(1993年にリリースされた最初のバージョン)、Netware(SPX/IPX)、NetBIOS、AppleTalkなどの一般的なTCP/IP以外のネットワークプロトコルがありました(Windowsはこれを当時サポートしていたと思います) 、間違っている可能性があります...)など。したがって、これは、Windowsコンポーネントがローカルマシンまたはリモートマシン上の他のコンポーネントと通信できるようにするための、ネットワークに依存しない方法です。

24
LawrenceC

真実は:RPCは[〜#〜] local [〜#〜]マシンで広く使用されていますが、Host-to-Hostの使用法は、主にMicrosoftによって内部的に使用されますサードパーティによって使用されることはほとんどありません


[〜#〜] local [〜#〜]RPCの主な使用法:

  • レジストリ、Netlogon、ファイアウォール、サービスコントロール、SQLサーバーなどの生のRPCコンポーネント...「ホスト間」セクションのリストにそれらの一部が表示されます。

  • 多くのDCOMコンポーネント(CのC++ラッパーのようなRPCに基づく)には、COM +コンポーネントが含まれています。

Dcomcnfgを実行して、マシン上のDCOMコンポーネントの数を確認できます。

Excel、Internet Explorer、Visual Studio ...はDCOMコンポーネントであるため、自動化できます。

enter image description here

エクスプローラーの[ファイルプロパティ]ダイアログもDCOMコンポーネントです。 DCOMCNFGの起動許可の「制限の編集」からすべてのACLを削除すると、管理作業だけでなく、エクスプローラーでファイルのプロパティを表示することもできなくなります。

enter image description here


Host-to-HostRPCの主な使用法:

  • 「コンピューターの管理」「レジストリエディター」などのリモート管理機能を使って、リモートマシンに接続させることができます。下線は、RPC over SMB protocol(TCP port 445、known as File Sharing)です。

    enter image description here

Rpcdumpまたはifidsツールを使用して、リモートマシン上のすべてのRPCインターフェイスをダンプできます。次の結果を参照してください。多くのシステム管理インターフェイスを確認できます(もちろん、ローカルで使用することもできます)。

[MS-RSP]: Remote Shutdown Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-EVEN6]: EventLog Remoting Protocol 
Adh APIs
AppInfo
Base Firewall Engine API
DHCP Client LRPC Endpoint
DHCPv6 Client LRPC Endpoint
DfsDs service
EFSK RPC Interface
Event log TCPIP
Fw APIs
Group Policy RPC Interface
IP Transition Configuration endpoint
IdSegSrv service
Impl friendly name
KeyIso
LicenseManager
NRP server endpoint
NSI server endpoint
NetSetup API
Ngc Pop Key Service
Proxy Manager client server endpoint
Proxy Manager provider server endpoint
Secure Desktop LRPC interface
Security Center
UserMgrCli
WM_WindowManagerRPC\Server
WinHttp Auto-Proxy Service
Witness Client Test Interface
Witness Client Upcall Server
XactSrv service
...

Received 499 endpoints.

RPCが重要なのはなぜですか?すべての成熟したシステムには、プロセス間通信メカニズム、オブジェクトのパック/アンパックの標準であるスタブ/プロキシを生成するためのツールセットが必要なためです。どのシステムにも同様のものがあります。あなたはAndroidを知っている必要があります、そのバインダーはDCOMのデザインに非常に似ています。

実際、ホストツーホストRPCは広く普及していません。主にそれらが複雑で不透明であり、445または135ポートが頻繁にブロックされるためにインターネットに友好的ではなく、認証エクスペリエンスが悪いためです。人々はリモートコンポーネントを呼び出すためにHTTPSサーバーを選択することを好みます、それはより簡単で制御可能です。

6
osexp2003