主机安全防护之JumpServer

1、什么是跳板机和堡垒机?

1.1 跳板机和堡垒机

1)跳板机

属于内控堡垒机范畴,是一种用于单点登陆的主机应用系统。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。

跳板机应用软件:OpenVPN服务器,一旦通过OpenVPN连接公司内网服务器,可以对内网服务器做任何操作

2)堡垒机

在之前的发展过程中,人们逐渐认识到跳板机的不足,需要更新,更好的安全技术理念来实现运维操作管理。 堡垒机开始以独立的产品形态被广泛部署,有效降低了运维操作风险,使得运维操作管理变得更简单、更安全。能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一 些统计报表配合管理规范,来不断提升IT内控的合规性的产品

堡垒机4A功能:身份鉴别,账号管理,权限控制,安全审计

1.2 JumpServer 简介

JumpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计 系统。为互联网企业提供了认证,授权,审计,自动化运维等功能

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

JumpServer 采纳分布式架构, 支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,,可横向扩展,无并发访问限制。

JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产

官方地址: http://www.jumpserver.org/

github项目: https://github.com/jumpserver

JumpServer项目演示:https://demo.jumpserver.org/core/auth/login/

1.3 JumpServer 特点

官方介绍:https://docs.jumpserver.org/zh/master/

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

2 安装 JumpServer

2.1 安装环境说明

JumpServer 环境要求:

  • 硬件配置:2个CPU核心,4G 内存,50G 硬盘(最低)
  • 操作系统:Linux 发行版 x86_64
  • python:3.6+
  • 数据库:MySQL >=5.7 或者 mariadb >= 10.2,==数据库编码要求 uft8==
  • 缓存数据库:redis >= 6.0

2.2 安装方法介绍

官方提供了多种安装方法

JumpServer新版本部署官方文档:

jumpserver 1.4.8版本部署官方文档

2.3 基于容器部署JumpServer

2.3.1 Ubuntu部署docker

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# Step 5: 申请阿里云镜像加速地址,加入docker配置仓库文件
cat > /etc/docker/daemon.json << EOF
{
   "registry-mirrors": ["https://n0g7070z.mirror.aliyuncs.com"]
}
EOF

# Step 6: ubuntu安装docker默认自动启动,加速配置生效需重启docker
systemctl restart docker

2.3.2 部署 MySQL服务

2.3.2.1 下载 MySQL 镜像查看默认配置

下载MySQL镜像并运行, 查看当前默认配置不符合JumpServer安装要求

#拉取mysql5.7.30镜像启动
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d -p 3306:3306 mysql:5.7.30

MYSQL_ROOT_PASSWORD=123456  #设置数据库root用户密码
MYSQL_DATABASE=jumpserver   #创建JumpServer数据库
MYSQL_USER=jumpserver       #创建JumpServer数据库用户
MYSQL_PASSWORD=123456       #设置JumpServer用户的密码

#查看默认的MySQL容器配置不符合jumpserver要求
[root@ubuntu ~ ]# docker exec -it mysql bash

root@14454b2f5c18:/# mysql -uroot -p123456

#进入数据库,查看创建的JumpServer数据库使用的latin1字符集
mysql> show create database jumpserver;
+------------+-----------------------------------------------------------------------+
| Database   | Create Database                                                       |
+------------+-----------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+------------+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

#查看默认mysql数据库配置文件信息
root@14454b2f5c18:/# cat /etc/mysql/my.cnf
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

#mysql客户端配置文件
root@14454b2f5c18:/# cat /etc/mysql/conf.d/mysql.cnf
[mysql]

#mysql服务端配置文件
root@14454b2f5c18:/# grep '^[^#]' /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
symbolic-links=0

#删除默认配置mysql容器
[root@ubuntu ~ ]# docker rm mysql
mysql

[root@ubuntu ~ ]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.3.2.2 宿主机准备MySQL配置文件

#创建相关配置目录
mkdir -p /etc/mysql/conf.d/
mkdir -p /etc/mysql/mysql.conf.d/

