Jumpserver docker搭建及使用

【转载自https://www.cnblogs.com/xiao987334176/p/12172811.html

但在部署时出现了一些坑,一定要仔细注意。

目录

一、概述

二、安装

环境介绍

mysql

redis

jumpserver

生成随机加密密钥

启动jumpserver

查看jumpserver启动日志

访问网页

四、配置

更改密码

基本设置

用户管理

用户组

用户列表

 用户登录

资产管理

管理用户

系统用户

资产列表

创建资产

权限管理

资产授权

web终端

ssh终端

五、Windows资产连接

配置windows资产

 检查远程设置和防火墙设置

 检查用户和IP信息

创建管理用户

创建系统用户

新建win资产

创建新的授权规则

测试web终端

六、审计及监控


一、概述

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

二、安装

环境介绍

操作系统配置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

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

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

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

保存,然后

[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,不安全。需要修改一下

 点击右侧更改密码即可。

基本设置

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

更改当前url和主题前缀

 配置邮箱

用户管理

先来看一下jumpserver的用户

用户组

创建开发组

用户列表

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

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

 用户登录

使用普通用户登录

 再次输入密码

安装应用

 

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

 

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

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

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

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

资产管理

管理用户

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

进入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,上传秘钥文件

系统用户

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

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

 

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

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

一定要禁止,否则输入

sudo su -

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

资产列表

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

创建资产

新建节点

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

 

 输入基本信息,如果ssh端口不是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..O*O. .|
|         =+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的公钥

[root@localhost ~]# cd /data/jumpserver/
[root@localhost jumpserver]# cat id_rsa.pub 
ssh-rsa AAAAB3N.......hKvKVvXZ assets@jumpserver

将jumpserver中assets的公钥id_ras.pub内容拷贝到svr-1主机的authorized_keys中。

[assets@localhost .ssh]$ vi authorized_keys 
ssh-rsa AAAAB3N.......MJdmezGV assets@localhost.localdomain  #本地assets的公钥
ssh-rsa AAAAB3N.......hKvKVvXZ assets@jumpserver  #jumpserver中assets的公钥

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

[assets@svr-1 .ssh]$ exit  #切换到root账户下
exit
[root@localhost ~]#vi /etc/sudoers

在root后面添加一行

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
assets   ALL=(ALL)    NOPASSWD:ALL

使用 :wq! 强制保存

测试资产

 确保测试是ok的

 

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

权限管理

资产授权

点击创建权限规则

 

web终端

登录zhang用户,点击web终端

 点击svr-1

 出现报错

Connect asset svr-1 error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password publickey], no supported methods remain

这是因为svr-1主机,还没有develop用户

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

 确保推送成功

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

输入命令 date,效果如下:

ssh终端

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

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

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

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

mac路径为:~/.ssh

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

 开启MFA,可以不用开启。

 使用xshell新建一个连接。

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

端口是2222,不是22

 选择秘钥验证,用户名zhang,选择私钥文件(密钥在zhang登陆web页面后获取zhang_jumpserver.pem)

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

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

 输入数字1

五、Windows资产连接

配置windows资产

 检查远程设置和防火墙设置

# Windows 7/2008 勾选 允许运行任意版本远程桌面的计算机连接(较不安全)(L)
# Windows 8/10/2012 只勾选 允许远程连接到此计算机(L), 其他选项请取消勾选

# Windows防火墙-高级设置-入站规则 把远程桌面开头的选项 右键-启用规则(建议关闭windows防火墙不然会导致连接失败
# Windows 7/2008 启用 远程桌面(TCP-In)
# Windows 8/10/2012 启用 远程桌面-用户模式(TCP-In)

RDP 协议资产连接说明 - 图2

 检查用户和IP信息

# 注:因为 windows 暂时不支持推送, 所以必须使用资产上面已经存在的账户进行登录。

 在win资产上建立带密码的用户win,并将其加到Administrators组里。

也可以用管理员权限的命令提示符cmd完成。

net user win 123 /add    #添加用户
net localgroup Administrators win /add   #将用户添加到管理组
net user win /active:yes   #激活用户

创建管理用户

账户密码要与win资产一致。

创建系统用户

务必选择手动登陆,否则在连接时可能会出错。

然后到win资产上创建test用户,并加到administrators组中。

新建win资产

创建新的授权规则

测试web终端

登陆zhang用户,测试web终端。

点击对应的系统用户输入密码登录即可。

六、审计及监控

在会话管理中可以看到在线会话、历史会话、命令记录等,在日志审计也可以登录日志,方便审计工作。最强大的功能是可以看到实时监控及回放。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值