如何使用SCCM | PowerShell |注册表更改RDP端口
本指南涵盖了在Windows计算机上更改RDP端口(远程桌面端口)的不同方法,如SCCM (ConfigMgr) CMPivot, PowerShell和Windows注册表。
当您使用远程桌面客户端连接到计算机(Windows客户端或Windows服务器)时,计算机上的远程桌面功能会通过指定的端口3389侦听连接请求。Windows上的远程桌面端口(RDP端口)3389是黑客的热门目标。因此,更改RDP端口可能是有意义的。
更改RDP端口后,下次使用远程桌面连接连接到此计算机时,必须键入新端口。如果您正在使用防火墙,请确保将防火墙配置为允许连接到新端口号。
请注意港口1 - 1023不应该在选择非标准RDP端口时使用,因为这些是已知的端口,但是port49152 - 65535没有被任何服务或应用程序使用的动态或私有端口。例如,您可以更改RDP端口从3389来33091。
为什么修改RDP端口号?
Microsoft使用端口3389进行所有外部通信。黑客经常使用自动猜测密码的技术,通过3389侦听端口连接到远程计算机。这类攻击,就像微软刚刚发现的那样,被称为暴力破解和密码喷洒攻击。
毫无疑问,这个严重的安全漏洞使您的远程计算机处于危险之中。许多管理员决定将RDP端口号从3389更改为任何其他可用端口以绕过此漏洞,这使得黑客更难以找出侦听端口。
除了防御黑客之外,管理员还可以通过修改RDP端口号来绕过防火墙。出于安全考虑,一些系统的防火墙被设置为分别阻止从端口3389传入和传出消息。这种方法的目的不是阻止远程访问,而是阻止黑客通过端口进入系统。更改RDP端口有助于降低端口扫描器和RDP漏洞的风险。
使用PowerShell检查RDP端口号
在任何一台Windows计算机上,您都可以通过运行以下PowerShell命令来检查RDP端口号。
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber"
我们看到给定计算机上的RDP端口号是3389。
PortNumber: 3389 PSPath: Microsoft.PowerShell。Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TcpCore\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations PSChildName: RDP-Tcp PSDrive: HKLM PSProvider: Microsoft.PowerShell.Core\Registry . exe
使用注册表更改RDP端口
你可以修改远程桌面的监听端口在您的计算机上使用注册表。在进行任何更改之前,请确保备份了注册表。
- 启动注册表编辑器。(在搜索框中输入regedit。)
- 导航到以下注册表子项:HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \控制\ \ WinStations \ RDP-Tcp终端服务器
- 查找PortNumber注册表项,默认值为3389。
- 右键单击PortNumber按下并选择修改。在编辑DWORD(32位)值,选择“十进制”并键入新的端口号,然后单击好吧。关闭注册表编辑器,然后重新启动计算机。
在下面的截图中,我将远程桌面端口从3389来33091。
要确认是否更改了远程桌面端口号,请运行以下PowerShell命令。
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber"
在输出中,我们看到RDP端口号显示为33091,这证实我们已经成功地使用注册表更改了远程桌面端口。
使用PowerShell修改RDP端口
更改远程桌面端口的最快方法之一是使用PowerShell脚本。您可以使用PowerShell脚本在多台计算机上修改RDP侦听端口号。
下面的PowerShell脚本由Microsoft提供,它将远程桌面端口设置为3390。该脚本还添加了防火墙规则,以允许计算机上的RDP端口。
$portvalue = 3390 Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value $portvalue - New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action允许-Protocol TCP -LocalPort $portvalue -Direction Inbound -Action允许-Protocol UDP -LocalPort $portvalue
要运行上述PowerShell脚本,请在计算机上以管理员身份启动PowerShell并运行该脚本。您也可以打开Windows PowerShell ISE并粘贴代码并在运行之前进行编辑。
你也可以部署RDP端口更改PowerShell脚本在多台计算机上使用Microsoft Intune或Configuration Manager。
添加自定义RDP端口防火墙规则
在将默认RDP端口更改为自定义端口后,必须修改Windows Defender防火墙以允许新的自定义RDP端口。要为唯一的RDP端口添加规则,请使用下面的PowerShell脚本。
New-NetFirewallRule -DisplayName 'RDPPORTLatest-UDP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $portvalue
名称:{d601232d-c37c-402e-88d7-8313cd2acefd} DisplayName: RDPPORTLatest-TCP-In描述:DisplayGroup: Group: Enabled: True Profile: Public Platform: {} Direction: Inbound Action: Allow EdgeTraversalPolicy: Block LooseSourceMapping: False LocalOnlyMapping: False Owner: PrimaryStatus: OK状态:从存储区解析规则成功。(65536) EnforcementStatus: NotApplicable PolicyStoreSource: PersistentStore PolicyStoreSourceType:本地RemoteDynamicKeywordAddresses:{}名称:{de0e40f9 - 7420 - 4054 - ae98 - 028 a4c7f0abe} DisplayName: RDPPORTLatest-UDP-In描述:DisplayGroup:组:启用:真正的简介:公共平台:{}方向:入站行动:允许EdgeTraversalPolicy:块LooseSourceMapping:假LocalOnlyMapping:假老板:PrimaryStatus:好的状态:成功地从存储中解析了规则。(65536)强制执行状态:NotApplicable PolicyStoreSource: PersistentStore PolicyStoreSourceType: Local RemoteDynamicKeywordAddresses: {}
CMPivot查询RDP端口
你可以很快使用CMPivot查询注册表值。使用简单的CMPivot查询,您可以检查SCCM中多台计算机上的RDP端口。
- 启动ConfigMgr控制台并转到资产与合规性>概述>设备集合。
- 右键单击设备集合并选择开始CMPivot。
- 运行下面的CMPivot查询来检查设备集合中所有设备的RDP端口。
注册表('HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp') | where Property == 'PortNumber'
使用SCCM更改RDP端口
现在我们有了一个PowerShell脚本,它允许我们修改远程桌面端口号,我们可以通过SCCM部署这个脚本。我们将使用SCCM脚本特性来完成此任务。
在ConfigMgr控制台中,转到\Software Librar华体会体育系列y\Overview\Scripts。创建一个新脚本,并在脚本详细信息窗口中指定以下详细信息。
- 脚本名称:修改RDP端口
- 脚本描述:修改RDP端口
- 脚本语言: PowerShell
- 脚本超时秒数: 200秒
在脚本窗口中,粘贴下面的PowerShell脚本,单击Next并关闭创建脚本向导。
$portvalue = 3390 Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value $portvalue - New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action允许-Protocol TCP -LocalPort $portvalue -Direction Inbound -Action允许-Protocol UDP -LocalPort $portvalue
在将PowerShell脚本部署到设备之前,您必须先批准它。右键单击Change RDP Port脚本并选择批准。如果批准/拒绝脚本是灰色的,请参考文章介绍如何解决SCCM脚本批准拒绝选项被禁用。
一旦您批准了PowerShell脚本,右键单击希望运行脚本的设备集合并选择运行脚本。
2 .选择修改RDP端口的PowerShell脚本,单击下一个。Configuration Manager现在在作为设备集合一部分的所有设备上运行脚本。为了使脚本工作,设备必须在线。关闭运行脚本窗口。
运行PowerShell脚本后,可以通过CMPivot查询查看计算机上的RDP端口号。从CMPivot查询输出中,我们看到所有计算机的远程桌面监听端口现在都被更改了3389来3390。