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

二、安装

环境介绍

windows下docker compse安装jenkins docker安装jumpserver_docker

mysql
使用docker方式安装

注意:密码不要设置123456这种简单的密码

复制代码

mkdir -p /data/mysql/data
 编辑 mysql 的docker-compose.yml文件和mysqld.cnf
 docker-compose.yml
 version: ‘3’
 services:
 mysql:
 image: mysql:5.7.28
 restart: always
 container_name: mysql
 environment:
 - TZ=Asia/Shanghai
 - MYSQL_ROOT_PASSWORD=xxxx
 ports:
 - 3306:3306
 volumes:
 - /root:/root:rw
 - /tmp
 - ./mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
 - /data/mysql/data:/var/lib/mysql
 network_mode: hostmysqld.cnf
 [mysqld]
 federated
 max_connections = 2000
 max_allowed_packet = 64M
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 datadir = /var/lib/mysql
 #log-error = /var/log/mysql/error.log

By default we only accept connections from localhost

#bind-address = 127.0.0.1

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0
 #限制mysql内存占用
 #performance_schema_max_table_instances=400
 #table_definition_cache=400
 #table_open_cache=256character-set-server=utf8
 collation-server=utf8_general_ci
 skip-character-set-client-handshake[client]
 default-character-set=utf8[mysql]
 default-character-set=utf8[mysql.server]
 default-character-set=utf8[mysqld_safe]
 default-character-set=utf8

复制代码

创建jumpserver数据库

注意:密码不要设置123456这种简单的密码,否则会导致jumpserver无法写入数据!提示无法连接mysql

复制代码
复制代码

mysql -h 192.168.81.12 -uroot -pxxxx

mysql> create database jumpserver default charset ‘utf8mb4’;
 mysql> create user ‘jumpserver’@’%’ identified by ‘jumpserver’;
 mysql> grant all on jumpserver.* to ‘jumpserver’@’%’ identified by ‘jumpserver’;
 mysql> flush privileges;
 mysql> exit;

exit

复制代码
复制代码

redis
使用docker方式安装

mkdir -p /data/redis/data
docker run -d -it --name redis -p 6379:6379 -v /data/redis/data:/data --restart=always --sysctl net.core.somaxconn=1024 --net=host redis:4.0.10 --requirepass “123456”

jumpserver
Jumpserver 封装了一个 All in one Docker, 可以快速启动。该镜像集成了所需要的组件, 支持使用外置 Database 和 Redis

