Jumpserver 是一款使用Python, Django 开发的开源跳板机系统, 为互联网企业提供了认证,授权,审计,自动化运维等功能。我们称为跳板机(在web界面操作),类似于VPN,但是jumpserver是七层代理 VPN是四层代理,对于开发和测试我们会让他们使用jumpserver(访问nginx,mysql等服务,一般都是在浏览器上操作) jumpserver分为开源和商业两个版本,提供了认识,授权。商业堡垒机安全机制会相对高一些(可以手机收验证码,或者U顿插入才可以登录)

主要功能 :需要通过这台机器跳到不同的机器
1 记录所有操作会进行录像,以及可以看到谁在登录 
2 对于危险的命令可以禁止执行 如:rm 、reboot 等等
3 支持登录认证,LDAP认证,多因子认证。
4 可以针对不同的用户给予不同的权限,可以进行资产分配,指定用户访问指定的服务器
5 账号管理:集中账号管理,统一密码管理、`
官方地址:http://www.jumpserver.org/

Docker 就不介绍安装了,直接步入正题

使用Docker安装数据库

root@jumpserver:~# docker pull mysql:5.6.44
root@jumpserver:~# docker pull redis:4.0.14
#进入容器查看配置文件,然后把容器配置文件拷贝宿主机
root@jumpserver:~# docker run -it --rm mysql:5.6.44 bash
root@01af5631d811:/# ls /etc/mysql/mysql.conf.d/mysqld.cnf
这个时候我们在打开一个新的窗口,要复制这个容器的ID才能把文件拷出来
root@jumpserver:~# mkdir /etc/mysql/mysql.conf.d/ -p
root@jumpserver:~# docker cp 01af5631d811:/etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/
然后在MySQL配置文件最后一行添加字符集
vim /etc/mysql/mysql.conf.d/mysqld.cnf
character-set-server=utf8
- 然后把MySQL这个配置文件也拷贝到宿主机
root@jumpserver:~# mkdir  /etc/mysql/conf.d/
root@jumpserver:~# docker cp 01af5631d811:/etc/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/

接着在宿主机也添加字符集
root@jumpserver:~# vim /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8

- 创建数据目录
root@jumpserver:~# mkdir /data/mysql -p

- 启动MySQL容器,刚才的一台可以退出了 
docker run -it -d -p 3306:3306 -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 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="yhtzjy.com" mysql:5.6.44
- 查看MySQL是否启动成功
[root@localhost ~]# docker logs -f bfe43ecb5cf2
日志出现这个准备好连接代表mysql已经启动成功(mysqld: ready for connections)
也可以找一台客户端测试连接 apt install mysql-client -y
或者我们进入容器连接测试
root@jumpserver:~# docker exec -it 326b5492d362 bash
root@326b5492d362:/# mysql -uroot -pyhtzjy.com
mysql> show databases;
在查看一下字符集是不是 UTF8
mysql> show variables like "%character%";show variables like "%collation%";
没问题就创建jumpserver数据库,和授权用户
mysql> create database jumpserver default charset 'utf8';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'yhtzjy.com';
#这个时候我们使用客户端就可以远程连接 mysql -ujumpserver -h8.142.110.116 -pyhtzjy.com
mysql> show databases;
+--------------------+
' Database           '
+--------------------+
' information_schema '
' jumpserver         '
+--------------------+
2 rows in set (0.00 sec)

部署redis

由于自带的radis没有 radis.conf文件 我们需要自己在宿主机创建目录,然后映射到容器里面

root@jumpserver:~# mkdir /data/radis
root@jumpserver:~# docker run -it -p 6379:6379 -d -v /data/radis/:/data redis:4.0.14
查看redis日志是否启动,或者客户端下载一个连接测试
root@jumpserver:~# docker logs -f 5545c28b857d

官网搜索jumpserver的镜像

进入hub官方搜索jumpserver,然后找到这个(jumpserver/jms_all)包含所有组件的镜像
https://hub.docker.com/
然后点击Tags  找到1.5.9版本   个人用老版本的感觉好用,现在都是2.x版本
root@jumpserver:~# docker pull jumpserver/jms_all:1.5.9

生成随机秘钥和初始化token给jumpserver使用

#生成秘钥
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
#然后复制秘钥记下来(key),然后生成token记录下来
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

启动容器

  • 指定key和tocken,指定数据库地址端口,以及指定镜像

  • 80和2222都是SSH端口,80用的是Nginx服务

  • /opt/jumpserver 是我们的数据目录包含录像等等

  • 没有-d 是因为我们要查看一下启动日志mysql是否可以启动成功

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17


    docker run --name jms_all \
    -v /opt/jumpserver:/opt/jumpserver/data/media \
    -p 80:80 \
    -p 2222:2222 \
    -e SECRET_KEY=1GYc3TjwRDfV2UPXQjYvkJpG4E2K6Zl8SBZpChjBh6IjRn3r5v \
    -e BOOTSTRAP_TOKEN=hROQTd7WOn68DzEL \
    -e DB_HOST=10.0.0.72 \
    -e DB_PORT=3306 \
    -e DB_USER='jumpserver' \
    -e DB_PASSWORD="magedu.com" \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=10.0.0.72 \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD= \
    jumpserver/jms_all:1.5.9

    登录jumpserver

  • 启动成功之后就可以进入MySQL查看,只要有表就没问题,然后就直接输入IP地址登录,默认账号名和密码都是小写的 admin

    1
    2
    3
    [root@localhost ~]# mysql -ujumpserver -pyhtzjy.com -h8.142.110.116
    MySQL [(none)]> use jumpserver;
    MySQL [jumpserver]> show tables;

    jumpserver登录界面介绍

  • jumpserver的用户配置

    首先就是创建组和用户,用户只是登录web界面的,我们先创建组然后把用户分配到组里面 ,比如开发我们创建一个develope 组,数据库我们创建一个DBA组,然后我们可以根据组授权不同的资产 (让这个组只能看到指定服务器,加入DBA 就只能看到MySQL) 。后期我们就可以只把用户加到组里面,他们登录jumpserver就只能看到指定的服务器

  • jumpserver的资产管理

    如果机器少可以一个一个手动创建,如果服务器多的话可以直接导入Execl表格,批量进行导入服务器,然后编辑资产的话还需要给 IP分配系统用户,让指定用户连接

  • jumpserver系统用户和管理用户

管理用户:就是linux中的root 密码必须和需要连接的服务器密码一样,如果多台都不同还可以编辑管理用户,添加资产的秘钥,这样也可以连接
系统用户: 指你需要登录的目标资产主机的普通用户, 这个用户是给你登录目标主机的用户, 批量执行命令的用户