JumpServer部署使用

1、簡介

前面咱們聊到了open***的部署和使用,它可以實現從互聯網經過open***鏈接到公司內網服務器,從而進行遠程管理;但open***有一個缺點它不能記錄哪些用戶在內網服務器上操做了什麼,擁有客戶端的證書和私鑰以及ca的證書和客戶端配置,就能夠直接鏈接到公司內網,這從某些角度講不是一個安全的解決方案;html

今天咱們來聊一款和open***有相似功能的軟件jumpserver;jumpserver和open***均可以讓用戶從互聯網鏈接公司內網服務器;但一般jumpserver都不會放在互聯網;它主要用做運維、開發、以及測試相關人員來利用它鏈接公司內網服務器,從而實現集中管理公司內網服務器;同時jumpserver還具備權限管理,用戶管理,以及監控回放等等功能;node

2、jumpserver架構圖

JumpServer部署使用

3、jumpserver服務器安裝

環境說明mysql

<table style="height: 133px; width: 366px" border="0" align="left"><tbody><tr><td>主機名稱</td><td>角色</td><td>ip地址</td></tr><tr><td>node01</td><td>jumpserver web</td><td>192.168.0.41</td></tr><tr><td>node02</td><td>mysql/redis</td><td>192.168.0.42</td></tr></tbody></table>linux

一、在node02上部署mariadb(版本最低5.5.6,若是是mysql版本最低5.6)web

配置mariadb yum倉庫redis

[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-serversql

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

配置mariadb 忽略名稱解析docker

JumpServer部署使用

啓動mariadb數據庫

JumpServer部署使用

鏈接mariadb 建立數據庫和用戶json

[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,到此數據服務就準備好了;

二、在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

JumpServer部署使用

驗證:登陸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就準備好了

三、在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部署使用

下載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端口;

查看日誌

JumpServer部署使用

提示:使用docker logs -f 容器id 可以看到上圖中的信息,說明jumpserver容器就跑起來了;

訪問jumpserver

JumpServer部署使用

提示:訪問jumpserver容器所在主機的ip地址便可訪問到jumpserver,默認用戶名和密碼都是admin;

JumpServer部署使用

提示:第一次登錄時,它會讓咱們重設密碼;

JumpServer部署使用

提示:重設密碼後,從新登陸,jumpserver的首頁就是上圖這樣;後續咱們就能夠在這個界面來管理內網服務器了;到此jumpserver服務器就搭建好了;

4、jumpserver使用

一、jumpserver基本設置

JumpServer部署使用

提示:基本設置是必須設置當前jumpserver的url和郵件主題前綴;這樣在用戶收到郵件中的連接都會指向這個jumpserver的url;

二、配置jumpserver發郵件的郵件服務器和用戶名密碼

JumpServer部署使用

提示:在系統設置--->郵件設置,把對應的帳號信息,郵件服務器信息都填寫好,而後測試鏈接,若是能夠正常收到郵件,說明郵件服務器信息和郵件用戶名密碼沒有問題;最後點提交;

三、建立用戶

JumpServer部署使用

提示:在用戶管理--->用戶列表--->建立;填寫好用戶相關信息後,點擊最下面的提交;

JumpServer部署使用

提示:新建用戶成功之後,對應的用戶郵箱就會收到一份有jumpserver發送到用戶建立成功的郵件,用戶能夠點擊此郵件中的連接進行密碼設定;

JumpServer部署使用

提示:密碼設定好了,點擊設置;用戶會收到一份密碼更新成功的郵件;

JumpServer部署使用

四、建立用戶組,並把test用戶添加到對應的組中;

JumpServer部署使用

提示:用戶管理--->用戶組---->建立,填寫好組信息和選擇好用戶後,點擊提交便可;

五、jumpserver 資產管理--->管理用戶建立

JumpServer部署使用

提示:資產管理---->管理用戶---->建立,填寫好對應被管控端的管理員和密碼點擊提交;管理用戶是資產(被控服務器)上的 root,或擁有 NOPASSWD: ALL sudo 權限的用戶, JumpServer 使用該用戶來 `推送系統用戶`、`獲取資產硬件信息` 等。

六、建立系統用戶,這裏的系統用戶是指咱們使用jumpserver登陸到對應的被管控主機時用的用戶

JumpServer部署使用

JumpServer部署使用

提示:資產管理--->系統用戶--->新建,填寫好用戶名,勾選自動推送和自動生成密鑰,點擊最下方的提交便可;這裏填寫的用戶會用做jumpserver上登陸對應的主機用到用戶,若是被管控端沒有這個用戶,jumpserver就會利用咱們剛纔添加的管理用戶去建立一個這裏的系統用戶;

七、建立資產

JumpServer部署使用

提示:資產管理--->資產列表--->新建,填寫對應被管控的的主機信息和ip地址信息,以及管理用戶,點擊最下方的提交;

JumpServer部署使用

提示:提交完成後,咱們就能夠在資產列表中看到咱們剛纔添加到主機;

八、資產受權

JumpServer部署使用

提示:權限管理--->資產受權--->建立,填寫好名稱後,要選擇用戶和組以及資產和系統用戶,而後點擊最下方的提交;到此一個資源就受權給test用戶和test組中的成員了;這裏須要注意一點,一個節點中有不少server,若是你只想受權單臺server給某個用戶,下面的節點就留空,若是你想受權一個節點給用戶你能夠選擇節點,上面的資產就能夠留空,若是你又想受權單個資產和某個節點給用戶,就選擇對應的資產和節點便可;若是這裏選擇default節點,表示把default節點下的全部主機都受權給用戶;默認default節點包含全部主機;

驗證:使用test用戶登陸jumpserver,看看test用戶是否可以看到咱們建立的資源?

JumpServer部署使用

提示:首次登錄,它會讓咱們更新用戶的信息,而後同一些條款,這個咱們按照實際信息來修改便可;在個人資產中能夠看到當前用戶有點資產;

驗證:使用test用戶鏈接node01看看是否能夠鏈接到node01?

JumpServer部署使用

JumpServer部署使用

提示:能夠看到test用戶是能夠正常使用咱們配置的jumpserver用戶正常正常的鏈接到node01;

九、查看用戶操做回放

JumpServer部署使用

提示:點擊會話管理---->會話管理---->歷史會話----> 找到對應會話後面的回放便可查看對應用戶在過去會話中執行的操做;

JumpServer部署使用

好了,jumpserver的基本操做就到此爲止了,後續其餘日誌啊,均可以在web上點擊對應的菜單查看,我這裏就不過多闡述了;

原文連接:https://www.cnblogs.com/qiuhom-1874/p/13874503.html

相關文章
相關標籤/搜索