Windows云主机远程登录报错“内部错误”问题分析
一、背景介绍
近期发现有不少用户反馈,Windows云主机远程登录报错“出现了内部错误”的问题,经过我们的分析发现,云主机内部有大量3389端口的无效TCP连接请求,异常现象如下图:
Windows+R调出运行窗口,输出cmd回车,然后输入:netstat -ano|findstr "3389"
随后我们排查了所有远程连接异常的主机,结果都能够发现同网段源IP或相同源IP地址,且均来自与境外IDC供应商。我们初步判断很有可能是黑客恶意扫描攻击3389端口导致远程桌面服务异常,从而引起远程连接失败。我们随后的验证方案,也间接证明了我们的判断~
二、解决方案
2.1 方案一:针对远程桌面服务
(1)重启远程桌面服务进程-方式一
注:如果想临时解决的话,可以通过重启远程服务进程(任务管理器中找到:Remote Desktop Services),释放异常TCP连接的方式解决,但是如果扫描攻击在持续,你将很快再次出现无法远程的问题。
操作步骤1:Windows桌面下方鼠标右键,打开任务管理器:选择“进程”、点击名称部分右键,然后勾选“PID”
操作步骤2:根据netstat截图输出,可以发现远程桌面服务的PID是808
操作步骤3:如果遇到下述情况,可以直接重启主机或者修改主机端口或使用方式二
(2)重启远程桌面服务进程-方式二
操作步骤一:Windows+R输入services.msc
操作步骤二:找到“Remote Desktop Services”服务,点击重启动
(3)修改远程桌面默认端口
注:修改远程桌面服务默认端口,比如:改成33389,释放3389端口无效TCP连接请求,也可以起到规避黑客针对3389端口盲扫的问题。但是针对黑客定向攻击的场景是不行的,无论你开放哪个端口,如果没有针对访问源IP进行限制,都会遇到被暴力破解的问题。另外,关于源IP的限制,也是我们要介绍的方案二。
操作步骤1:Windows+R调出运行窗口,输入regedit,调出注册表管理页面
操作步骤2:依次点开注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber
修改新的端口后,点击确认。
操作步骤3:关闭注册表编辑器,重启云主机主机即可。
2.2 方案二:限制针对3389端口访问的源IP地址或IP段
注:通过防火墙针对访问源IP进行限制,丢弃一切不合法请求,保障远程管理服务的稳定性!!!
2.3 方案三:定时清理不活跃 TCP 连接
Windows 定期清理3389端口不活跃 TCP 连接并输出清理日志到 3389.log 文件的脚本
# 脚本名称:3389.bat
@echo off
setlocal enabledelayedexpansion
set currentDate=%date%
set currentTime=%time%
set currentTime=%currentTime::=%
set logfile=3389.log
echo Cleaning up TCP connections on port 3389...
for /f "tokens=1,2,3,4,5" %%a in ('netstat -aon ^| find ":3389" ^| find "ESTABLISHED"') do (
set "ip_port=%%a %%b"
set "pid=%%d"
call :CheckIdle %pid% %ip_port% %currentDate% %currentTime%>>%logfile%
)
echo All connections on TCP port 3389 have been terminated.
goto :eof
:CheckIdle
set response=0
for /f "skip=3 tokens=3,5" %%c in ('tasklist /svc /fi "PID eq %1" 2^>nul') do (
set "service=%%d"
if /i "!service!" == "rdpclip.exe" (
set "response=%%c"
)
)
if "%response%" NEQ "0" (
echo %3 %4: TCP connection %2 owned by %1 with service rdpclip.exe has recent activity. >>%5
goto :eof
)
echo %3 %4: Terminating TCP connection %2 owned by %1 due to inactivity... >>%5
taskkill /f /pid %1
goto :eof
# 设置定时任务,10min执行一次3389.bat脚本
schtasks /create /tn 3389_task /tr C:\3389.bat /sc minute /mo 10
# 查看定时任务列表
schtasks /query /tn 3389_task
图形化界面:控制面板\管理工具\任务计划程序 >> 活跃任务
作者:UStarGao
链接:https://www.starcto.com/system/274.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-03-27初识Redis数据库
- 2021-02-21MySQL Binlog日志清理
- 2022-05-15Nginx安全控制-Basic认证与IP黑/白名单
- 2023-08-18Linux 数据盘盘符变化导致启动异常
- 2021-11-04MySQL的多表联合查询