Jumpserver的docker部署和使用

1.安装运行docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum -y install wget
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.06.1.ce-3.el7
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://nu4ynvqu.mirror.aliyuncs.com"]
}
{
  "log-driver": "json-file",
  "log-opt": {
      "max-size": "100m",
      "max-file": "3"
  }
}
EOF
systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

2.JumpServer的部署

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

部署mysql容器服务

docker pull mysql:5.7
mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/conf
touch /data/mysql/conf/my.cnf
docker run --restart=always -p 13306:3306 --name mysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=111111 -d mysql:5.7

docker exec -it mysql bash
mysql -uroot -p111111
#验证数据库的字符编码是否符合要求,jumpserver要求数据库字符编码为utf8,不然后面web显示可能会有问题
show global variables where variable_name like 'character%';
#创建jumpserver数据库,并指定字符编码
create database jumpserver default charset 'utf8' collate 'utf8_bin';
#创建jumpserver访问用户,并赋权。
grant all on jumpserver.* to 'jumpserver'@'%' identified by 'Liu@2020';
flush privileges;
mysql -ujumpserver -pLiu@2020

3.部署redis容器服务

docker pull redis

docker images

不加版本号默认获取最新版本,也可以使用 docker search redis 查看镜像来源
从官网获取 redis.conf 配置文件
修改默认配置文件
grep -v "#" redis.conf.bak > redis.conf
vi /usr/local/docker/redis.conf
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
dir  ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)
requirepass "123456"  #设置密码

正确修改:在官方的原配置按以下修改

#bind 127.0.0.1
protected-mode yes
daemonize no
appendonly yes
requirepass "123456"
docker run -p 6379:6379 --name redis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -v /etc/localtime:/etc/localtime:ro -d redis redis-server /etc/redis/redis.conf --appendonly yes

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

#我这里通过脚本直接生成。[root@jumpserver-no ~]# vi 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@node1 ~]# bash random_encryption.sh
nEPENdlzs91OyYzUiXyTFH2lbInMbRVuwiD6m4gdnxEiXbnAuo
0XnJe5So9YDtjBi3

cat .bashrc     #秘钥保存位置

5.部署jumpserver容器服务

docker pull jumpserver/jms_all:latest    #拉取最新镜像

docker run --name PL_jumpserver -d -v /data/jumpserver:/opt/jumpserver/data/media -v /etc/localtime:/etc/localtime:ro -p 80:80 -p 2222:2222 -e SECRET_KEY=nEPENdlzs91OyYzUiXyTFH2lbInMbRVuwiD6m4gdnxEiXbnAuo -e BOOTSTRAP_TOKEN=0XnJe5So9YDtjBi3 -e DB_HOST=10.100.10.191 -e DB_PORT=13306 -e DB_USER=jumpserver -e DB_PASSWORD=Liu@2020 -e DB_NAME=jumpserver -e REDIS_HOST=10.100.10.191 -e REDIS_PORT=6379 -e REDIS_PASSWORD=123456 jumpserver/jms_all:latest

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

​​​​​​​docker exec -it mysql bash
mysql -ujumpserver -pLiu@2020
use jumpserver;

部署nginx反向代理

server {
                listen       80;
                server_name  jumpserver.huaniupp.com;
                return      301 https://$server_name$request_uri;
                index index.html index.php index.htm;
                #return      301 https://$server_name$request_uri;
}

server
{
  listen 443 ssl;
  server_name jumpserver.huaniupp.com;
  ssl                  on;
  ssl_certificate     keys/huaniupp.com/huaniupp.com.pem;
  ssl_certificate_key keys/huaniupp.com/huaniupp.com.key;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:DES-CBC3-SHA:ECC-SM4-CBC-SM3:ECDHE-SM4-GCM-SM3;
  ssl_verify_client off;

  location / {
  proxy_pass  http://192.168.0.27:8888; 

      proxy_http_version 1.1;
      proxy_buffering off;
      proxy_request_buffering off;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
  }
}

至此,服务部署完成

6.Jumpserver管理员的使用

http://10.100.10.191/ui/#/users/users

