JumpServer多云环境下更好用的堡垒机

网友投稿 969 2022-05-30

一、jumpServer简介

1.1、页面展示

1.2、特色优势

1.3、功能列表

1.4、架构图

1.5、端口说明

1.6、产品组件

一、JumpServer简介

1.1、页面展示

1.2、特色优势

1.3、功能列表

1.4、架构图

1.5、端口说明

1.6、产品组件

二、安装JumpServer

2.1、一键自动部署

JumpServer:多云环境下更好用的堡垒机

2.2、手动部署

三、JumpServer使用说明

3.1、系统设置

3.1.1、基本设置

3.1.2、邮件设置

3.1.3、登陆用户

3.2、资产管理

3.2.1、编辑资产树

3.2.2、创建管理用户

3.2.3、创建资产

3.2.4、创建数据库应用

3.2.5、创建系统用户

3.3、创建授权规则

3.3.1、为用户分配资产

3.3.2、为用户分配数据库应用

3.4、用户登录

3.5、查看用户操作回放

一、JumpServer简介

JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。

JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。

JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。

**官网网址:**https://www.jumpserver.org/

文档:https://docs.jumpserver.org/zh/master/

GitHub:https://github.com/jumpserver/jumpserver

1.1、页面展示

1.2、特色优势

开源: 零门槛,线上快速获取和安装;

分布式: 轻松支持大规模并发访问;

无插件: 仅需浏览器,极致的 Web Terminal 使用体验;

多云支持: 一套系统,同时管理不同云上面的资产;

云端存储: 审计录像云端存储,永不丢失;

多租户: 一套系统,多个子公司和部门同时使用;

多应用支持: 数据库,Windows远程应用,Kubernetes。

1.3、功能列表

1.4、架构图

首先前端是nginx提供的动态页面,可以通过浏览器来进行访问;

接着jumpserver为管理后台,管理员可以通过web页面进行资产管理、用户管理、资产授权等操作,用户可以通过web页面进行资产登录、文件管理等操作;

coco 为ssh server和 web terminal server,用户可以使用自己的账户通过ssh或者web terminal访问ssh协议和telnet协议资产;

Luna 为web terminal server前端页面,用户使用web terminal方式登录所需要的组件;

Guacamole 为RDP协议和vnc协议资产组件,用户可以通过web terminal来连接RDP协议和vnc协议资产(暂时只能通过web terminal来访问);

1.5、端口说明

端口涉及如下端口:

Jumpserver 默认端口为 8080/tcp ,浏览器访问的端口

Coco 默认 SSH 端口为 2222/tcp,Web Terminal默认 端口为 5000/tcp ,通过ssh连接的时候使用的端口

Guacamole 默认端口为 8081/tcp

Nginx 默认端口为 80/tcp

Redis 默认端口为 6379/tcp

Mysql/Mariadb 默认端口为 3306/tcp

1.6、产品组件

Jumpserver:管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。

Coco:Coco为 SSH Server 和 Web Terminal Server。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal直接访问被授权的资产。不需要知道服务器的账户和密码,现在 Coco 已经被 koko 取代。

Luna:luna 为 Web Terminal Server 前端页面,用户使用 Web Terminal 方式登录时所需要的插件。

Guacamole:Guacamole是一个开源项目,为远程桌面提供解决方案。Jumpserver 使用其组件实现 RDP和VNC 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用。

二、安装JumpServer

极速安装:https://docs.jumpserver.org/zh/master/install/setup_by_fast/

完整文档:https://docs.jumpserver.org

演示视频:https://www.bilibili.com/video/BV1ZV41127GB

有2种安装方式,可以一键自动部署,也可以手动部署,建议一键自动部署。

2.1、一键自动部署

仅需两步快速安装 JumpServer:

准备一台 2核4G (最低)且可以访问互联网的 64 位 Linux 主机;

以 root 用户执行如下命令一键安装 JumpServer。

