DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.
  • DmozDir.org
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!

jumpserver部署使用

  • jumpserver部署使用

  • 已被浏览: 63 次2020年10月25日    来源:  https://www.cnblogs.com/qiuhom-1874/p/13874503.html
  • 今天我们来聊一款和openvpn有类似功能的软件jumpserver;jumpserver和openvpn都可以让用户从互联网连接公司内网服务器;但通常jumpserver都不会放在互联网;它主要用作运维、开发、以及测试相关人员来利用它连

      一、简介

      前面我们聊到了openvpn的部署和使用,它能够实现从互联网通过openvpn连接到公司内网服务器,从而进行远程管理;但openvpn有一个缺点它不能记录哪些用户在内网服务器上操作了什么,拥有客户端的证书和私钥以及ca的证书和客户端配置,就可以直接连接到公司内网,这从某些角度讲不是一个安全的解决方案;有关openvpn的搭建和使用请参考https://www.cnblogs.com/qiuhom-1874/p/13861781.html;今天我们来聊一款和openvpn有类似功能的软件jumpserver;jumpserver和openvpn都可以让用户从互联网连接公司内网服务器;但通常jumpserver都不会放在互联网;它主要用作运维、开发、以及测试相关人员来利用它连接公司内网服务器,从而实现集中管理公司内网服务器;同时jumpserver还具有权限管理,用户管理,以及监控回放等等功能;

      二、jumpserver架构图

      三、jumpserver服务器安装

      环境说明

    主机名称 角色 ip地址
    node01 jumpserver web 192.168.0.41
    node02 mysql/redis 192.168.0.42

     

      

     

     

     

      1、在node02上部署mariadb(版本最低5.5.6,如果是mysql版本最低5.6)

      配置mariadb yum仓库

    [root@node02 ~]# cat /etc/yum.repos.d/mariadb.repo
    [mariadb]
    name=mariadb repo
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.1.46/yum/centos/7/x86_64/
    gpgcheck=0
    [root@node02 ~]# 
    

      安装MariaDB-server

    [root@node02 ~]# yum install -y MariaDB-server
    

      配置mariadb 忽略名称解析

      启动mariadb

      连接mariadb 创建数据库和用户

    [root@node02 ~]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 3
    Server version: 10.1.46-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type "help;" or "\h" for help. Type "\c" to clear the current input statement.
    
    MariaDB [(none)]> create database jumpserver default charset "utf8" collate "utf8_bin";
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> grant all on jumpserver.* to "jumpserver"@"%" identified by "admin123.com";
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> 
    

      验证:使用jumpserver登录数据库

    [root@node02 ~]# mysql -ujumpserver -padmin123.com -h192.168.0.42
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 4
    Server version: 10.1.46-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type "help;" or "\h" for help. Type "\c" to clear the current input statement.
    
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | jumpserver         |
    | test               |
    +--------------------+
    3 rows in set (0.01 sec)
    
    MariaDB [(none)]> exit
    Bye
    [root@node02 ~]# 
    

      ok,到此数据服务就准备好了;

      2、在node02上部署redis

      安装redis

    [root@node02 ~]# yum -y install redis
    

      配置redis监听本机所有地址,并设置密码

    [root@node02 ~]# grep -Ei "^(bind|requirepass)" /etc/redis.conf
    bind 0.0.0.0
    requirepass admin123.com
    [root@node02 ~]# 
    

      启动redis

      验证:登录redis

    [root@node02 ~]# redis-cli -h 192.168.0.42
    192.168.0.42:6379> KEYS *
    (error) NOAUTH Authentication required.
    192.168.0.42:6379> AUTH admin123.com
    OK
    192.168.0.42:6379> KEYS *
    (empty list or set)
    192.168.0.42:6379> exit
    [root@node02 ~]# 
    

      到此redis就准备好了

      3、在node01上部署jumpserver web 容器

      配置docker-ce的yum源

    [root@node01 ~]# cat /etc/yum.repos.d/docker-ce.repo
    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-debuginfo]
    name=Docker CE Stable - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-source]
    name=Docker CE Stable - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge]
    name=Docker CE Edge - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge-debuginfo]
    name=Docker CE Edge - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge-source]
    name=Docker CE Edge - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test]
    name=Docker CE Test - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test-debuginfo]
    name=Docker CE Test - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test-source]
    name=Docker CE Test - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly]
    name=Docker CE Nightly - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-debuginfo]
    name=Docker CE Nightly - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-source]
    name=Docker CE Nightly - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    [root@node01 ~]# 
    

      安装docker-ce

    [root@node01 ~]# yum install -y docker-ce
    

      启动docker

    [root@node01 ~]# systemctl start docker
    [root@node01 ~]# docker info 
    Client:
     Debug Mode: false
    
    Server:
     Containers: 0
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 0
     Server Version: 19.03.13
     Storage Driver: overlay2
      Backing Filesystem: xfs
      Supports d_type: true
      Native Overlay Diff: true
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
     runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
     init version: fec3683
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-693.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 2
     Total Memory: 1.781GiB
     Name: node01.test.org
     ID: JQY2:LCCM:EU6J:ARI7:UCEL:5HUV:FGE4:6RTY:PWR3:NKJI:EA3K:BKSA
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Live Restore Enabled: false
    
    [root@node01 ~]# 
    

      配置docker加速器

    [root@node01 ~]# cat /etc/docker/daemon.json
    {
            "registry-mirrors": ["https://registry.docker-cn.com","https://cyr1uljt.mirror.aliyuncs.com"]
    }
    [root@node01 ~]# 
    

      重启docker

    [root@node01 ~]# systemctl restart docker
    

      使用doker info 命令验证加速器地址是否应用

      下载jumpserver web镜像

    [root@node01 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    [root@node01 ~]# docker pull jumpserver/jms_all:v2.4.0
    v2.4.0: Pulling from jumpserver/jms_all
    75f829a71a1c: Pull complete 
    f9c494d6df5d: Pull complete 
    5135b4193f02: Pull complete 
    918e815b1dc8: Pull complete 
    0334369c4479: Pull complete 
    64a0f2a7663a: Pull complete 
    Digest: sha256:2081c88eca6dffb41bc42d8fe06d18c4379eacdbb354fa56dffd2a918738274d
    Status: Downloaded newer image for jumpserver/jms_all:v2.4.0
    docker.io/jumpserver/jms_all:v2.4.0
    [root@node01 ~]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    jumpserver/jms_all   v2.4.0              3418bbaaded1        9 days ago          1.54GB
    [root@node01 ~]# 
    

      编写生成SECRET_KEY和BOOTSTRAP_TOKEN的脚本

    [root@node01 ~]# cat key_gen.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@node01 ~]# 
    

      提示:上面脚本主要是判断是否有SECRET_KEY和BOOTSTRAP这两个key,如果没有就生成,并把SECRET_KEY保存到SECRET_KEY并放到当前家目录的.bashrc中,并打印出来,如果有就直接打印出来;

      运行脚本生成SECRET_KEY和BOOTSTRAP_TOKEN

    [root@node01 ~]# bash key_gen.sh
    wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q
    Lx15DW9xDxqOkiCq
    [root@node01 ~]# 
    

      提示:这两个随机密钥很重要,它用来加密数据库字段用的,所以在环境迁移和升级都会用到这两个key;

      创建用户保存jumpserver容器中的数据目录

    [root@node01 ~]# mkdir /data/jumpserver/ -pv
    mkdir: created directory ‘/data’
    mkdir: created directory ‘/data/jumpserver/’
    [root@node01 ~]# 
    

      启动jumpserver/jms_all:v2.4.0镜像为容器

    [root@node01 ~]# docker run --name jms_all -d \
    >   -v /data/jumpserver/:/opt/jumpserver/data \
    >   -p 80:80 \
    >   -p 2222:2222 \
    >   -e SECRET_KEY=wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q \
    >   -e BOOTSTRAP_TOKEN=Lx15DW9xDxqOkiCq \
    >   -e DB_HOST=192.168.0.42 \
    >   -e DB_PORT=3306 \
    >   -e DB_USER=jumpserver \
    >   -e DB_PASSWORD=admin123.com \
    >   -e DB_NAME=jumpserver \
    >   -e REDIS_HOST=192.168.0.42 \
    >   -e REDIS_PORT=6379 \
    >   -e REDIS_PASSWORD=admin123.com \
    >   --privileged=true \
    >   jumpserver/jms_all:v2.4.0
    8974115a714c5000bac47a8a457190408861ad1967429435ad4f6a0b838c2fe3
    [root@node01 ~]# docker ps 
    CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                                        NAMES
    8974115a714c        jumpserver/jms_all:v2.4.0   "./entrypoint.sh"   14 seconds ago      Up 12 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp   jms_all
    [root@node01 ~]# ss -tnl
    State      Recv-Q Send-Q                  Local Address:Port                                 Peer Address:Port              
    LISTEN     0      128                                 *:22                                              *:*                  
    LISTEN     0      100                         127.0.0.1:25                                              *:*                  
    LISTEN     0      128                                :::2222                                           :::*                  
    LISTEN     0      128                                :::80                                             :::*                  
    LISTEN     0      128                                :::22                                             :::*                  
    LISTEN     0      100                               ::1:25                                             :::*                  
    [root@node01 ~]# 
    

      提示:以上启动容器主要指定了mariadb和redis服务器的相关地址和密码端口信息;其中在宿主机上暴露了80和2222端口;

      查看日志

      提示:使用docker logs -f 容器id 能够看到上图中的信息,说明jumpserver容器就跑起来了;

      访问jumpserver

      提示:访问jumpserver容器所在主机的ip地址即可访问到jumpserver,默认用户名和密码都是admin;

      提示:第一次登陆时,它会让我们重设密码;

      提示:重设密码后,重新登录,jumpserver的首页就是上图这样;后续我们就可以在这个界面来管理内网服务器了;到此jumpserver服务器就搭建好了;

      四、jumpserver使用

      1、jumpserver基本设置

      提示:基本设置是必须设置当前jumpserver的url和邮件主题前缀;这样在用户收到邮件中的链接都会指向这个jumpserver的url;

      2、配置jumpserver发邮件的邮件服务器和用户名密码

      提示:在系统设置--->邮件设置,把对应的账号信息,邮件服务器信息都填写好,然后测试连接,如果可以正常收到邮件,说明邮件服务器信息和邮件用户名密码没有问题;最后点提交;

      3、创建用户

      提示:在用户管理--->用户列表--->创建;填写好用户相关信息后,点击最下面的提交;

      提示:新建用户成功以后,对应的用户邮箱就会收到一份有jumpserver发送到用户创建成功的邮件,用户可以点击此邮件中的链接进行密码设定;

      提示:密码设定好了,点击设置;用户会收到一份密码更新成功的邮件;

      4、创建用户组,并把test用户添加到对应的组中;

      提示:用户管理--->用户组---->创建,填写好组信息和选择好用户后,点击提交即可;

      5、jumpserver 资产管理--->管理用户创建

      提示:资产管理---->管理用户---->创建,填写好对应被管控端的管理员和密码点击提交;管理用户是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来 `推送系统用户`、`获取资产硬件信息` 等。 

      6、创建系统用户,这里的系统用户是指我们使用jumpserver登录到对应的被管控主机时用的用户

      提示:资产管理--->系统用户--->新建,填写好用户名,勾选自动推送和自动生成密钥,点击最下方的提交即可;这里填写的用户会用作jumpserver上登录对应的主机用到用户,如果被管控端没有这个用户,jumpserver就会利用我们刚才添加到系统用户去创建一个这里的系统用户;

      7、创建资产

      提示:资产管理--->资产列表--->新建,填写对应被管控的的主机信息和ip地址信息,以及管理用户,点击最下方的提交;

      提示:提交完成后,我们就可以在资产列表中看到我们刚才添加到主机;

      8、资产授权

      提示:权限管理--->资产授权--->创建,填写好名称后,要选择用户和组以及资产和系统用户,然后点击最下方的提交;到此一个资源就授权给test用户和test组中的成员了;这里需要注意一点,一个节点中有很多server,如果你只想授权单台server给某个用户,下面的节点就留空,如果你想授权一个节点给用户你可以选择节点,上面的资产就可以留空,如果你又想授权单个资产和某个节点给用户,就选择对应的资产和节点即可;如果这里选择default节点,表示把default节点下的所有主机都授权给用户;默认default节点包含所有主机;

      验证:使用test用户登录jumpserver,看看test用户是否能够看到我们创建的资源?

      提示:首次登陆,它会让我们更新用户的信息,然后同一些条款,这个我们按照实际信息来修改即可;在我的资产中可以看到当前用户有点资产;

      验证:使用test用户连接node01看看是否可以连接到node01?

      提示:可以看到test用户是可以正常使用我们配置的jumpserver用户正常正常的连接到node01;

      9、查看用户操作回放

      提示:点击会话管理---->会话管理---->历史会话----> 找到对应会话后面的回放即可查看对应用户在过去会话中执行的操作;

      好了,jumpserver的基本操作就到此为止了,后续其他日志啊,都可以在web上点击对应的菜单查看,我这里就不过多阐述了;


    以上信息来源于网络,如有侵权,请联系站长删除。

    TAG:jumpserver

  • 上一篇:流氓软件卸不干净?这6款超强软件卸载神器专治各种流氓软件!
  • 与“jumpserver部署使用”相关的资讯
  • 无任何相关资讯!