JumpServer
  CXvnc1NhAWTQ 2023年12月11日 12 0

一、跳板机和堡垒机的区别

跳板机是一种用于单点登录的主机应用系统。跳板机通常是由一台服务器能过特定的软件实现,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险(比如,用户名/密码极易泄露),一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。像之前搭建的OpenVPN就属于跳板机。外部的用户以OpenVPN服务为跳板,可连入公司内网,访问内网主机。
      由于跳板机的不足,更多的组织需要更先进、更好的安全技术来实现运维操作管理和安全。堡垒机开始以独立的产品形态被广泛部署,有效降低了运维操作风险,使得运维操作管理变得更简单、更安全。堡垒机能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范,从而不断提升IT内控的合规性。比如,开发人员只能连接开发环境的机器,不能直接连接生产环境的机器;连入开发环境的机器后做了哪些事情,堡垒机也能记录下来。
      总结:堡垒机就是安全增强版的跳板机。

二、JumpServer介绍

2.1 简介

JumpServer 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。为互联网企业提供了认证、授权、审计、自动化运维等功能。
      JumpServer 使用 Python/Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
      JumpServer 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。
      JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

2.2 JumpServer的特色优势

  • 开源:零门槛,线上快速获取和安装。
  • 分布式:轻松支持大规模并发访问。
  • 无插件:仅需浏览器,极致的 Web Terminal 使用体验。
  • 多云支持:一套系统,同时管理不同云上面的资产。
  • 云端存储:审计录像云端存储,永不丢失。
  • 多租户:一套系统,多个子公司和部门同时使用。
  • 多应用支持:数据库、Windows远程应用、Kubernetes。

三、JumpServer安装

3.1 环境要求

JumpServer 环境要求:

  • 硬件配置: 2个CPU核心,4G 内存,50G 硬盘(最低)。
  • 操作系统: Linux 发行版 x86_64。
  • Python = 3.6.x。
  • MySQL Server ≥ 5.6 或者 Mariadb Server ≥ 5.5.56 数据库编码要求 uft8,新版要求5.7以上。
  • Redis: 新版要求6.0以上。

3.2 安装方法

官方提供了多种安装方法:

  • 手动部署:按组件逐个实现。
  • 极速部署:资产数量不多,或者测试体验的用户请使用本脚本快速部署。
  • 容器部署:基于Docker实现。
  • 分布式部署:适用大型环境。

3.3 一键脚本安装

参考https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/online_install/

curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

安装完成后可使用如下命令启动,然后访问

cd /opt/jumpserver-installer-v3.9.3 && ./jmsctl.sh start

其它一些管理命令:

./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade

Web访问:http://JumpServer安装IP

默认用户:admin;默认密码:admin,后续可修改密码。

JumpServer_堡垒机

四、JumpServer常见功能

4.1 邮件配置

点击界面右上角的小齿轮,进入系统设置->点击消息通知->点击邮件服务器设置,设置完点击提交。

JumpServer_JumpServer_02

JumpServer_JumpServer_03

测试连接,可以收到邮件。另外,发送邮件账号,默认使用 SMTP 账号作为发送账号。

JumpServer_JumpServer_04


JumpServer_JumpServer_05

4.2 JumpServer创建用户和组

JumpServer支持三种登录用户:系统管理员、普通用户、系统审计员。
      系统管理员(默认的admin用户)权限最大,既能管理JumpServer(控制台),又能做审计员(审计台),还能登录后端服务器(工作台)。即既能做管理员,又能做审计员,还能做普通用户,三种功能集于一身。
      审计员可以审计多种日志,包括登录日志、操作日志、改密日志、作业日志。
      为了达到演示效果,这里就创建三个组:开发组、测试组、运维组。每个组内各自建一个账号,而且每个组所能访问的机器是不一样的。另外再创建一个审计员用来审计日志。

组名(角色)

组内所包含的用户

所能访问的机器

开发组

Dev1

192.168.131.11(开发机)

测试组

Test1

192.168.131.12(测试机)

运维组

Ops1

192.168.131.13(生产环境)

审计员

Auditor1


4.2.1 创建组

点击控制台->用户管理->用户组,去创建新组。

JumpServer_堡垒机_06

4.2.2 创建用户

点击控制台->用户管理->用户列表,去创建新的登录用户。之后将用户放到对应的组。这里以Dev1用户为例(放到开发组),后续添加Test1、Ops1用户方法类似。

JumpServer_JumpServer_07

JumpServer_JumpServer_08

4.3 管理资产

JumpServer可以管理各类资产,包括服务器(Linux、Window、Unix)、数据库(MySQL)、网络设备(路由器、交换机)、应用(浏览器)等。
      JumpServer中的三种用户

  • 登录用户:分配给用户用于登录JumpServer时使用。像之前创建的Dev1、Test1、Ops1等就是登录用户。
  • 系统用户中的特权用户(管理用户):对后端服务器具有管理权限的系统帐号 root或administrator 及sudo ALL权限的用户,用于管理后端服务器。新版中已取消此名称,改名为系统用户中特权用户
  • 系统用户中的普通用户(系统用户):给登录用户使用ssh连接后端服务器时对应的系统用户,一般是后端服务器的普通的系统用户帐号。新版中改名为系统用户中普通用户