生成随机加密密钥
if [ “SECRET_KEY” >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi

if [ “BOOTSTRAP_TOKEN” >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi

启动jumpserver
这里使用最新版本1.5.6

复制代码
复制代码

mkdir -p /data/jumpserver
 docker run -d --name jumpserver -h jumpserver --restart=always 
 -v /data/jumpserver:/opt/jumpserver/data/media 
 -p 80:80 
 -p 2222:2222 
 -e SECRET_KEY=KaTeX parse error: Undefined control sequence: \ at position 12: SECRET_KEY \̲ ̲ -e BOOTSTRA…BOOTSTRAP_TOKEN 
 -e DB_HOST=192.168.81.12 
 -e DB_PORT=3306 
 -e DB_USER=jumpserver 
 -e DB_PASSWORD=“jumpserver” 
 -e DB_NAME=jumpserver 
 -e REDIS_HOST=192.168.81.12 
 -e REDIS_PORT=6379 
 -e REDIS_PASSWORD=“123456” 
 –net=host 
 jumpserver/jms_all:1.5.6


复制代码
复制代码
参数解释:

-h 指定docker主机名

-e 指定环境变量,注意修改mysql和redis的ip地址和密码。

查看jumpserver启动日志
复制代码
复制代码

docker logs -f jumpserver

2020-01-09 20:02:18 Thu Jan 9 20:02:18 2020
 2020-01-09 20:02:18 Jumpserver version 1.5.6, more see https://www.jumpserver.org
 2020-01-09 20:02:18 Check database connection …
 users
 [ ] 0001_initial
 …
 Starting guacd: SUCCESS
 Tomcat started.


Jumpserver ALL 1.5.6
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
有问题请参考 http://docs.jumpserver.org/zh/docs/faq.html

进入容器命令 docker exec -it jms_all /bin/bash
复制代码
复制代码

访问网页
http://192.168.81.12/

用户名:admin

密码:admin

windows下docker compse安装jenkins docker安装jumpserver_mysql_02

四、配置
更改密码
由于默认密码是admin,不安全。需要修改一下

windows下docker compse安装jenkins docker安装jumpserver_mysql_03

点击右侧更改密码即可。

windows下docker compse安装jenkins docker安装jumpserver_mysql_04

基本设置
点击系统设置–>基本设置

更改当前url和主题前缀

windows下docker compse安装jenkins docker安装jumpserver_mysql_05

配置邮箱

windows下docker compse安装jenkins docker安装jumpserver_mysql_06

用户管理
先来看一下jumpserver的用户

windows下docker compse安装jenkins docker安装jumpserver_mysql_07

用户组

创建开发组

windows下docker compse安装jenkins docker安装jumpserver_mysql_08

用户列表
默认只有一个administrator管理员账户,创建一个开发用户zhang

设置默认密码,开启MFA

windows下docker compse安装jenkins docker安装jumpserver_docker_09

用户登录

使用普通用户登录

windows下docker compse安装jenkins docker安装jumpserver_redis_10

再次输入密码

windows下docker compse安装jenkins docker安装jumpserver_docker_11

安装应用

windows下docker compse安装jenkins docker安装jumpserver_docker_12

使用手机扫描,输入6位校验码。

windows下docker compse安装jenkins docker安装jumpserver_redis_13

注意:部分安卓手机,可能无法扫描。需要手动输入提供的秘钥,在上图红框中的秘钥。

输入6位校验码之后,就会提示绑定成功

windows下docker compse安装jenkins docker安装jumpserver_redis_14

重新登录,输入用户和密码,会提示MFA认证

windows下docker compse安装jenkins docker安装jumpserver_mysql_15

登录成功之后,效果如下:

windows下docker compse安装jenkins docker安装jumpserver_mysql_16

资产管理
管理用户
管理用户是针对于主机资产的管理员账户,可以用来推送一般权限账户。

进入docker容器,创建用户assets,生成秘钥

复制代码
复制代码

docker exec -it jumpserver /bin/bash

useradd assets

su assets

$ ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa
 Generating public/private rsa key pair.
 Created directory ‘/home/assets/.ssh’.
 Your identification has been saved in /home/assets/.ssh/id_rsa.
 Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:N03AqZFRSrdTfPs+nF9x+FaOtKqkW73w4ItCHXFryS0 assets@jumpserver
 The key’s randomart image is:
 ±–[RSA 2048]----+
 | o=+o. |
 | .+o++. . |
 | .o+… . |
 | o E+. … |
 | .Soo… ooo|
 | . … o . ==|
 | . = . +.|
 | . * + o =o|
 | .+.+o+ +|
 ±—[SHA256]-----+


复制代码
复制代码

退出容器,拷贝秘钥对

cd /data/jumpserver/

docker cp jumpserver:/home/assets/.ssh/id_rsa .

docker cp jumpserver:/home/assets/.ssh/id_rsa.pub .

将id_rsa下载到桌面

创建管理用户assets,上传秘钥文件

windows下docker compse安装jenkins docker安装jumpserver_docker_17

系统用户
系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户。在授权规则中,会用到此用户!

创建develop,专门为开发人员使用的。

windows下docker compse安装jenkins docker安装jumpserver_mysql_18

注意:上面有一个sudo,表示不允许执行命令的列表。注意绝对路径要填写正确,否则不会生效。

禁止开发人员,切换用户。比如root

一定要禁止,否则输入

sudo su -
就可以直接切换到root用户,非常不安全!

资产列表

windows下docker compse安装jenkins docker安装jumpserver_redis_19

默认没有资产,default下面也没有节点,可以创建不同类型的节点,在节点组下创建节点。
也可以对网域进行管理,网域概念估计是之前版本的IDC、机房的概念。

创建资产
新建节点

windows下docker compse安装jenkins docker安装jumpserver_redis_20

重命名为测试环境,点击创建资产

windows下docker compse安装jenkins docker安装jumpserver_mysql_21

输入基本信息,如果ssh端口不是22,请更改。

windows下docker compse安装jenkins docker安装jumpserver_mysql_22

登录到主机svr-1,新建用户assets,生成秘钥

复制代码
复制代码

[root@svr-1 ~]# useradd assets
 [root@svr-1 ~]# su assets
 [assets@svr-1 root]$ ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa
 Generating public/private rsa key pair.
 Created directory ‘/home/assets/.ssh’.
 Your identification has been saved in /home/assets/.ssh/id_rsa.
 Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:SH/ap8XVKnqSYlfJLUpNsjUrdNyW4aY/fmOA/UgoF7k assets@svr-1
 The key’s randomart image is:
 ±–[RSA 2048]----+
 | |
 | . |
 | . …o o |
 | . o oo* . |
 | . S…OO. .|
 | =+EO=… |
 | …+=*o= |
 | o ==.oo+.|
 | . ooo .oo.|
 ±—[SHA256]-----+
 [assets@svr-1 root]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 [assets@svr-1 root]$ chmod 600 ~/.ssh/authorized_keys
 [assets@svr-1 ~]$ cd ~/.ssh/
 [assets@svr-1 .ssh]$ vi authorized_keys


复制代码
复制代码

登录到jumpserver,查看docker容器中assets的公钥

cd /data/jumpserver/

cat id_rsa.pub

在上面的步骤 vi authorized_keys ,添加assets的公钥

jumpserver assets

ssh-rsa AAAAB3NzaC1y…

登录svr-1主机,修改配置文件

vi /etc/sudoers
在root后面添加一行

Allow root to run any commands anywhere

root ALL=(ALL) ALL
assets ALL=(ALL) NOPASSWD:ALL
使用 :x! 强制保存

测试资产

windows下docker compse安装jenkins docker安装jumpserver_redis_23

确保测试是ok的

windows下docker compse安装jenkins docker安装jumpserver_docker_24

如果没有在svr-1开启assets用户的sudo免密,会导致测试失败!

权限管理

资产授权

点击创建权限规则

windows下docker compse安装jenkins docker安装jumpserver_docker_25

web终端
登录zhang用户,点击web终端

windows下docker compse安装jenkins docker安装jumpserver_mysql_26

点击svr-1

windows下docker compse安装jenkins docker安装jumpserver_docker_27

出现报错

Connect asset svr-1 error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password publickey], no supported methods remain
这是因为svr-1主机,还没有develop用户

点击资产管理–>系统用户,点击推送

windows下docker compse安装jenkins docker安装jumpserver_mysql_28

确保推送成功

windows下docker compse安装jenkins docker安装jumpserver_mysql_29

重新刷新web终端页面,再次点击svr-1,就可以登录了。

输入命令 date,效果如下:

windows下docker compse安装jenkins docker安装jumpserver_mysql_30

ssh终端
上面提到的是web终端方式,如果不喜欢的话,可以使用ssh客户端工具,比如xhsell。

这里推荐使用秘钥方式登录

确保windos10或者mac已经生成了ssh密钥对。

windows10路径为:C:\Users\用户名.ssh

mac路径为:~/.ssh

将id_rsa.pub文件内容,写入到ssh公钥

windows下docker compse安装jenkins docker安装jumpserver_docker_31

开启mfa

windows下docker compse安装jenkins docker安装jumpserver_docker_32

使用xshell新建一个连接。

注意:ip地址是jumpserver的地址,不是svr-1的地址

端口是2222,不是22

windows下docker compse安装jenkins docker安装jumpserver_mysql_33

选择秘钥验证,用户名zhang,选择私钥文件

windows下docker compse安装jenkins docker安装jumpserver_mysql_34

点击连接,会提示mfa认证。

windows下docker compse安装jenkins docker安装jumpserver_mysql_35

登录成功之后,效果如下:

windows下docker compse安装jenkins docker安装jumpserver_docker_36

输入数字1

windows下docker compse安装jenkins docker安装jumpserver_redis_37

因为只有一台资产,所以就直接登录了。如果有多台,会有一个列表选择的!

测试切换到root用户

windows下docker compse安装jenkins docker安装jumpserver_redis_38

提示输入密码,注意:我没有给develop设置密码。

那么我测试一下,给develop用户设置一个密码。

登录到svr-1,使用root登录,给develop设置密码

passwd develop

再次使用zhang登录堡垒机

windows下docker compse安装jenkins docker安装jumpserver_docker_39

提示无法执行。

上面是为开发用户,设置了一套权限。如果是管理员呢?

新建用户组

manage

windows下docker compse安装jenkins docker安装jumpserver_docker_40

新建一个系统用户manage

windows下docker compse安装jenkins docker安装jumpserver_docker_41

创建授权规则

windows下docker compse安装jenkins docker安装jumpserver_mysql_42

推送用户

windows下docker compse安装jenkins docker安装jumpserver_mysql_43

确保推送成功

windows下docker compse安装jenkins docker安装jumpserver_redis_44

使用admin登录jumpserver

点击会话管理–>web终端

点击svr-1,就会以manage用户登录了。

windows下docker compse安装jenkins docker安装jumpserver_docker_45

切换到root用户

windows下docker compse安装jenkins docker安装jumpserver_docker_46

由于没有给manage设置密码,我这里直接使用在svr-1设置sudo免密即可。

以root用户登录svr-1,修改配置文件

vi /etc/sudoers
增加一行manage

Allow root to run any commands anywhere

root ALL=(ALL) ALL
assets ALL=(ALL) NOPASSWD:ALL
manage ALL=(ALL) NOPASSWD:ALL

刷新web终端,再次切换用户

windows下docker compse安装jenkins docker安装jumpserver_redis_47

这样,就可以了!