在使用Jumpserver过程中的一些名词解释

用户:用户是授权和登陆jumpserver的主体,将来为每个员工建立一个账户,用来登录跳板机, 将资产授权给该用户,查看用户登陆记录命令历史等。

用户组:多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户 组建成用户组,在进行授权中使用组授权,该组中的用户拥有所有授权的主机权限。

资产:资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登 录资产,执行命令等。

管理账户:添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权限的用户, 如root,或者有 NOPASSWD: ALL sudo权限的用户,该管理账户用来向资产推送系统用户, 为系统用户添加sudo,获取资产的一些硬件信息。(简单的讲就这用户就是服务器上的管理员用户,列如root)

资产组:同用户组,是资产组成的集合,为了方便授权。

Sudo:这里的sudo其实是Linux中的sudo命令别名,一个sudo别名包含多个命令, 系统用户关联sudo就代表该系统用户有权限sudo执行这些命令。

系统用户:系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户,如 dev, sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利用自己公司 的工具进行推送,授权时将用户、资产、系统用户关联起来则表明用户有权限登陆该资产的这个系统用户,比如用户小明 以 dev系统用户登录 172.16.1.1资产, 简单理解就是 将某个资产在进行授权给某个用户(这里的用户是上面的第一个用户的概念)后,该资产上一个非root的用户的账号(也就是系统用户)和这个jumpserver登录用户关联了,jumpserver用户登录进资产后不是通过jumpserver用户名进行登录的,而是这个所谓系统用户进行登录的。

推送系统用户:添加完系统用户,需要推送,推送操作是使用ansible,把添加的系统用户和系统用户管理的sudo,推送到资产上,具体体现是在资产上useradd该系统用户,设置它的key,然后设置它的sudo,为了让用户可以登录它。 

授权规则:授权规则是将资产系统用户和用户关联起来,用来完成授权。 这样用户就可以以某个系统用户账号登陆资产。大家对这好像不是很理解,其实也是对系统用户, 用户这里没有搞清楚。我们可以把用户当做虚拟的用户,而系统用户是真实再服务器上存在的用户, 系统用户可以使用jumpserver推送,也可以自己手动建立,但是推送的过程一定要有,哪怕是模拟 推送(不选择秘钥和密码推送,如网络设备),因为添加授权规则会检查推送记录。为了简化理解, 我们暂时 以 用户 资产 系统用户 来理解,暂时不考虑组,添加这样的规则意思是 授权 用户 在这个资产上 以这个系统用户来登陆, 系统用户是一组具有通用性,具有sudo的用户, 不同的用户授权不同的 系统用户,比如 dba可能有用数据库的sudo权限。

日志审计:分为以下5个方式:1)在线:查看当前在线的用户(非web在线),可以监控用户的命令执行,强制结束用户 登录;2)实时监控:实时监控用户的操作;3)登录历史:查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户 执行命令的录像;4)命令记录:查看用户批量执行命令的历史,包含执行命令的主机,执行的命令,执行的结果;5)上传下载:查看用户上传下载文件的记录。

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

创建jumpserver登录用户

先创建一个用户组,在创建一个用户加入这个用户组,资产管理系统用户-特权用户先创建服务器的root用户和密码,创建资产的时候连接服务器用

 

创建节点授权用户到不同的节点 

 资产管理-系统用户-创建一个特权用户,相当于是未来要管理资产的root用户和密码

 

 

 

 

 

安全设置

设置谷歌六位数动态验证码登陆

多因子认证

 

7.堡垒机官方部署文档

https://docs.jumpserver.org/zh/master/install/setup_by_fast/   #官方文档地址
官方一键部署
# 默认会安装到 /opt/jumpserver-installer-v2.27.0 目录
systemctl stop firewalld
systemctl disable firewalld
cat /etc/selinux/config
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.27.0/quick_start.sh | bash
cd /opt/jumpserver-installer-v2.27.0
# 安装完成后配置文件 /opt/jumpserver/config/config.txt
cd /opt/jumpserver-installer-v2.27.0

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

ip   admin   admin

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值