有人能解释一下每个 Windows RPC 端口的使用时间和频率吗?我理解的“核心”端口是:
- 端口 135
- 端口 137
- 端口 139
- 135 端口“目录”发布的较高端口
然后我听说端口 145 加入进来是为了“使事情变得更好”与 NBT/TCP 结合,但我不确定这与 Windows 客户端启动 RPC 操作的顺序如何契合。
有人能帮助我一劳永逸地解决我对 RPC 端口的理解吗?
答案1
这篇 TechNet 文章很棒,我建议你收藏它。它列出了各种 Windows 服务使用的端口,非常详尽。
在 Vista/2008 之前的 Windows 版本中,NetBIOS 用于“RPC Locator”服务,该服务管理 RPC 名称服务数据库。但在 Vista/2008 及更高版本中,RPC Locator 服务不再必要或有用。它已不复存在。从现在开始,我将只讨论 Vista/2008+ 上的 MSRPC。
端口 137、138 和 139 用于 NetBIOS,并且不是MSRPC 功能所必需的。
RPC使用的所有端口如下:
RPC EPM TCP 135
RPC over HTTPS TCP 593
SMB (for named pipes) TCP 445
Ephemeral Range, Dynamic *
其他应用程序,如远程桌面网关,将使用 HTTP 代理上的 RPC 并使用端口 443 等。
虽然我上面链接的文章列出了 NetBIOS 端口,但这些都是遗留的并且不是 RPC 所必需的,假设您可以通过其他方式(DNS)获取名称解析,并且假设远程服务本身不依赖于 NetBIOS。
端口 145 是假的。它没有任何用处。无论你在哪里听到它“让事情变得更好”,都是错误的。
基本 MSRPC 使用端口 135 和高编号动态范围。该高编号动态范围是 XP/2003 及以下版本的端口 1024-5000,以及 Vista/2008 及以上版本的端口 49152-65535。您也可以将该端口范围称为临时端口。
如果愿意,您可以定义自定义端口范围,如下所示:
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v Ports /t REG_MULTI_SZ /f /d 8000-9000
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v PortsInternetAvailable /t REG_SZ /f /d Y
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v UseInternetPorts /t REG_SZ /f /d Y
和/或
netsh int ipv4 set dynamicport tcp start=8000 num=1001
netsh int ipv4 set dynamicport udp start=8000 num=1001
netsh int ipv6 set dynamicport tcp start=8000 num=1001
netsh int ipv6 set dynamicport udp start=8000 num=1001
TCP 端口 135 是 MSRPC 端点映射器。您可以匿名绑定到远程计算机上的该端口,并枚举该计算机上可用的所有服务(端点),或者如果您知道要查找的内容,则可以请求特定服务在哪个端口上运行。
让我向您展示一个查询 RPC Enpoint Mapper 的示例:
C:\>PortQry.exe -n 192.168.1.1 -e 135
Querying target system called:
192.168.1.1
Attempting to resolve IP address to a name...
IP address resolved to host01.labs.myotherpcisacloud.com
querying...
TCP port 135 (epmap service): LISTENING
Using ephemeral source port
Querying Endpoint Mapper Database...
Server's response:
UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d
ncacn_ip_tcp:192.168.1.1[49152]
UUID: 12345778-1234-abcd-ef00-0123456789ac
ncacn_np:192.168.1.1[\\pipe\\lsass]
UUID: 12345778-1234-abcd-ef00-0123456789ac
ncacn_ip_tcp:192.168.1.1[49159]
UUID: 6b5bdd1e-528c-422c-af8c-a4079be4fe48 Remote Fw APIs
ncacn_ip_tcp:192.168.1.1[49158]
UUID: 367abb81-9844-35f1-ad32-98f038001003
ncacn_ip_tcp:192.168.1.1[49157]
UUID: 12345678-1234-abcd-ef00-0123456789ab
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 0b6edbfa-4a24-4fc6-8a23-942b1eca65d1
ncacn_ip_tcp:192.168.1.1[49155]
UUID: ae33069b-a2a8-46ee-a235-ddfd339be281
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 4a452661-8290-4b36-8fbe-7f4093a94978
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 76f03f96-cdfd-44fc-a22c-64950a001209
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 7f1343fe-50a9-4927-a778-0c5859517bac DfsDs service
ncacn_np:192.168.1.1[\\PIPE\\wkssvc]
UUID: 3473dd4d-2e88-4006-9cba-22570909dd10 WinHttp Auto-Proxy Service
ncacn_np:192.168.1.1[\\PIPE\\W32TIME_ALT]
UUID: 1ff70682-0a51-30e8-076d-740be8cee98b
ncacn_np:192.168.1.1[\\PIPE\\atsvc]
...
Total endpoints found: 50
==== End of RPC Endpoint Mapper query response ====
您会注意到,如果您在本地计算机上执行该查询,您会发现比从远程计算机执行查询更多的端点。这是因为许多 RPC 端点不会远程公开,仅用于本地进程间通信。
进一步阅读:http://technet.microsoft.com/en-us/library/cc738291(v=WS.10).aspx