为了避免一些端口暴露在公网上被扫描和破解,一些用户选择修改默认端口的方法提升安全性。在Azure云的虚拟机中我们同样可以做这样的操作,但是由于某些原因,客户可能会忘记在操作系统防火墙中添加自定义端口开放,这直接造成了无法连接虚拟机的状况。本次实验以Azure云的Windows虚拟机为测试环境,修改默认的3389端口,并介绍一些简单的快速的故障排除方法。
[本文由Tim撰写,AndyX修改。本文的“Azure Portal”门户界面以英文为主,仅供参考。]
[本人中所有涉及到 Azure 的实验均在 Azure Global 国际版中进行配置,部分功能可能在 Azure 世纪互联版中受到限制]
[本文为AndyX.Net原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!]
[如果本文章帮助到了您,请在记得在文章末尾“打赏”作者,感谢!]
展开索引
初始化实验环境
- OS:Windows Server 2019 Datacenter
- VMName:TimRDPtest
- VMSize:Standard_D2_v3
- OSDisk:128GB, Standard HDD
- NSG:默认(允许3389端口连入)
- Windows防火墙:默认(开启)
修改Azure虚拟机端口实战
一、在Windows系统内使用注册表修改RDP远程桌面端口
1.1 打开【开始菜单】➡【运行】➡输入regedit或者regedt32打开【注册表管理器】
1.2 定位到路径:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
1.3 选择十进制(Decimal),输入自定义端口号(例如本文中的自定义新端口12345)
关于“更改计算机上的远程桌面的侦听端口”的微软官方文档(中文),请参见链接:
https://docs.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/clients/change-listening-port
二、修改Windows 防火墙以及 Azure中的NSG规则
2.1 修改Windows防火墙
进入Windows Firewall 选择 Advanced Settings
选择Inbound Rules 新建New Rule
配置防火墙规则(如下图)
- 选择添加Port规则
- 选择添加TCP协议,输入自定义端口号(例如12345)
- 命名规则
关于“创建入站端口规则”的微软官方文档(中文),请参见链接:
https://docs.microsoft.com/zh-cn/windows/security/threat-protection/windows-firewall/create-an-inbound-port-rule
2.2 添加Azure云的NSG规则
在Azure的VM界面(如本文的VM:TimRDPtest),选择Networking, 添加Network security group(NSG) TimRDPtest-vnet-NSG-CASG 和Network security group(NSG) TimRDPtest-nsg 规则。
**请注意:这里默认有两个NSG(network security group 安全组),第一个隶属于VNet(虚拟网络)的NSG,第二个隶属于NIC(虚拟网卡)的NSG**
添加自定义端口号,命名NSG规则(此时建议保留原始NSG的3389默认规则)。
**请注意,这里填写的是Inbound入站规则,并且写入Destination目标地址**
RDP 端口NSG部分到此修改完成。
测试并验证RDP连接时请输入自定义端口号进行RDP访问(如下图)
关于“Azure创建、更改或删除网络安全组”的微软官方文档(中文),请参见链接:
https://docs.microsoft.com/zh-cn/azure/virtual-network/manage-network-security-group
关于针对由于修改RDP端口导致无法连接VM的故障与排除方法
针对于NSG设置的排查:
- 检查NSG规则是否存在
- 检查NSG规则是否属于Inbound
- 检查NSG规则是否指向Destination目标地址
- 若同时存在VNet和NIC的NSG,请检查两者是否都做了同样的设置
对只修改RDP端口未修改Guest OS 防火墙规则的VM进行故障排查
方法一:使用RunCommand关闭Windows防火墙(如下图)
- 选择Operation
- 选择Run Command
- 选择RunPowerShellScript
填入并运行 Powershell 命令关闭Windows防火墙:
Set-NetFirewallProfile -All -Enabled false
方法二: 使用Serial Console(串行控制台)关闭Windows防火墙(如下图)
- 输入 cmd 配置cmd命令
- 输入 ch -si 1 切换到cmd命令1
- 输入 UserName, Password进入Guest OS, Domian留空
成功使用Serial Console(串行控制台)登录到Windows后:
- 输入 powershell 进入powershell 命令模式
- 输入
Set-NetFirewallProfile -All -Enabled false
关闭防火墙 - 输入 exit 退出powershell 命令模式
输入cmd命令 netsh advfirewall show allprofiles
来验证防火墙是否被关闭
关于“如何使用Serial Console(串行控制台)进行Windows故障排查”的微软官方文档(中文),请参见链接:
https://docs.microsoft.com/zh-cn/azure/virtual-machines/troubleshooting/serial-console-windows
(全文完)
文章撰写:Tim Wang,来自AndyX.Net ,由AndyX修改并发布。
文章遵循 CC 4.0 BY-SA 版权协议,若需转载本文,请标注来源与链接:原创内容AndyX.Net版权所有
https://andyx.net/azurelab_101_change_ports_and_troubleshooting_on_azure_virtual_machine/