简介
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。
系统配置
系统版本:ubuntu22.04
建议内存:4核8G
系统不需要做任何配置,保持干净的系统即可。
安装
版本选择
企业版和开源版区别如下表:
具体版本根据使用需求及预算。
下载
企业版:jumpserver-offline-release-v3.10.9-amd64.tar.gz
个人存档:JumpServer堡垒机 | AList (xmhweb.cn)
下载离线包,并上传到部署服务器的 /opt
目录下。
部署
按照官方文档进行安装:JumpServer 文档
cd /opt
tar -xf jumpserver-offline-installer-v3.10.9-amd64.tar.gz
cd jumpserver-offline-installer-v3.10.9-amd64
根据需要修改配置文件config-example.txt
,如果不清楚用途可以跳过修改
如果你不想使用默认的mariadb容器数据库,就需要修改一下配置:
并且可以提前设置一下DOMAINS参数为服务器登录地址,如果不设置是登录不了的,如果有多个地址使用逗号分开。
根据程序包文件,可以看出该程序是通过docker-compose安装部署的,其配置文件都存放在:/opt/jumpserver-offline-installer-v3.10.9-amd64/compose/
。
修改WEB端口映射:vim /opt/jumpserver-offline-installer-v3.10.9-amd64/compose/docker-compose-web.yml
,将ports
改成9005:80
,即映射为9005端口。
如果要使用外部数据库,就不需要修改这个配置,启动后不会创建mariadb数据库容器,否则可以修改mariadb端口映射:vim /opt/jumpserver-offline-installer-v3.10.9-amd64/compose/docker-compose-mariadb.yml
,添加如下参数:
ports:
- "10.10.166.213:3308:3306"
现在可以安装启动项目了,在cd jumpserver-offline-installer-v3.10.9-amd64
文件中依次执行下面两条命令。
# 安装
./jmsctl.sh install
# 启动
./jmsctl.sh start
一些其他命令。
# 重新部署(修改配置文件后使用)
jmsctl restart
# 停止
./jmsctl.sh down
# 卸载
./jmsctl.sh uninstall
# 帮助
./jmsctl.sh -h
安装完成后 JumpServer 配置文件路径为:/opt/jumpserver/config/config.txt
,并且会生成一个软链接:/opt/jumpserver-offline-installer-v3.10.9-amd64/compose/.env
,可通过其修改数据库密码等信息。
访问
安装成功后,通过浏览器访问登录 JumpServer
地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin
密码: admin
登录提示配置文件错误,需要配置DOMAINS,要在.env
文件中修改,而不是config-example.txt
模版文件,项目启动后就不会引用改配置文件了。
vim /opt/jumpserver-offline-installer-v3.10.9-amd64/compose/.env
添加:DOMAINS=10.10.166.214:9005
资产添加
JumpServer配置没有太大难度,主要是资产添加,下面就对各种类别的资产进行说明。
主机资产
主机添加要注意开放对应的端口:
Linux:22端口,SSH协议
Windows:3389端口,打开windows的远程连接功能
设置特定IP访问:在防火墙里面设置,如下图
网络设备
网络设备也是一样直接添加资产就行,注意根据交换机配置设置对应的连接方式,同时可以设置ACL,只允许特定IP访问。
设置SSH协议
aaa
local-user admin service-type telnet ssh
stelnet server enable
undo telnet ipv6 server enable
ssh user admin
ssh user admin service-type all
ssh client first-time enable
ssh user admin authentication-type all
ssh server-source -i all
限制IP使用SSH登录,通过JumpServer登录资产都是经过服务器地址进行访问的,所以只需要放通服务器地址,所有连接只能通过JumpServer平台登录。
acl number 2100
rule 5 permit source 10.10.163.150 0
rule 10 permit source 10.10.166.215 0
user-interface vty 0 4
acl 2100 inbound
authentication-mode aaa
protocol inbound all
数据库
数据库需要打开远程连接的功能。
Web
发布机安装
Web资产访问需要通过远程应用发布机,所以需要先安装发布机。
服务器要求:Windows Server 2019
官网镜像下载地址:Windows Server 2019 版本 |Microsoft 评估中心
该Windows除了安装OpenSSH外,其他什么都不需要安装。
OpenSSH安装包:JumpServer堡垒机 | AList (xmhweb.cn)
发布机设置
根据官方文档进行设置-部署-测试即可,发布机会自动安装chrome浏览器和DBeaver等相关软件。
官方文档:JumpServer 远程应用发布机的配置步骤 – FIT2CLOUD 知识库
Web密码代填
官方文档:【V3】JumpServer 远程应用 Web 代填方式介绍 – FIT2CLOUD 知识库
根据官方文档操作即可,此处特别讲一下获取元素定位。
每个选择器定位方式都支持以下4种:
ID
:基于元素属性的定位方式,获取方式:标签自带属性name
:基于元素属性的定位方式,获取方式:标签自带属性CSS
:基于选择器,获取方式:复制-复制selectorXpath
:基于元素路径定位,获取方式:复制-复制Xpath
通常情况下web登录只有三项数据交互,包括用户名、密码、登录。这种情况设置资产时使用基本选择器即可满足需求,选择器通过元素定位按顺序填入对应输入框。
如下这种特殊登录界面,多了一个下拉框,使用基本选择器无法满足需求,所以需要使用脚本选择器。
[
{
"step": 1,
"value": "glpi",
"target": "id=login_name",
"command": "type"
},
{
"step": 2,
"value": "ysgbio@2023",
"target": "CSS=body > div.page-anonymous > div > div > div.card.card-md > div > form > div > div > div:nth-child(3) > input",
"command": "type"
},
{
"step": 3,
"value": "",
"target": "CSS=#select2-dropdown_auth1-container",
"command": "click"
},
{
"step": 4,
"value": "",
"target": "xpath=/html/body/span/span/span[2]/ul/li[1]",
"command": "click"
},
{
"step": 5,
"value": "",
"target": "xpath=/html/body/div[1]/div/div/div[2]/div/form/div/div/div[6]/button",
"command": "click"
}
]
不知道为什么下拉框定位元素无法使用id、name、css,需要通过复制完整Xpath进行定位。下拉框采用了分步处理,第一步点开下拉框(setp3),第二步选择目标选项(setp4)。
其他登录界面就需要自己举一反三了。
资产授权
官方文档:资产授权 – JumpServer 文档
经测试发现,授权仅有两种方式:
给用户授权某个资产:选择要授权的用户,用户组必须为空,选择要授权的资产,节点必须为空。
给用户组授权某个资产:选择要授权的用户组,用户必须为空,选择要授权的资产,节点必须为空。
如果不按以上操作,就会导致授权了所有资产,授权完成记得检查权限。
存储目录迁移
官方文档:JumpServer 存储目录迁移 – FIT2CLOUD 知识库
查看会话记录发现都是保存的录像,貌似用了一种特殊的压缩方式将文件保存的很小。随着使用时间增加,不可避免会出现磁盘空间不足的情况(不知道会话记录会保存多久,貌似一直会保存)。
查看磁盘占用率:df -hT
录像文件默认路径:/data/jumpserver/core/data/media
服务器迁移与备份
官方文档:迁移文档 – JumpServer 文档
官方文档已经写明了方法,但是有些细节是需要根据使用环境进行变更的。以下步骤只适用于docker-compose
安装方式。
数据库备份
由于我是使用docker-compose部署的,所以数据库备份操作如下:
# 将容器中的文件复制出来,迁移完都没有使用这个文件,部署完暂时没有发现异常
docker cp jms_core:/opt/jumpserver /opt/jumpserver_bak
# 记录 SECRET_KEY 和 BOOTSTRAP_TOKEN
# 复制的旧项目文件可不用执行,这两个值在.env文件中可找到
docker exec -it jms_core env | egrep "SECRET_KEY|BOOTSTRAP_TOKEN"
docker exec -it jms_mysql /bin/bash
# 官方文档没有-p选项,默认数据库没有密码,如果你的数据库设置了密码,就需要加上-p
mysqldump -uroot -p jumpserver > /opt/jumpserver.sql
exit
docker cp jms_mysql:/opt/jumpserver.sql /opt
# 停止容器
cd /opt/jumpserver-offline-installer-v3.10.9-amd64/compose/
docker-compose stop
# 或者直接在项目文件下执行
./jmsctl.sh down
备份文件转移
打包项目文件,复制到新的服务器。
# 可以加多个参数
tar -cvf a.tar /opt/所有jumpserver文件
# 复制
scp a.tar root@10.10.166.213:/opt
输入密码:
在新的服务器下解压文件
tar -xvf a.tar -C /opt
准备部署环境
由于我是直接从旧项目把原文件复制过来的,这里的部署可以省略
cd /opt
yum -y install wget
wget https://github.com/jumpserver/installer/releases/download/v3.10.10/jumpserver-installer-v3.10.10.tar.gz
tar -xf jumpserver-installer-v3.10.10.tar.gz
cd jumpserver-installer-v3.10.10
这里就要用到上面获取的SECRET_KEY
和BOOTSTRAP_TOKEN
,docker-compose部署的要修改.env
文件
vim ./compose/.env
# 修改下面选项, 其他保持默认
### 数据持久化目录, 安装完成后请勿随意更改, 可以使用其他目录如: /data/jumpserver
VOLUME_DIR=/opt/jumpserver
### 注意: SECRET_KEY 与旧版本不一致, 加密的数据将无法解密
# Core 配置
### 启动后不能再修改,否则密码等等信息无法解密
SECRET_KEY= # 从旧版本的配置文件获取后填入 (*)
BOOTSTRAP_TOKEN= # 从旧版本的配置文件获取后填入 (*)
LOG_LEVEL=ERROR
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True # 关闭浏览器后 session 过期
部署 JumpServer
# 安装
./jmsctl.sh install
配置选项使用默认值,不要进行修改。
docker exec -it jms_mysql /bin/bash
# 如果变量 $MARIADB_ROOT_PASSWORD 不存在,请使用 $MYSQL_ROOT_PASSWORD
mysql -uroot -p$MARIADB_ROOT_PASSWORD
drop database jumpserver;
create database jumpserver default charset 'utf8';
exit
exit
# /opt/jumpserver.sql 为旧版本数据库
./jmsctl.sh restore_db /opt/jumpserver.sql
# 启动
./jmsctl.sh start
迁移完成。
遇到的问题
资产数据信息异常,资产无法更新
如下图,管理员的账号登录之后发现我以前添加的资产信息、用户信息、操作日志都不见了,查了一下数据库发现数据都在,就很奇怪。
发帖到官方社区论坛,马上就得到了回应,解决方法:开启无痕模式访问,或者清除浏览器缓存。
无法连接到远程桌面服务器
使用4个月后,出现如下报错,只有Website类型的资产出现这个问题,由此可以判断是Web应用发布机出现问题,测试一下发现正常。
通过查阅官方资料,确定是RD授权到期了,默认只有120天的试用期。
由于我没有授权,所以在测试服务器上延长 RDS 授权服务器上的 120 天宽限期,执行以下操作:
1.打开注册表编辑器并导航以下项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
2. 右键单击“GracePeriod”键并选择【权限】
3.然后点击高级
4.选择Administrators编辑,勾选【完全控制】,应用保存
5.右键单击”L$RTMTIMEBOMB…” 值并且删除
6.关闭注册表编辑器并重启RDS服务器。
RD授权重新达到120天,Web资产可以正常连接。
评论