4.3.1 创建管理用户(系统用户中特权用户)

管理用户是jumpServer用来管理后端服务器或其它资产的管理员用户,此用户必须对后端服务器有管理权限。
      管理用户的特点:

  • 通常是后端服务器的root或者是具备root权限的超级用户。
  • 用于推送或者是创建系统用户。
  • 用于获取被管理的硬件资产信息。

以下是给开发机创建管理用户root的账号模板,测试机、运维机创建账号模板过程与之类似。

JumpServer_堡垒机_09

4.3.2 创建普通用户(系统用户中普通用户)

此用户为后端服务器的普通用户。也是创建账号模板,只不过不选特权账号。仍然以dev用户为例。test用户与之类似。

JumpServer_堡垒机_10

4.3.3 创建资产

控制台->资产管理->资产列表,先右击资产树Default去创建节点,类似于文件夹,以后创建的资产可隶属于该节点。如果机器多了,不用文件夹区分会显得比较混乱,不便管理。

JumpServer_堡垒机_11

之后可右击Dev资产(或者Test),去在该资产下面添加机器。这里Dev(开发)资产添加192.168.131.11,Test(测试)资产添加192.168.131.12。平台选择主机,操作系统选择Linux。

以下以在Dev资产创建主机为例,Test资产创建主机过程与之类似。

JumpServer_堡垒机_12

JumpServer_堡垒机_13

最终效果如下:

JumpServer_堡垒机_14

4.4 授权管理

将普通用户(系统用户中普通用户)和他们要登录的资产关联起来。比如,开发组下的所有用户只能登录Dev节点(开发机)下所有机器,测试组下的所有用户只能登录Test节点(测试机)下所有机器。

4.4.1 创建授权规则

      控制台->权限管理->资产授权,点击创建。授权对象可以选择指定用户,也可选择用户组。要授权的资产可以指定单个资产,也可按节点去指定资产。以下以为开发组用户授权用dev用户连接开发机为例,测试组用户授权方式与之类似。

JumpServer_堡垒机_15

JumpServer_JumpServer_16

从下面三幅图可以看到,JumpServer的开发组用户Dev1是可以以普通用户dev连接到资产dev-11(192.168.131.11)机器的。

JumpServer_堡垒机_17

JumpServer_JumpServer_18

JumpServer_JumpServer_19

4.4.2 测试连接后端服务器

用其它浏览器新开一个JumpServer登录界面,用Dev1用户登录进去之后,进入工作台点击我的资产,可以看到显示名为dev-11(即192.168.131.11) 的资产。

JumpServer_堡垒机_20

点击“Web终端”,再点击dev-11资产,选择dev账号模板连接。可以看到,dev用户已经推送到192.168.131.11机器上。dev用户之所以能够推送到后端服务器上是因为之前新建了管理用户root的账号模板,以root账号连接到资产并新建dev用户。

JumpServer_JumpServer_21

JumpServer_JumpServer_22

4.4.3 测试上传和下载文件

可以用SFTP方式连接服务器或者点击工作台的“文件管理”去上传文件。
       以下使用SFTP方式连接服务器上传文件。上传的文件放在后端服务器的/tmp目录下。

JumpServer_堡垒机_23

JumpServer_堡垒机_24

以下使用点击工作台的“文件管理”方式去上传文件。两种方法最后的效果是一样的。上传文件后,右击该文件,点击“下载”选项即可下载文件。

JumpServer_堡垒机_25

JumpServer_堡垒机_26

查看文件上传效果。

JumpServer_JumpServer_27

4.4.4 ssh 连接JumpServer

JumpServer 还支持用户通过ssh连接其2222/tcp端口进行访问。连接方式:ssh -p 2222 user@JumpServer IP。注意这里的用户为JumpServer登录用户。

JumpServer_JumpServer_28

JumpServer_堡垒机_29

4.5 会话管理

会话管理可以实现查看当前在线的会话命令记录、历史会话过去的执行过的命令,也可以强制将用户踢出。

4.5.1 查看在线会话

用之前创建的审计员Auditor1登录JumpServer,点击审计台,查看会话记录中的在线会话部分,看看都有哪些用户正在连JumpServer。

JumpServer_堡垒机_30

4.5.2 查看历史会话

4.5.2.1 在线回放

还可以在线回放历史会话。回放视频中还可以关注什么时间点执行了啥命令。还能快进回放历史会话的视频。

JumpServer_JumpServer_31

JumpServer_堡垒机_32

4.5.2.2 离线查看

