jumpserver堡垒机搭建

2022-06-22 11:52:37 浏览数 (1)

一.环境要求

代码语言:txt复制
硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
操作系统: Linux 发行版 x86_64

Python = 3.6.x
Mysql Server ≥ 5.6
Mariadb Server ≥ 5.5.56
Redis

二.基于docker部署

代码语言:txt复制
首先部署docker
yum install -y yum-utils device-mapper-persistent-data lvm2

wget -O /etc/yum.repos.d/aliyun.base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 
yum -y install docker-ce-18.09.9-3.el7

# 启动docker,并设置docker开机自启 
systemctl start docker && systemctl enable docker 
# 配置加速,并设置驱动     
cat << EOF > /etc/docker/daemon.json 
{
    "registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
javascript:;
# 加载daemon并重启docker
systemctl daemon-reload && systemctl restart docker 

三.部署mysql容器服务

代码语言:javascript复制
#从上面的环境要求我们看出,jumpserver依赖的外置数据库服务有版本要求,我们这里从官方容器仓库中直接拉取mysql5.7版本的镜像。
  docker pull mysql:5.7
 
   #我们在宿主机上准备好mysql的配置文件和数据存放目录,后面mysql容器启动的时候直接挂载宿主机目录,使数据保存在宿主机,实现数据和容器的分离,
可以在容器运行异常时,可以再启动一个新的容器直接使用宿主机的数据,从而保证业务的正常运行。
 mkdir /iflytek/mysql/mysql.conf.d -pv
 mkdir /iflytek/mysql/conf.d -p
 mkdir /iflytek/mysql/data
 vim /iflytek/mysql/mysql.conf.d/mysqld.cnf 
     [mysqld]
      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
 
 vim  /iflytek/mysql/conf.d/mysql.cnf 
    [mysql]
     default-character-set=utf8
#启动Mysql容器,挂载上面准备好的配置文件和数据存放目录。然后通过-e MYSQL_ROOT_PASSWORD指定启动的mysql的root密码
[root@jumpserver-no ~]# docker run -it -d -p 3306:3306 -v /iflytek/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /iflytek/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -v /iflytek/mysql/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="ming1128" mysql:5.7
#安装mysql客户端,测试访问容器数据库是否正常(换一台服务器)
  yum install -y mariadb
  mysql -h 10.111.3.55  -pming1128
 mysql> show databases;
 
 #验证数据库的字符编码是否符合要求,jumpserver要求数据库字符编码为utf8,不然后面web显示可能会有问题
 show global variables where variable_name like 'character%';
 
 #创建jumpserver数据库,并指定字符编码
mysql> create database jumpserver default charset 'utf8' collate 'utf8_bin';

#创建jumpserver访问用户,并赋权。
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'ming1128';


 #验证jumpserver用户授权是否成功
 mysql -ujumpserver -pming1128 -h192.168.10.2
    mysql> show databases;

四.部署redis容器服务

代码语言:javascript复制
#直接从官方仓库拉取redis镜像,并启动
[root@jumpserver-no ~]# docker pull redis:4.0.14
[root@jumpserver-no ~]# docker run -it -d -p 6379:6379 redis:4.0.14
9cb2b24d2008a541635dc5f9fd21b843cb3c6e04517192ab7442e4eea9d66521
#安装redis,并测试访问redis容器服务,这里还可以设置一个redis的数据库密码,我这里就没设了,设不设问题不大,不过为了安全建议设
# 客户端验证:
[root@jumpserver-no ~]# wget -O /etc/yum.repos.d/aliyun.epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@jumpserver-no ~]# yum install redis -y
[root@jumpserver-no ~]# redis-cli -h 192.168.10.2
172.31.242.80:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
.......

4.生成随机加密秘钥和初始化token

代码语言:javascript复制
#我这里通过脚本直接生成。
[root@jumpserver-no ~]# vim random_encryption.sh 
#/bin/bash

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
[root@jumpserver-no ~]# bash random_encryption.sh 
Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6
tFG4SfQae8L0Fzwn

五.部署jumpserver容器服务

代码语言:javascript复制
#从网上直接拉取最新的jumpserver镜像
[root@jumpserver-no ~]# docker pull jumpserver/jms_all:latest
[root@jumpserver-no ~]# docker image list
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
mysql                     5.7                 718a6da099d8        2 days ago          448MB
jumpserver/jms_all        latest              6e51b94ef54d        2 days ago          1.48GB
redis                     4.0.14              191c4017dcdd        3 months ago        89.3MB
centos/mysql-57-centos7   latest              f83a2938370c        10 months ago       452MB
#通过镜像,启动jumpserver
[root@jumpserver-no ~]# docker run --name PL_jumpserver -d 
> -v /iflytek/jumpserver:/opt/jumpserver/data/media 
> -p 80:80 
> -p 2222:2222 
> -e SECRET_KEY=Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6      #这里填的是上面生成的秘钥
> -e BOOTSTRAP_TOKEN=tFG4SfQae8L0Fzwn                                   #这里上面生成的Token
> -e DB_HOST=192.168.10.2                  #指定mysql服务的地址,因为我这里是本机,所以直接填本机地址就可以了,如果是在别的机器部署的mysql,就填mysql所在地址就可以了
> -e DB_PORT=3306                   #mysql开发的端口号  
> -e DB_USER=jumpserver             #对数据库上的jumpserver数据库有权限的用户
> -e DB_PASSWORD=ming1128           #上面用户的密码
> -e DB_NAME=jumpserver             #指定在mysql上的数据库名。
> -e REDIS_HOST=192.168.10.2       #redis服务的地址
> -e REDIS_PORT=6379                #redis开放的端口号
> -e REDIS_PASSWORD=                #redis数据库密码,因为我上面没有设密码,所以我这里直接为空就可以了,如果设了密码,就输入密码就行了
> jumpserver/jms_all:latest


docker run --name PL_jumpserver -d -v /iflytek/jumpserver:/opt/jumpserver/data/media  -p 80:80  -p 2222:2222 -e SECRET_KEY=T0mjL57kIWfQ80FAvNnwAxDwuylsQCVHlGz3JdihktJYU7CasJ -e BOOTSTRAP_TOKEN=KPOCNe9vNaJhR903   -e DB_HOST=192.168.10.2  -e DB_PORT=3306   -e DB_USER=jumpserver  -e DB_PASSWORD=ming1128 -e DB_NAME=jumpserver    -e REDIS_HOST=192.168.10.2   -e REDIS_PORT=6379  -e REDIS_PASSWORD=  jumpserver/jms_all:latest  

启动完之后。我们进入数据库,验证数据库内容,看jumpserver数据是否写入到数据库中的。

代码语言:javascript复制
[root@jumpserver-no ~]# mysql -uroot -pming1128 -h 192.168.10.2
mysql> use jumpserver;
mysql> show tables;

至此,服务部署完成,如果想看容器日志信息的话可以执行下面的命令

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

下面我们可以访问web界面进行使用了

6.Jumpserver管理员的使用

1.Jumpserver的登录

3.创建相关用户,资产并进行相关授权操作

创建jumpserver登录用户

 创建管理员用户

 创建系统用户

 创建资产

资产授权

使用xshell登录

0 人点赞