1. 简介
JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v3.0 开源协议,是符合 4A 规范的运维安全审计系统,使用 Python 开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好,同时采纳分布式架构,支持多机房跨区域部署以及横向扩展,无资产数量及并发限制。
跳板机和堡垒机概念
跳板机:
跳板机就是一台服务器而已,运维人员在使用管理服务器的时候,必须先连上跳板机,然后才能去操控内网中的服务器,才能登录到目标设备上进行维护和操作。跳板机他是属于内网堡垒机的范畴,是一种用于单点登陆的主机应用系统。跳板机缺点,仅仅实现服务器登陆的安全,但是没有实现对于运维开发人员行为操控和审计。使用跳板机可能会对服务器进行错误操作,很难定位到操作人。
堡垒机:
结合了跳板机的优点,并且可以记录操作人员和记录,堡垒机能够创建系统账号,该系统账号功能是属于角色区分的作用,但是也无法确认该账号的执行人。
堡垒机的作用:
由于跳板机的不足,企业需要更新,更好,更安全的技术理念去管理服务器的运维操作,需要一种能够满足角色管理,角色授权,信息资源访问控制,操作记录和审计,系统更变和维护控制等等需求,且还能生成服务器资产统计报表等功能的一个it堡垒机。
1、核心系统运维和安全审计管理。
2、过滤和拦截非打请求访问,恶意攻击,拒绝不合法命令,进行审计口监控,报警和责任追踪。
3、报警,记录,分析,处理。
架构图
JumpServer 的功能
- 身份认证: 提供运维人员集中身份认证功能,使得运维人员仅需一次身份认证,就可以直接访问多台目标设备;
- 账号管理: 包括集中管理资产账号、应用账号、自定义任务定期收集主机用户,以及定期批量改密功能;
- 授权控制: 支持对资产、应用等进行多维度授权,包括用户、用户组、资产、资产节点、应用以及系统用户等,同时也支持对动作、时间和特权指令进行独特控制;
- 安全审计: 包括对运维操作会话的实时阻断、对资产和应用等操作的指令审计,以及会话录像的下载和离线回放。
JumpServer 的优势
- 开源开放: 零门槛,线上快速获取和安装;
- 无需插件: 仅需浏览器,极致的 Web Terminal 使用体验;
- 云端存储: 审计录像云端存储,永不丢失;
- 多云纳管: 一套系统,同时管理不同云上面的资产;
- 分布式部署: 轻松支持大规模并发访问;
- 多租户管理: 一套系统,多个子公司和部门同时使用;
- 多应用支持: 数据库,Windows远程应用,Kubernetes。
2. 安装部署
2.1 一键在线安装
快速安装 JumpServer:
- 最低配置:2核4G,可以访问互联网的 64 位 Linux 主机;
- 以 root 用户执行如下命令一键安装 JumpServer。
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.27.0/quick_start.sh | bash
由于是国外的地址,所以经常会下载失败,无法安装成功。
2.2 离线安装
社区版官网下载地址:
https://community.fit2cloud.com/#/products/jumpserver/downloads
官方安装文档:
https://docs.jumpserver.org/zh/master/install/setup_by_fast/#_4
安装环境:新系统,不要安装任何软件,防止端口占用。
特别注意:如果系统中有原来安装的 docker 一定要卸载删掉。
2.2.1 设置安装环境与目录
修改镜像源为阿里云源vim /etc/apt/sources.list
将阿里云镜像源加到最后
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
更新软件索引apt update
安装windows上传下载工具apt install lrzsz
将下载好的 JumpServer 安装包导入到 /opt/。
2.2.2 解压安装
将安装包解压 tar -xvf jumpserver-offline-installer-v2.27.0-amd64-113.tar.gz
cd 到解压的目录下。
根据需要修改配置文件模板, 如果不清楚可以跳过修改 cat config-example.txt
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/
## Docker 镜像配置
# DOCKER_IMAGE_MIRROR=1
## 安装配置
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR
## MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver
## Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24
## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64
## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100
## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# USE_LB=1
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m
## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1
# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=True 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080
JUMPSERVER_ENABLE_FONT_SMOOTHING=True
## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}
# 额外的配置
CURRENT_VERSION=
执行 ./jmsctl.sh install
./jmsctl.sh start # 启动
./jmsctl.sh down # 停止
./jmsctl.sh -h # 帮助
./jmsctl.sh uninstall # 卸载
安装会需要一点时间,耐心等待。
到这里会有一些设置,主要是数据持久化、外部mysql及端口等,看不懂可以直接回车默认。
到这一步就是安装完成了。
启动 JumpServer ./jmsctl.sh start
查看端口 可以发现已经启动成功了 netstat -tpln
2.2.3 登录浏览器查看
在浏览器输入 ip ,即可看到登录界面。
默认用户名和密码都是 admin。
登录之后会提示修改密码,之后再次输入新密码即可登录成功。
3. 基础使用操作
3.1 MFA认证配置
Jumpserver 毕竟管理的是资产,偶尔会对临时人员创建账户授权资产,为了安全性考虑,决定在账户密码的基础之上再加一个MFA认证,用于防止密码泄露的恶意操作。
Multi-Factor Authentication (MFA) 是一种简单有效的最佳安全实践方法,它能够在用户名和密码之外再额外增加一层安全保护。启用 MFA 后,用户登录Jumpserver时,系统将要求输入用户名和密码(第一安全要素),然后要求输入来自其 MFA 设备的动态验证码(第二安全要素),双因素的安全认证将为您的账户提供更高的安全保护。
使用MFA认证后,需要在手机下载一个APP,登录时需要将手机APP中的MFA验证器打开将验证码输入才可以 。
3.2 用户管理
创建用户比较简单,这里不做过多讲解。
带星号的为必填项。
批量添加用户,需要先下载模板,之后将用户信息填入好后在导入,就可以批量创建。
3.3 资产管理
在加入服务器资产之前,先设置系统用户
系统用户分为普通用户和特权用户,特权用户是服务器中已经存在的,也就是root用户,拥有最高权限。
普通用户则是拥有一般权限的用户,可创建也可以不创建。
创建特权用户,依次填好,点击提交。
认证栏可以选择密码或密钥,密码就是服务器root的登录密码。
密钥需要在被管理连接的服务器中创建好 。
创建密钥ssh-keygen -t rsa
一直按回车,就可以得到创建好的密钥。
将私钥 id_rsa 传上来,就可以使用密钥登录了。
设置好系统用户之后,在资产管理中点击 --> 资产列表 --> 创建
依次填入红框中的信息后,点击提交即可
没有出现红色的叉号就代表连接成功。
之后设置资产授权,点击创建。
依次填好后,点击提交
点击右上角的 web终端 选项,连接测试。
选择要连接的服务器,点击确认。
连接成功
使用 xshell 连接测试
新建会话,填入部署 jumpserver服务的机器 ip
端口号选择 2222
这次使用 zhangsan 的用户进行登录。
登录成功
输入 p 查看拥有登录权限的服务器,输入相应的数字,回车即可登录。
3.4 网域网关
在资产管理中找到网域列表,点击创建
输入名称和资产,点击提交
点击创建好的网域,在点击网关
点击创建
输入相关信息,点击提交,即可使用堡垒机登录其他网段的服务器
3.5 命令过滤
命令过滤功能可以配置相应的命令,使得用户在使用这些命令时(例如rm -rf)系统拒绝执行或需要管理员审批,保障系统的安全
3.6 应用管理
在应用管理中找到数据库,点击创建,选择要创建的数据库类型。
填写相关信息,点击提交
在权限管理中找到应用授权,点击创建,选择类型
填写相关信息,点击提交,即可在web界面进行连接测试。
3.7 日志审计
管理员用户,或者审计员用户,可以在视图审计台中,查看资产服务器登录记录,命令记录,以及回放等等
会话审计
日志审计
3.8 LDAP认证
首先要部署好 ldap 服务,并创建好用户。
可以看到已经创建成功。
回到 jumpserver工作界面,在系统设置中找到认证设置,点击LDAP,按步骤填写相关信息。
8、9 两步默认即可。
填写完成后继续下拉,点击启用LDAP认证。
点击 测试连接,可以看到成功匹配到两个用户。
点击 提交,会出现更新成功
点击 测试登录,填入用户名和密码,点击确认,可以看到认证已成功。
点击 用户导入,选择要导入的用户。
退出 jumpserver登录的用户,使用 ldap 用户登录。
登录成功。
此时使用 Xshell 也可以成功登录。
参考教程:[https://www.bilibili.com/video/BV1vR4y1w7sG/?spm_id_from=pageDriver&vd_source=c54e6b4278f9203d45a1941848edc8bd](https://www.bilibili.com/video/BV1vR4y1w7sG/?spm_id_from=pageDriver&vd_source=c54e6b4278f9203d45a1941848edc8bd)
[https://blog.csdn.net/tladagio/article/details/122745157](https://blog.csdn.net/tladagio/article/details/122745157)
4. FAQ
4.1 安装报错
报错信息:
invalid CIDR address 无效的CIDR地址
问题:网络问题( CIDR–无类别域间路由),原来安装的docker与 安装包里的发生冲突,造成报错。
解决:卸载掉原来安装的 docker 即可。最好使用新系统,没有安装任何软件的,因为 JumpServer会启动很多容器, 为防止端口占用。
4.2 更改密码
admin 初始密码登录提示错误
由于默认的 admin 密码错误,所以需要修改密码。docker exec -it jms_core /bin/bash
进入到 jms_core 容器内cd apps
cd 到 apps 目录下python manage.py changepassword admin
更改密码
输入两次后即可。
登录成功。
4.3 登录报错
报错信息Receive Connection closed
接收连接已关闭Connection websocket closed
连接websocket已关闭
**原因:**在Ubuntu中默认是不允许root用户远程登录的,只可以使用root权限。
解决:
所以需要修改sshd服务配置文件。vim /etc/ssh/sshd_config
可以看到里面有很多被注释掉的配置信息。
我们需要在里面加上 PermitRootLogin yes
( 如果被注释掉的信息里有则直接取消注释便可 )
找到 PermitRootLogin
改为PermitRootLogin yes
,并将注释去掉。
退出,重启sshd systemctl restart sshd
再次尝试,发现可以正常登录了。
参考文档:
Ubuntu18.04开启root用户远程登录(生产环境不建议)_ubuntu18.04开启root远程登录_小道克的博客-CSDN博客
安装配置 - 安装部署 - 《JumpServer v3.5 堡垒机使用手册》 - 书栈网 · BookStack