可以将历史会话过程下载再播放,但需要下载相关的播放器。下载地址:https://github.com/jumpserver/VideoPlayer/releases

JumpServer_JumpServer_33

在JumpServer审计台查看历史会话部分点击下载,将历史会话视频下载为tar文件。再将tar文件上传到JumpServer Video Player下。

JumpServer_堡垒机_34

JumpServer_堡垒机_35

有了会话审计功能,运维人员就可以随时审计开发或测试人员具体什么时间做了什么操作。如果涉及公司内部追责,这些历史命令包括视频就能作为证据以证明自身的清白或对方的责任(以防甩锅哟),到时候该通报批评就通报批评,该降绩效就降绩效。

4.5.3 查看历史命令

JumpServer_堡垒机_36

4.5.4 终端管理

查看会话记录中的在线会话,点击监控,实时查看用户到底做了啥操作。当发现有危险操作时,可执行终断操作,将该用户踢出会话。以下三张图中,第二张图显示的是点击“监控”后实时监控的效果,第三张图显示的是点击“终断”后用户正进行的会话被踢出的效果

JumpServer_堡垒机_37

JumpServer_堡垒机_38

JumpServer_堡垒机_39

4.6 命令过滤器

如果发现了普通用户执行了危险操作事后再去追责其实是显得亡羊补牢了。而使用命令过滤器可以禁止用户执行特定的危险命令,防止误操作或恶意行为,避免可能带来的损失。
      系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则。当用户使用这个系统用户登录资产,然后执行一个命令。这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配,当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行,如果规则的动作是禁止,命令将会被禁止执行,否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行。

4.6.1 创建命令组

admin进入控制台->权限管理->命令过滤,选择命令组,点击创建。这里禁用rm命令。

JumpServer_JumpServer_40

4.6.2 创建命令过滤规则

admin进入控制台->权限管理->命令过滤,选择命令过滤,点击创建。

JumpServer_堡垒机_41

4.6.3 测试

用开发人员Dev1以dev用户连接至开发机,执行rm操作,发现含有“rm”的命令均被禁止执行。说明命令过滤规则生效了。

JumpServer_JumpServer_42

4.7 数据库授权

4.7.1 在后端服务器安装MySQL并创建数据库和用户

apt -y install mysql-server
#将mysql配置文件含有127.0.0.1的行给注释掉。行首替换为#
sed -i '/127.0.0.1/s/^/#/' /etc/mysql/mysql.conf.d/mysqld.cnf
systemctl restart mysql
mysql
mysql>create user admin@'192.168.131.%' identified by '123456';
#admin用户具有管理所有数据库的权限
mysql> grant all on *.* to admin@'192.168.131.%';

4.7.2 JumpServer创建数据库应用

控制台->资产管理->资产列表,选择数据库,点击创建。

JumpServer_堡垒机_43

4.7.3 JumpServer创建数据库授权规则

控制台->权限管理->资产授权。仍然需要通过账号模板新建Mysql的连接用户(这里为admin),以此用户再进行资产授权。

JumpServer_JumpServer_44

JumpServer_JumpServer_45

4.7.4 测试数据库连接

以Web终端方式连接是成功的。

JumpServer_JumpServer_46

4.8 资产的批量导入/导出

当需要管理的后端服务器很多时,每台主机手动导入效率很低。可以利用资产的导出导入功能实现批量导入,来提高效率。

4.8.1 资产的批量导出

JumpServer_JumpServer_47

JumpServer_JumpServer_48

JumpServer_堡垒机_49

4.8.2 资产的批量导入

参考上面导出的excel的文件格式,如果要批量导入资产,则按照如上格式添加要导入的机器信息,再将此excel文件导入。ID列、校验日期、创建日期的内容是系统自动生成的,可以删掉。主要添加主机名称、IP地址(注意标题更改为“*IP/主机”)、节点ID。也可以修改后面的协议组、节点路径等选项。

节点ID就是JumpServer网页地址中node_id参数的值。

JumpServer_JumpServer_50

JumpServer_JumpServer_51

JumpServer_堡垒机_52

JumpServer_JumpServer_53

此时就可以看到192.168.131.13这个生产环境机器就已经导入进来了。导入机器以后还需要进行资产授权,之后运维人员才能以Ops1用户登录JumpServer后再以root身份登录192.168.131.13。

JumpServer_堡垒机_54

4.9 网域列表

网域功能是为了解决部分环境(如:混合云)无法直接连接而新增的功能,原理是通过网关服务器进行跳转登录。如果说公司内部既有公司内网,又有公有云等多个网络,此时给每个网络均搭建一个JumpServer就显得浪费,成本也高。可以就准备一个JumpServer,既能连接内网,又能连接公有云网络。这就需要进行网域配置,以网域的方式将多个公有云和私有云逻辑上组合在一起,JumpServer可选择到底连接到哪个网络上。

JumpServer_堡垒机_55

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论