-- 一键安装启动 curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.8.2/quick_start.sh | bash -- 注意:安装过程需要下载docker环境,重启docker,下载很多镜像,最后大约占用空间3g左右,安装时间大约30分钟。 [root@docker36 jumpserver-installer-v2.8.2]# docker images | grep jumpserver jumpserver/core v2.8.2 f3dd5c1946ec 2 days ago 1.01GB jumpserver/guacamole v2.8.2 8869e8512eec 2 days ago 824MB jumpserver/lina v2.8.2 98abb9179db1 2 days ago 27.9MB jumpserver/luna v2.8.2 d2e17fada2f6 2 days ago 27MB jumpserver/koko v2.8.2 40cdabc32153 2 days ago 426MB jumpserver/mysql 5 697daaecf703 3 months ago 448MB jumpserver/redis 6-alpine f731cd48185c 3 months ago 31.6MB jumpserver/nginx alpine2 b47070d178ad 18 months ago 18.5MB -- 若不能下载,请添加以下解析: echo " 13.229.188.59 github.com 199.232.4.133 raw.githubusercontent.com " >> /etc/hosts echo " nameserver 114.114.114.114 nameserver 8.8.8.8 nameserver 223.5.5.5 " > /etc/resolv.conf -- 启动 cd /opt/jumpserver-installer-v2.8.2/ ./jmsctl.sh start -- 会启动9个容器,创建一个网络叫jms_net,子网为:"192.168.250.0/24" -- 首次启动可能会报错,可以使用命令“docker logs -f jms_core --tail 200”查看,等表结构合并完毕后,确定该命令输出都是 ok, 没有 error, 重新 start 即可,详见https://docs.jumpserver.org/zh/master/install/setup_by_fast/ -- Web访问 http://192.168.66.36:8080 https://192.168.66.36:8443 (默认用户名密码为:admin/admin) -- 启动后的容器和状态 [root@docker36 jumpserver-installer-v2.8.2]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26b95ecb8900 jumpserver/nginx:alpine2 "sh -c 'crond -b -d …" 57 seconds ago Up 51 seconds (healthy) 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp jms_nginx 9c25659c23c4 jumpserver/luna:v2.8.2 "/docker-entrypoint.…" About a minute ago Up About a minute (healthy) 80/tcp jms_luna c8d74738aaa2 jumpserver/lina:v2.8.2 "/docker-entrypoint.…" About a minute ago Up About a minute (healthy) 80/tcp jms_lina bc24581c6d0a jumpserver/koko:v2.8.2 "./entrypoint.sh" About a minute ago Up About a minute (healthy) 0.0.0.0:2222->2222/tcp, 5000/tcp jms_koko cc17285dc6ec jumpserver/guacamole:v2.8.2 "/init" About a minute ago Up About a minute (healthy) 8080/tcp jms_guacamole edac0a216aa3 jumpserver/core:v2.8.2 "./entrypoint.sh sta…" About a minute ago Up About a minute (healthy) 8070/tcp, 8080/tcp jms_celery 2ca03ab4d62d jumpserver/core:v2.8.2 "./entrypoint.sh sta…" 11 minutes ago Up 11 minutes (healthy) 8070/tcp, 8080/tcp jms_core 69e9bdede65f jumpserver/redis:6-alpine "docker-entrypoint.s…" 13 minutes ago Up 13 minutes (healthy) 6379/tcp jms_redis c73896dc22ad jumpserver/mysql:5 "docker-entrypoint.s…" 13 minutes ago Up 13 minutes (healthy) 3306/tcp, 33060/tcp jms_mysql [root@docker36 jumpserver-installer-v2.8.2]# [root@docker36 jumpserver-installer-v2.8.2]# ./jmsctl.sh status Name Command State Ports ----------------------------------------------------------------------------------------------------------- jms_celery ./entrypoint.sh start task Up (healthy) 8070/tcp, 8080/tcp jms_core ./entrypoint.sh start web Up (healthy) 8070/tcp, 8080/tcp jms_guacamole /init Up (healthy) 8080/tcp jms_koko ./entrypoint.sh Up (healthy) 0.0.0.0:2222->2222/tcp, 5000/tcp jms_lina /docker-entrypoint.sh ngin ... Up (healthy) 80/tcp jms_luna /docker-entrypoint.sh ngin ... Up (healthy) 80/tcp jms_mysql docker-entrypoint.sh --cha ... Up (healthy) 3306/tcp, 33060/tcp jms_nginx sh -c crond -b -d 8 && ngi ... Up (healthy) 0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp jms_redis docker-entrypoint.sh redis ... Up (healthy) 6379/tcp

https://192.168.66.36:8443

http://192.168.66.36:8080/

提示:第一次登陆时,它会让我们重设密码;

提示:重设密码后,重新登录,jumpserver的首页就是下图这样;后续我们就可以在这个界面来管理内网服务器了;到此jumpserver服务器就搭建好了;

