Jumpserver docker搭建及使用

1,884 阅读5分钟

一、概述

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

1.jpeg

二、安装

环境介绍

操作系统配置ip地址主机名安装软件
centos 7.62核4g192.168.31.200jumpserverdocker
centos 7.61核2g192.168.31.150svr-1
centos 7.61核2g192.168.31.216svr-2

mysql

使用docker方式安装

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

mkdir -p /data/mysql/data
docker run -d --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=abcd@1234  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

创建jumpserver数据库

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

# docker exec -it mysql /bin/bash
# mysql -u root -pabcd@1234
mysql> create database jumpserver default charset 'utf8mb4';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'abcd@1234';
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  redis:4.0.10 --requirepass "123456"

jumpserver

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

生成随机加密密钥

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; else echo $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; 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=$SECRET_KEY \
    -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \
    -e DB_HOST=192.168.31.200 \
    -e DB_PORT=3306 \
    -e DB_USER=jumpserver \
    -e DB_PASSWORD="abcd@1234" \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=192.168.31.200 \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD="123456" \
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.31.200/

用户名:admin 密码:admin

2.png

:登陆系统之后,第一时间要查看,jumpserver的2个组件是否启动。一个是guacamole;一个是koko。【这是系统的基础组件,必须保证在线】

会话管理--终端管理 查看这2个组件

3.png

2个组件必须是在线状态,如果不在线,需要进行处理。

guacamole不在线的处理方法

[root@localhost ~]# docker exec -it jumpserver bash
[root@jumpserver opt]#ll /config/guacamole/keys/
-rw-r----- 1 root root 236 Jun 24 18:02 jumpserver.key  #说明gua启动了,未注册成功。如果没有则说明未启动
[root@jumpserver opt]# rm /config/guacamole/keys/*
[root@jumpserver opt]# /etc/init.d/guacd start
[root@jumpserver opt]# exit
exit
[root@localhost ~]# docker restart jumpserver
jumpserver

再次查看guacamole是否在线。如果还不在线

在会话管理-终端管理直接修改[Gua]jumpserver成127.0.0.1

4.png 保存,然后

[root@localhost ~]# docker restart jumpserver
jumpserver

观察后,如果guacamole在线,则把127.0.0.1这条多余的删除即可。

koko不在线的处理方法

[root@localhost ~]# docker exec -it jumpserver bash
[root@jumpserver opt]# ll /opt/koko/data/keys/ -a
#如果提示不存在该目录,则说明koko未启动
[root@jumpserver opt]#cd koko
[root@jumpserver opt]#./koko restart -d
[root@jumpserver opt]# exit
exit
[root@localhost ~]# docker restart jumpserver
jumpserver
#查看组件是否在线
 
#如果/opt/koko/data/keys/ -a下面有 .access_key 文件,则执行以下
[root@jumpserver opt]#rm /opt/koko/data/keys/*
[root@jumpserver opt]# exit
exit
[root@localhost ~]# docker restart jumpserver
jumpserver
#查看组件是否在线

四、配置

更改密码

由于默认密码是admin,不安全。需要修改一下

6.png

点击右侧更改密码即可

7.png

基本设置

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

更改当前url和主题前缀

8.png

配置邮箱

9.png

用户管理

先来看一下jumpserver的用户

1.png

用户组

创建开发组

2.png

用户列表

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

设置默认密码,开启MFA,可以不用开启。

3.png

 用户登录

使用普通用户登录

1.png

再次输入密码

2.png

安装应用

3.png

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

1.png

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

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

2.png

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

1.png

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

2.png

资产管理

管理用户

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

进入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]-----+

退出容器,拷贝秘钥对

[root@jumpserver opt]#exit
exit 
[root@jumpserver opt]# cd /data/jumpserver/
[root@jumpserver opt]# docker cp jumpserver:/home/assets/.ssh/id_rsa .
[root@jumpserver opt]# docker cp jumpserver:/home/assets/.ssh/id_rsa.pub .

将id_rsa下载到桌面

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

1.png