#准备mysql服务端配置文件
tee /etc/mysql/mysql.conf.d/mysqld.cnf <<EOF
[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
symbolic-links=0
#添加此行,指定字符集
character-set-server=utf8
EOF

#准备mysql客户端配置文件
tee /etc/mysql/conf.d/mysql.cnf <<EOF
[mysql]
#添加此行,指定字符集
default-character-set=utf8
EOF

#mysql配置目录结构
[root@ubuntu ~ ]# tree /etc/mysql/
/etc/mysql/
├── conf.d
│   └── mysql.cnf
└── mysql.conf.d
    └── mysqld.cnf

2 directories, 2 files

2.3.2.3 启动 MySQL 容器

docker run -d -p 3306:3306 --name mysql --restart always \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=jumpserver \
-e MYSQL_USER=jumpserver     \
-e MYSQL_PASSWORD=123456       \
-v /data/mysql:/var/lib/mysql   \
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf   mysql:5.7.30

2.3.2.4 验证数据库字符集

[root@ubuntu ~ ]# docker exec -it mysql bash

root@728e249bef69:/# mysql -uroot -p123456

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapper

Connection id:      3
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.30 MySQL Community Server (GPL)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8    #mysql数据库服务默认字符集
Db     characterset:    utf8    #mysql数据库默认字符集
Client characterset:    utf8    #mysql数据库客户端默认字符集
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         2 min 0 sec

Threads: 1  Questions: 9  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.075
--------------

mysql>  show create database jumpserver;
+------------+---------------------------------------------------------------------+
| Database   | Create Database                                                     |
+------------+---------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+------------+---------------------------------------------------------------------+
1 row in set (0.00 sec)

2.3.3 部署redis 服务

2.3.3.1 启动redis服务

docker run -d -p 6379:6379 --name redis --restart always redis:6.2.5

2.3.3.2 验证redis服务

[root@ubuntu ~ ]# apt -y install redis
[root@ubuntu ~ ]# redis-cli -h 10.0.0.20
10.0.0.20:6379> info server
# Server
redis_version:6.2.5

2.2.4 部署 JumpServer

2.2.4.1 生成安全加密秘钥

JumpServer老版本文档有所说明:https://jumpserver.readthedocs.io/zh/1.4.8/dockerinstall.html

  • 使用 root 身份输入
  • 环境迁移和更新升级请检查 SECRET_KEY 是否与之前设置一致, 不能随机生成, 否则数据库所有加密的字段均无法解密
[root@ubuntu ~ ]# cat key.sh
#!/bin/bash
if [ ! "$SECRET_KEY" ]; then
  SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
  echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
  echo "SECRET_KEY=$SECRET_KEY";
else
  echo "SECRET_KEY=$SECRET_KEY";
fi

if [ ! "$BOOTSTRAP_TOKEN" ]; then
  BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
  echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
  echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN";
else
  echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN";
fi

#执行key脚本
[root@ubuntu ~ ]# bash key.sh
SECRET_KEY=bN5LHNTajIExpNK6V2tiKUEDuwRyk7zNbq2Q8BP7RlR6hjYDhF
BOOTSTRAP_TOKEN=msMDu06JNTyD0Cj3

#保存到root家目录环境文件中
[root@ubuntu ~ ]# tail -n2 .bashrc
SECRET_KEY=bN5LHNTajIExpNK6V2tiKUEDuwRyk7zNbq2Q8BP7RlR6hjYDhF
BOOTSTRAP_TOKEN=msMDu06JNTyD0Cj3

2.2.4.2 启动 JumpServer容器

启动JumpServer容器参数说明

docker run --name jms_all -d \
  -v /opt/jumpserver/core/data:/opt/jumpserver/data \
  -v /opt/jumpserver/koko/data:/opt/koko/data \
  -v /opt/jumpserver/lion/data:/opt/lion/data \
  -p 80:80 \
  -p 2222:2222 \
  -e SECRET_KEY=xxxxxx \            #2.2.4.1步骤生成的SECRET_KEY
  -e BOOTSTRAP_TOKEN=xxxxxx \       #2.2.4.1步骤生成的BOOTSTRAP_TOKEN
  -e LOG_LEVEL=ERROR \              #日志记录级别
  -e DB_HOST=192.168.x.x \          #连接mysql数据库地址 127.0.0.1默认以root用户连接
  -e DB_PORT=3306 \                 #连接mysql数据库端口
  -e DB_USER=jumpserver \           #登录数据库用户
  -e DB_PASSWORD=weakPassword \     #登录数据库用户的密码
  -e DB_NAME=jumpserver \           #访问的数据库
  -e REDIS_HOST=192.168.x.x \       #连接redis地址
  -e REDIS_PORT=6379 \              #连接redis端口
  -e REDIS_PASSWORD=weakPassword \  #连接redis密码
  --privileged=true \
  --restart always \
  jumpserver/jms_all:v2.13.0        #拉取JumpServer版本

范例:拉取JumpServer v2.13.0

docker run --name jms_all -d \
  -v /opt/jumpserver/core/data:/opt/jumpserver/data \
  -v /opt/jumpserver/koko/data:/opt/koko/data \
  -v /opt/jumpserver/lion/data:/opt/lion/data \
  -p 80:80 \
  -p 2222:2222 \
  -e SECRET_KEY=bN5LHNTajIExpNK6V2tiKUEDuwRyk7zNbq2Q8BP7RlR6hjYDhF \
  -e BOOTSTRAP_TOKEN=msMDu06JNTyD0Cj3 \
  -e LOG_LEVEL=ERROR \
  -e DB_HOST=10.0.0.20 \
  -e DB_PORT=3306 \
  -e DB_USER=jumpserver \
  -e DB_PASSWORD=123456 \
  -e DB_NAME=jumpserver \
  -e REDIS_HOST=10.0.0.20 \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD='' \
  --privileged=true \
  jumpserver/jms_all:v2.13.0

范例:拉取JumpServer v2.5.3

docker run --name jms_all -d \
  -v /opt/jumpserver/data:/opt/jumpserver/data \
  -p 80:80 \
  -p 2222:2222 \
  --restart always \
  -e SECRET_KEY=bN5LHNTajIExpNK6V2tiKUEDuwRyk7zNbq2Q8BP7RlR6hjYDhF \
  -e BOOTSTRAP_TOKEN=msMDu06JNTyD0Cj3 \
  -e DB_HOST=10.0.0.20 \
  -e DB_PORT=3306 \
  -e DB_USER=root \
  -e DB_PASSWORD=123456 \
  -e DB_NAME=jumpserver \
  -e REDIS_HOST=10.0.0.20 \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD='' \
  --privileged=true \
 jumpserver/jms_all:v2.5.3

2.2.4.3 查看JumpServer日志

[root@ubuntu ~ ]# docker logs -f jms_all
2021-08-22 17:49:29 Check database connection ...
.........
Starting supervisor: supervisord.
Jumpserver ALL v2.13.0
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org

进入容器命令 docker exec -it jms_all /bin/bash

2.2.4.4 查看JumpServer数据库

#安装连接mysql客户端工具
apt install -y mariadb-client

[root@ubuntu ~ ]# docker exec -it mysql bash

root@728e249bef69:/# mysql -ujumpserver -p123456

mysql> use jumpserver;

mysql> show tables;
+----------------------------------------------+
| Tables_in_jumpserver                         |
+----------------------------------------------+
| acls_loginacl                                |
| acls_loginassetacl                           |
| acls_loginassetacl_reviewers                 |
| applications_application                     |
................
.................
| users_usergroup                              |
| users_userpasswordhistory                    |
+----------------------------------------------+
97 rows in set (0.00 sec)

2.2.4.5 查看服务端口

[root@ubuntu ~ ]# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED             STATUS             PORTS           NAMES
95849afac25d   jumpserver/jms_all:v2.13.0   "./entrypoint.sh"        9 minutes ago       Up 9 minutes       0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:2222->2222/tcp, :::2222->2222/tcp   jms_all
83d39ad18955   redis:6.2.5                  "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp           redis
728e249bef69   mysql:5.7.30                 "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp           mysql

[root@ubuntu ~ ]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN

2.2.4.6 浏览器访问JumpServer页面

http:<JumpServerIP>/ui/#

用户: admin
初始密码: admin, 登录成功需要修改密码

3 JumpServer 基本使用

3.1 ssh连接

可以用admin用户和修改过的新密码,,连接jumpserver的ssh端口2222/tcp进行连接访问

ssh admin@10.0.0.20 -p2222

3.2 修改JumpServer管理员密码

3.3 邮件设置

smtp主机: smtp.qq.com
smtp端口: 25(不加密); 465(SSL加密); 587(TLS加密)
smtp账户: 2724911443@qq.com
smtp密码: absfxbtjfmwfddfh(QQ邮箱授权码)

如果不能正常发送邮件,可能是redis缓存问题,重启redis容器即可

3.4 管理用户和用户组

3.4.1 创建用户

JumpServer 支持三种用户

  • JumpServer管理员用户:用于管理JumpServer全部设置和资产
  • JumpServer用户:用于登录JumpServer服务器,管理后端服务器
  • JumpServer系统审计员:专门审查JumpServer用户操作

由于我们搭建JumpServer服务器内网地址,设置密码连接需要设置

http://localhost:8080/core/auth/password/reset/?token=2qUYm5xkCBhLzqPxNxVzrZ6THZPw64GFgvw6xfVwYoiGoHs0V1

#修改为JumpServer服务地址
http://10.0.0.20/core/auth/password/reset/?token=2qUYm5xkCBhLzqPxNxVzrZ6THZPw64GFgvw6xfVwYoiGoHs0V1

解决方法:修改JumpServer默认地址

相同方式再创建``xiaowang tom`用户

JumpServer服务用户存放在数据库的 users_user表中

mysql -ujumpserver -p123456 -h10.0.0.20

MySQL [(none)]> use jumpserver;

MySQL [jumpserver]> select username,name,email,role from users_user;
+-----------------------+-----------------------+--------------------------------------------+-------+
| username              | name                  | email                                      | role  |
+-----------------------+-----------------------+--------------------------------------------+-------+
| [Lion]6600b91093bb    | [Lion]6600b91093bb    | [Lion]6600b91093bb@serviceaccount.local    | App   |
| xiaoxuan              | xiaoxuan              | 2724911443@qq.com                          | User  |
| [Core] 4d66546ba071   | [Core] 4d66546ba071   | [Core] 4d66546ba071@serviceaccount.local   | App   |
| [KoKo]35327fe71acd    | [KoKo]35327fe71acd    | [KoKo]35327fe71acd@serviceaccount.local    | App   |
| xiaowang              | xiaowang              | xiaowang@qq.com                            | User  |
| [KoKo]6600b91093bb    | [KoKo]6600b91093bb    | [KoKo]6600b91093bb@serviceaccount.local    | App   |
| tom                   | tom                   | tom@qq.com                                 | User  |
| [Gua]35327fe71acd     | [Gua]35327fe71acd     | [Gua]35327fe71acd@serviceaccount.local     | App   |
| [Core] 6600b91093bb   | [Core] 6600b91093bb   | [Core] 6600b91093bb@serviceaccount.local   | App   |
| [Celery] 6600b91093bb | [Celery] 6600b91093bb | [Celery] 6600b91093bb@serviceaccount.local | App   |
| [Celery] 4d66546ba071 | [Celery] 4d66546ba071 | [Celery] 4d66546ba071@serviceaccount.local | App   |
| admin                 | Administrator         | admin@mycomany.com                         | Admin |
+-----------------------+-----------------------+--------------------------------------------+-------+

3.4.2 创建用户组

创建俩个用户组:运维组dev 和 测试组test

  • 运维组成员:xiaoxuan,xiaowang
  • 测试组成员:xiaowang,tom

==用户组信息查看==

MySQL [jumpserver]> select * from users_usergroup\G
*************************** 1. row ***************************
          id: 4d535d5ef2974ba998bfabd385ab671f
        name: dev
     comment: Linux云计算高级工程师组
date_created: 2021-08-22 14:20:26.117013
  created_by: Administrator
      org_id: 00000000-0000-0000-0000-000000000002
*************************** 2. row ***************************
          id: 7cf90814574d470fb0d4d6bfe10211e8
        name: test
     comment: 测试组
date_created: 2021-08-22 14:20:47.613088
  created_by: Administrator
      org_id: 00000000-0000-0000-0000-000000000002
*************************** 3. row ***************************
          id: b0808e5234b2426a94fb365c11de31dd
        name: Default
     comment:
date_created: 2021-08-22 10:49:54.368637
  created_by:
      org_id: 00000000-0000-0000-0000-000000000002

==用户和用户组绑定情况信息==

MySQL [jumpserver]> select * from users_user_groups;
+----+----------------------------------+----------------------------------+
| id | user_id                          | usergroup_id                     |
+----+----------------------------------+----------------------------------+
|  3 | 36e5850cfa54405f94268dae73a23e7d | 4d535d5ef2974ba998bfabd385ab671f |
|  2 | b91ffc48f86447c08ec525c9b0a1c1a4 | 4d535d5ef2974ba998bfabd385ab671f |
|  5 | b91ffc48f86447c08ec525c9b0a1c1a4 | 7cf90814574d470fb0d4d6bfe10211e8 |
|  4 | c20e2c310b4947c6aa6c6395d8905efb | 7cf90814574d470fb0d4d6bfe10211e8 |
|  1 | f8d9ea65144044a887acced2034e3754 | b0808e5234b2426a94fb365c11de31dd |
+----+----------------------------------+----------------------------------+

3.4.3 禁止用户登录

假如 xiaowang员工突然离职,离职审批未下来,但是我们需要先把 xiaowang员工的JumpServer账号禁止登录,以防删跟跑路

==禁止用户操作==

==查看禁止的用户显示==

==禁用的用户将无法登录JumpServer服务==

3.4.4 启用用户多因子认证功能

多因子认证Multi-Factor Authentication (MFA) 是一种简单有效的最佳安全实践方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源 。JumpServer 启用 MFA 后,用户登录网站时,系统将要求输入用户名和密码(第一安全要素),然后要求输入来自其 MFA 设备的动态验证码(第二安全要素),双因素的安全认证将为您的账户提供更高的安全保护

==开启xiaoxuan用户的双因子验证模式==

启用:用户双因子验证完成登录,该用户可以自行关闭验证
强制启用:只要JumpServer管理员才可以管理验证

==用户登录双因子验证步骤==

==重新登录==

3.4.5 创建系统审计员

==JumpServer系统审计员提供俩种界面:审计管理界面,用户界面==

3.5 资产管理

JumpServer 可以管理各种类型的资产

3.5.1 特权用户

  • 系统用户 是JumpServer 登录资产时使用的账号,如 root ssh root@host,而不是使用该用户名登录资产 (ssh admin@host);
  • 特权用户 是资产已存在的, 并且拥有 高级权限 的系统用户, 如 root 或 拥有 NOPASSWD: ALL sudo 权限的用户。 JumpServer 使用该用户来 推送系统用户获取资产硬件信息 等。
  • 普通用户 可以在资产上预先存在,也可以由 特权用户 来自动创建。

==创建俩个资产管理用户==

Ubuntu系统资产用户
CentOS系统资产用户

3.5.2 创建资产

创建可以被jumpServer用户访问的后端服务器,数据库,路由器,交换机等资产

创建资产规划

Ubuntu系统后端服务IP地址: 10.0.0.21 10.0.0.22
CentOS系统后端服务IP地址: 10.0.0.7 10.0.0.8

==JumpServer通过特效用户登录后端服务器,获取后端服务器各种资产信息==

==如果后端服务器资源更新,比如:内存增加,磁盘容量增加,JumpServer服务不会实时监控更新资产信息,需要手动刷写资产信息,其中JumpServer通过ansible获取后端服务器信息==

==把其余后端服务器添加到JumpServer资产中==

3.5.3 创建节点实现资产分类

3.6 授权资产

3.6.1 创建系统用户

系统用户是通过JumpServer登录到后端服务器上操作的用户

3.6.2 系统用户关联资产

将前面创建的系统用户利用ansible推送到后端服务器并自动创建

==当测试资产服务器连接性,以特性用户通过ansible将系统用户推送到资产服务器上创建;如果关联资产时,资产服务器关机状态,无法及时推送系统用户,也可以手动推送系统用户创建==

在后端服务器验证用户创建成功

[root@centos7 ~ ]# id xuan
uid=1000(xuan) gid=1000(xuan) groups=1000(xuan)

[root@centos8 ~ ]# id xuan
uid=1000(xuan) gid=1000(xuan) groups=1000(xuan)

3.6.3 JumpServer用户授权资产

通过授权规则, 为JumpServer用户分配可以访问的资产

dev开发: xiaoxuan, tom	资产:centos节点(Centos8 centos7)
linux运维: xiaoxuan, xiaowang	资产: default节点

3.6.4 测试登录查看资产

tom用户登录JumpServer的界面,查看可管理资产

xiaoxuan用户登录JumpServer的界面,查看可管理资产

3.6.5 管理资产

方法一:批量管理资产主机

方法二:JumpServer提供web界面终端管理器,对每个资产单独管理

3.6.6 JumpServer资产服务器上传下载文件

==通过JumpServer对资产服务器上传文件数据,默认上传目录为/tmp目录==

3.6.7 SSH管理资产

ssh -p2222 <JumpServer_user>@<JumpServer_IP>

3.7 JumpServer资产会话管理

JumpServer服务提供以管理员和安全审计员以在线监控JumpServer用户对资产服务器上命令操作,并把管理命令过程录像恢回放查看功能

3.7.1 在线监控会话操作

会话管理界面:可以查看到此刻哪些用户连接到后端资产服务器,并且显示连接方式

==选择会话监控,监控用户对资产服务器操作命令并可以及时中断危险操作,注意:监控界面是不可以对服务器输入任何字符,只是观看==

3.7.2 在线回放

JumpServer会把用户对资产服务器上操作录制,以便审计员和管理员查看管理操作

3.7.3 离线查看录像

在线会话查看会消耗JumpServer服务器性能,可以将历史会话过程下载再播放,下载录像文件为 tar文件后缀,需要下载相关的播放器

下载地址:https://github.com/jumpserver/VideoPlayer/releases

3.7.4 查看管理历史命令

JumpServer会用户对资产服务器管理操作命令记录,转到对应操作的历史会话录像

3.8 命令过滤器

使用命令过滤器可以禁止用户执行特定的危险命令,防止误操作或恶意行为

系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则 当用户使用这个系统用户登录资产, 然后执行一个命令.这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配, 当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行, 如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行

比如:对 xiaowang用户授予了三个服务器器资产(10.0.0.7 ,10.0.0.8 , 10.0.0.21),但是可以通过任一台资产服务器间接通过ssh连接其他服务器

3.8.1 添加过滤规则

JumpServer管理员身份添加命令过滤规则

==过滤规则支持命令和正则匹配==

rm
ssh
bash

3.8.2 绑定系统用户

3.8.3 管理测试

新设置了命令过滤规则需要重新连接资产服务器生效

3.9 资产的批量导出和导入

当后端服务器众多时,一台一台主机手动导入效率很低,可以利用资产的导出导入功能实现批量导入

比如:将后端服务器10.0.0.22加入资产中

3.10 数据库资产管理

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

dnf install -y mariadb-server
systemctl enable --now mariadb

[root@centos8 ~ ]# mysq
create database test;
grant all on test.* to test@'10.0.0.%' identified by '123456';

3.10.2 创建数据库资产

3.10.3 创建数据库的系统用户

==创建数据库的系统用户==

3.10.4 创建数据库授权规则

==将数据库资产授权给dev运维组和test测试组的用户==

3.10.5 web界面连接数据库

3.10.6 用ssh连接MySQL资产