JumpServer堡垒机部署及配置
本文最后更新于9 天前,其中的信息可能已经过时,如有错误请发送邮件到1979007616@qq.com

简介

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。

系统配置

系统版本:ubuntu22.04

建议内存:4核8G

系统不需要做任何配置,保持干净的系统即可。

安装

版本选择

企业版和开源版区别如下表:

具体版本根据使用需求及预算。

下载

开源版:开源社区 – FIT2CLOUD 飞致云

企业版: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模版文件,项目启动后就不会引用改配置文件了。

[Question] 配置文件有问题,无法登录,请联系管理员或查看最新文档 如果你是管理员,可以更新配置文件解决,设置配置项 DOMAINS · Issue #12336 · jumpserver/jumpserver · GitHub

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:基于选择器,获取方式:复制-复制selector
  • Xpath:基于元素路径定位,获取方式:复制-复制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_KEYBOOTSTRAP_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资产可以正常连接。

相关链接

社区论坛 – FIT2CLOUD 飞致云

JumpServer 文档

小提示:您可以通过RSS订阅本站文章更新,订阅地址:https://blog.xmhweb.cn/feed

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