jumpServer windwos RDP网络不可达、安全策略错误

warning: 这篇文章距离上次修改已过276天,其中的内容可能已经有所变动。

jumpServer windwos RDP网络不可达、安全策略错误

一、故障现象

jumpServer又称堡垒机,官方还给了个高大上的名字--运维审计系统。话说这jumpServer还挺实用的,通过统一入口,给不同的运维人员登录操作,一方面可以减轻N个后台系统不连接方式给运给人员的压力,另一方面更好的实现统一权限管理,最重要的一点是可以对操作进行屏甚至能自动记录键盘操作。jumpServer社区版开源免费,基本能满足普通用户的需要。在好几个项目上用过,感觉还可以。

回到正题,近日给一客户做交付时,刚好需要部署一套运维审计系统,自然就用到了jumpServer。轻车熟路,一顿操作猛于虎,用官方给的脚本很快就装完了。本以为很快能收工,谁知在配完windows主机后,web终端连接主机,死活连接不上,提示网络不可达|安全策略错误

image-20231017220609423

二、分析处理

看到上面的提示,一般先会想到是不是windows上没开放端口,或者jumpServer到windows主机网络不通。于是到用mstsc连接windows主机,正常。再到jumpServer系统上,docker ps,发现好几个容器在运行,也不知哪个是做RDP中转服务的,再看各种服务端口,好像都正常。偿试docker exec --it 进入一些可疑的容器bash,有的能ping,有的不能ping==因为没装iputils-ping包==,同样netstat也没有===需要安装net-tools包==,但是apt update,apt install xx都报错,因为source.list镜像源都在国外,被墙了。想复制国内镜像源替换,但esxi的VMRC界面复制不了文本到虚拟机==其实改配置是可以的,但不想去动==,一连串的因果关系,好纠结,只好先认定jumpServer能正常连接到windows主机。

期间还换了几个windows主机的IP,结果都一样。但是当把主机换成linux时,web终端能正常连接到主机,此时基本认定是windows模块出问题了。

回到windows主机那里,先百度一下,发现有提到是因为windows远程桌面设置了网络级别身份验证。。。,结果到系统里查了查,我根本就没勾选啊。在web终端里再次偿试连接,windows里用netstat查看,发现根本没收到请求。左思右想,没想到好办法,就这么僵持了一会。由于不明白jumpServer 用哪个组件调用RDP,最后只好到官网上查资料,终于在FAQ里找到了(==其实在github上也有介绍各组件的用途==)。

2.3 Lion 组件

Lion 是服务于 Windows 系统平台的组件,用于 Web 端访问 Windows 资产。

知道哪个组件后,先用docker logs jms_lion查看日志,得到的结果跟官方截图一样,但官网又没种情况是什么原因引起的。从日志里看,请求应该是没问题的,通讯也没问题。

[GIN] 2023/10/17 - 15:48:57 | 200 |      55.362µs |       127.0.0.1 | GET      "/lion/health/"
[GIN] 2023/10/17 - 15:48:58 | 201 |   102.61494ms |    172.16.0.121 | POST     "/lion/api/session"
2023/10/17 15:48:58 5.audio,1.1,31.audio/L16; instruction with bad Content: 5.audio,1.1,31.audio/L16
2023-10-17 15:48:58 tunnel conn.go [ERROR] Session[e7179212-212f-4cfb-a8cd-dad72deab16e] receive web client disconnect opcode
2023-10-17 15:48:58 tunnel conn.go [ERROR] Session[e7179212-212f-4cfb-a8cd-dad72deab16e] web client read err: websocket: close 1005 (no status)
2023-10-17 15:48:58 tunnel conn.go [ERROR] Session[e7179212-212f-4cfb-a8cd-dad72deab16e] send web client err: websocket: close sent
2023-10-17 15:48:58 session server.go [ERROR] 录像文件小于1024字节,可判断连接失败,未能产生有效的录像文件
[GIN] 2023/10/17 - 15:48:58 | 200 |  486.564575ms |    172.16.0.121 | GET      "/lion/ws/connect/?SESSION_ID=e7179212-212f-4cfb-a8cd-dad72deab16e&GUAC_WIDTH=1535&GUAC_HEIGHT=1023&GUAC_DPI=96&GUAC_KEYBOARD=&GUAC_IMAGE=image%2Fjpeg&GUAC_IMAGE=image%2Fpng&GUAC_IMAGE=image%2Fwebp&GUAC_AUDIO=audio%2FL8&GUAC_AUDIO=audio%2FL16"

为了印证上述猜测,docker exec进入容器,然后试了下apt update竟然成功了。赶紧安装 net-tools,再用netstat 查看网络连接情况,发现web终端连接时,容器里也没见发起tcp连接请求。再apt install iputils-ping,在容器里ping windows主机的ip,连接也正常。结合日志和网络连通情况分析,还到github上查issue,没找到有用的,思来想去都没想到有啥好办法。

三、最后解决

转眼时间就飞逝到下午了,突然想起会不会是这个ubuntu系统版本太低了呢?在安装jumpServer前用cat /etc/issuse查看,版本是18.0.4的,当时也觉得版本有点低,内核版本为4.15.0-156-generic。还特意到官网上确认过眼神,觉得没啥问题。

image-20231017231953036

干脆重装看看!想到要重装,果断换个系统版本Ubuntu 22.04.3 LTS,一路下载安装都很顺利,配置完主机和授权后,激动人心的时刻来了,web终端连接测试连接正常,成功了,好开心!

换个系统版本就可以了,白浪费几个小时折腾,这个坑踩得就是这么朴实无华!其实lion组件单独安装应该也能分析出具体问题来,但是想到这是别人软件系统里的坑,而且这个不是已交付项目的重点,就没太大动力去进一步分析了:smile:。

20240221 更新:
今天又遇到这个问题了,查了jumpServer各种日志都没找到问题,甚至重新部署远程应用都效果。后来在windows系统日志中看到==RD授权宽限期已过,且该服务尚未向安装有许可证的授权服务器注册==,Web终端上每次连接都会提示这个,此时已知大概原因。
于是按网上的方式来激活,直到远程桌面诊断器中显示正常,再测试,还是报一样的错误。经过各种折腾,诊断器中又突然显示没激活状态,重新激活一次,正常了!

评论已关闭