一、概述
Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。
二、安装
环境介绍
| 操作系统 | 配置 | ip地址 | 主机名 | 安装软件 |
|---|---|---|---|---|
| centos 7.6 | 2核4g | 192.168.31.200 | jumpserver | docker |
| centos 7.6 | 1核2g | 192.168.31.150 | svr-1 | 无 |
| centos 7.6 | 1核2g | 192.168.31.216 | svr-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
访问网页
用户名: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,上传秘钥文件