2.2、手动部署

cd /opt yum -y install wget wget https://github.com/jumpserver/installer/releases/download/v2.8.2/jumpserver-installer-v2.8.2.tar.gz tar -xf jumpserver-installer-v2.8.2.tar.gz cd jumpserver-installer-v2.8.2 cat config-example.txt # 以下设置如果为空系统会自动生成随机字符串填入 ## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置 ## 安装配置 DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com VOLUME_DIR=/opt/jumpserver DOCKER_DIR=/var/lib/docker SECRET_KEY= BOOTSTRAP_TOKEN= LOG_LEVEL=ERROR ## 使用外置 MySQL 配置 USE_EXTERNAL_MYSQL=0 DB_HOST=mysql DB_PORT=3306 DB_USER=root DB_PASSWORD= DB_NAME=jumpserver ## 使用外置 Redis 配置 USE_EXTERNAL_REDIS=0 REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD= ## Compose 项目设置 COMPOSE_PROJECT_NAME=jms COMPOSE_HTTP_TIMEOUT=3600 DOCKER_CLIENT_TIMEOUT=3600 DOCKER_SUBNET=192.168.250.0/24 ## IPV6 DOCKER_SUBNET_IPV6=2001:db8:10::/64 USE_IPV6=0 ## Nginx 配置,这个 Nginx 是用来分发路径到不同的服务 HTTP_PORT=80 HTTPS_PORT=443 SSH_PORT=2222 ## LB 配置, 这个 Nginx 是 HA 时可以启动负载均衡到不同的主机 USE_LB=0 LB_HTTP_PORT=80 LB_HTTPS_PORT=443 LB_SSH_PORT=2222 ## Task 配置 USE_TASK=1 ## XPack USE_XPACK=0 # Mysql 容器配置 MYSQL_ROOT_PASSWORD= MYSQL_DATABASE=jumpserver # Core 配置 # SESSION_COOKIE_AGE=86400 SESSION_EXPIRE_AT_BROWSER_CLOSE=true ### Keycloak 配置方式 ### AUTH_OPENID=true ### BASE_SITE_URL=https://jumpserver.company.com/ ### AUTH_OPENID_SERVER_URL=https://keycloak.company.com/auth ### AUTH_OPENID_REALM_NAME=cmp ### AUTH_OPENID_CLIENT_ID=jumpserver ### AUTH_OPENID_CLIENT_SECRET= ### AUTH_OPENID_SHARE_SESSION=true ### AUTH_OPENID_IGNORE_SSL_VERIFICATION=true # Koko 配置 CORE_HOST=http://core:8080 # Guacamole 配置 JUMPSERVER_SERVER=http://core:8080 JUMPSERVER_KEY_DIR=/config/guacamole/data/key/ JUMPSERVER_RECORD_PATH=/config/guacamole/data/record/ JUMPSERVER_DRIVE_PATH=/config/guacamole/data/drive/ JUMPSERVER_ENABLE_DRIVE=true JUMPSERVER_CLEAR_DRIVE_SESSION=true JUMPSERVER_CLEAR_DRIVE_SCHEDULE=24

三、JumpServer使用说明

视频教程 JumpServer 从入门到精通:https://www.bilibili.com/video/BV19D4y1S7s4

官网:https://jumpserver.readthedocs.io/zh/master/admin-guide/quick_start/

3.1、系统设置

3.1.1、基本设置

基本设置是必须设置当前jumpserver的url。

3.1.2、邮件设置

必须设置才能使用与邮件相关的功能

不可以同时勾选 使用SSL 和 使用TLS

在系统设置—>邮件设置,把对应的账号信息,邮件服务器信息都填写好,然后测试连接,如果可以正常收到邮件,说明邮件服务器信息和邮件用户名密码没有问题;最后点提交;

和邮件主题前缀;这样在用户收到邮件中的链接都会指向这个jumpserver的url;

收到邮件:

3.1.3、登陆用户

jumpserver涉及到的三个用户:

登录用户,用于创建给开发人员进行登录JumpServer的用户;

管理用户,指定用户名和密码,就是添加的资源机器的登录账号;

系统用户,jumpserver跳转登录资产时使用的用户;

在用户管理—>用户列表—>创建;填写好用户相关信息后,点击最下面的提交;

提示:新建用户成功以后,对应的用户邮箱就会收到一份有jumpserver发送到用户创建成功的邮件,用户可以点击此邮件中的链接进行密码设定;

3.2、资产管理

准备两个测试资产和一个数据库来验证功能

Windows 资产先进行 Windows SSH 设置

MySQL 应用需要授权 core 和 koko 的远程访问的权限 MySQL 应用要求

3.2.1、编辑资产树

根节点 Default 不能重名, 右击节点可以添加、删除和重命名节点, 以及进行资产相关的操作

说明:\:

点击页面左侧的 资产管理 - 资产列表

先在根节点 Default 右键新建 SSH Server 和 RDP Server 两个节点

Defaule ├─ SSH Server └─ RDP Server

3.2.2、创建管理用户

点击页面左侧的 资产管理 - 新建管理用户 创建两个管理用户, 管理用户的内容就是上面表单的 Admin User 和 Password

名称不能重名, 密码或者密钥二选一即可, 一些资产不允许通过 密码 认证可以改用 私钥 认证

资产管理---->管理用户---->创建,填写好对应被管控端的管理员和密码点击提交;管理用户是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来 推送系统用户、获取资产硬件信息 等。

3.2.3、创建资产

点击页面左侧的 资产管理 - 资产列表 - 创建资产 把两个资产导入

主机名不能重名

创建 Windows 资产, 注意协议组我们需要选择 ssh 和 rdp, 否则无法获取 Windows 资产的状态及硬件信息。

提示:资产管理—>资产列表—>新建,填写对应被管控的的主机信息和ip地址信息,以及管理用户,点击最下方的提交;

提示:提交完成后,我们就可以在资产列表中看到我们刚才添加到主机;

3.2.4、创建数据库应用

击页面左侧的 应用管理 - 数据库应用 - 创建数据库应用 创建 mysql 数据库

数据库 选项可以留空, 如果是某些特定用户, 只允许访问指定的数据库, 这里指定数据库名称即可

3.2.5、创建系统用户

点击页面左侧的 资产管理 - 系统用户 - 创建系统用户 创建对应协议系统用户

资产管理—>系统用户—>新建,填写好用户名,勾选自动推送和自动生成密钥,点击最下方的提交即可;这里填写的用户会用作jumpserver上登录对应的主机用到用户,如果被管控端没有这个用户,jumpserver就会利用我们刚才添加的管理用户去创建一个这里的系统用户;

3.3、创建授权规则

权限管理—>资产授权—>创建,填写好名称后,要选择用户和组以及资产和系统用户,然后点击最下方的提交;到此一个资源就授权给test用户和test组中的成员了;这里需要注意一点,一个节点中有很多server,如果你只想授权单台server给某个用户,下面的节点就留空,如果你想授权一个节点给用户你可以选择节点,上面的资产就可以留空,如果你又想授权单个资产和某个节点给用户,就选择对应的资产和节点即可;如果这里选择default节点,表示把default节点下的所有主机都授权给用户;默认default节点包含所有主机;

3.3.1、为用户分配资产

点击页面左侧的 授权管理 - 资产授权 - 创建授权规则 创建两个授权

3.3.2、为用户分配数据库应用

点击页面左侧的 授权管理 - 数据库应用 - 创建授权规则 创建数据库授权

3.4、用户登录

登录 JumpServer

点击页面左侧的 会话管理 - Web终端 用户只能看到自己被管理员授权了的 资产 , 如果登录后无资产, 请联系管理员进行确认

连接资产

在我的资产点击资产右边的 连接 快速连接资产

也可以点击左侧栏的 Web终端 点击 资产 名字, 就连上资产了

如果显示连接 超时, 请参考 FAQ 文档进行处理

断开资产

点击页面顶部的 Server 按钮会弹出选个选项, 第一个断开所选的连接, 第二个断开所有连接

也可以直接点资产小窗口的 X , SSH 会话也可以输入 exit 来退出

直接关闭页面也可以, 但是不推荐

文件管理

点击 文件管理

先在左边选择资产, 目前只支持自动登录的 SSH 协议 资产

也可以使用 sftp 方式进行 文件管理

3.5、查看用户操作回放

点击会话管理---->会话管理---->历史会话----> 找到对应会话后面的回放即可查看对应用户在过去会话中执行的操作;

TCP/IP web前端

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!
下一篇:华为云云原生之多云管理利器Karmada从0到1的实操【与云原生的故事】
相关文章