JumpServerの展開と使用

1.はじめに

先ほど、open ***を介してインターネットから会社のイントラネットサーバーに接続し、リモート管理できるopen ***の展開と使用について説明しましたが、open ***には、どのユーザーであるかを記録できないという欠点があります。含まれています。Webサーバーで何が操作されますか?クライアントの証明書と秘密鍵、およびCAの証明書とクライアント構成を使用すると、会社のイントラネットに直接接続できます。これは、いくつかの観点から安全なソリューションではありません。

今日は、open ***と同様の機能を持つソフトウェアjumpserverについて説明します。jumpserverとopen ***はどちらも、ユーザーがインターネットから会社のイントラネットサーバーに接続できるようにします。ただし、通常、jumpserverはインターネット上に配置されていません。主に運用・保守・開発・試験担当者が使用し、会社のイントラネットサーバーに接続して会社のイントラネットサーバーを一元管理すると同時に、権限管理、ユーザー管理、再生の監視;

2、ジャンプサーバーのアーキテクチャ図

JumpServerの展開と使用

3、ジャンプサーバーサーバーのインストール

環境の説明

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

1. node02にmariadbをデプロイします(mysqlバージョンが最小5.6の場合は最小バージョン5.5.6)

mariadbyumウェアハウスを構成する

[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サーバーをインストールします

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

名前解決を無視するようにmariadbを構成する

JumpServerの展開と使用

mariadbを開始する

JumpServerの展開と使用

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 ~]#

これで、データサービスの準備が整いました。

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を開始します

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の準備ができています

3.ジャンプサーバーWebコンテナーをnode01にデプロイします

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の2つのキーがあるかどうかを判断し、ない場合はそれらを生成し、SECRET_KEYをSECRET_KEYに保存して、現在のホームディレクトリの.bashrcに配置し、印刷して印刷します。ある場合は直接出力します。

スクリプト生成を実行するSECRET_KEY和``BOOTSTRAP_TOKEN

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

ヒント:これらの2つのランダムキーは非常に重要です。これらはデータベースフィールドの暗号化に使用されるため、これら2つのキーは環境の移行とアップグレードに使用されます。

ジャンプサーバーコンテナにデータディレクトリを保存するユーザーを作成します

[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 container idを使用して、ジャンプサーバーコンテナーが実行中であることを示す、上の図の情報を確認してください。

ジャンプサーバーにアクセス

JumpServerの展開と使用

ヒント:ジャンプサーバーコンテナが配置されているホストのIPアドレスにアクセスすると、ジャンプサーバーにアクセスできます。デフォルトのユーザー名とパスワードはどちらもadminです。

JumpServerの展開と使用

ヒント:初めてログインするときに、パスワードをリセットできます。

JumpServerの展開と使用

ヒント:パスワードをリセットした後、再度ログインすると、ジャンプサーバーのホームページは上の図のようになります。後でこのインターフェイスでイントラネットサーバーを管理できます。これでジャンプサーバーサーバーがセットアップされました。

4、ジャンプサーバーの使用

1.ジャンプサーバーの基本設定

JumpServerの展開と使用

ヒント:基本設定では、現在のジャンプサーバーのURLと電子メールの件名プレフィックスを設定する必要があります。このようにして、ユーザーが受信する電子メール内のリンクは、このジャンプサーバーのURLを指します。

2.メールを送信するようにメールサーバーとjumpserverのユーザー名とパスワードを設定します

JumpServerの展開と使用

ヒント:[システム設定] ---> [メール設定]で、対応するアカウント情報とメールサーバー情報を入力し、接続をテストします。メールを正常に受信できる場合は、メールサーバー情報に問題がないことを意味します。ユーザー名とパスワードをメールで送信し、最後に[送信]をクリックします。

3.ユーザーを作成します

JumpServerの展開と使用

ヒント:[ユーザー管理] ---> [ユーザーリスト] ---> [作成]で、ユーザー関連情報を入力したら、下部にある[送信]をクリックします。

JumpServerの展開と使用

ヒント:新しいユーザーが正常に作成されると、対応するユーザーメールボックスに、ジャンプサーバーからユーザーが正常に作成されたことを示すメールが送信されます。ユーザーはこのメール内のリンクをクリックしてパスワードを設定できます。

JumpServerの展開と使用

プロンプト:パスワードを設定したら、[設定]をクリックします。ユーザーには、パスワードが正常に更新されたという電子メールが届きます。

JumpServerの展開と使用

4.ユーザーグループを作成し、対応するグループにテストユーザーを追加します。

JumpServerの展開と使用

ヒント:ユーザー管理--->ユーザーグループ---->作成し、グループ情報を入力してユーザーを選択し、[送信]をクリックします。

5.Jumpserverアセット管理--->ユーザー作成の管理

JumpServerの展開と使用

プロンプト:資産管理---->ユーザーの管理---->作成し、管理対象側に対応する管理者とパスワードを入力して、[送信]をクリックします。管理ユーザーは資産(管理対象サーバー)のrootであるか、NOPASSWDを持っています。権限を持つすべてのsudoユーザー、JumpServerはこのユーザーを使用して、「システムユーザーのプッシュ」、「アセットハードウェア情報の取得」などを行います。

6.システムユーザーを作成します。ここでのシステムユーザーとは、jumpserverを使用して対応する制御対象ホストにログインするために使用するユーザーを指します。

JumpServerの展開と使用

JumpServerの展開と使用

ヒント:資産管理--->システムユーザー--->新規、ユーザー名を入力し、自動プッシュと自動キー生成を確認し、下部にある[送信]をクリックします。ここに入力したユーザーが対応するログインとして使用されますジャンプサーバーへホストにこのユーザーがいない場合、ジャンプサーバーは追加した管理ユーザーを使用して、ここでシステムユーザーを作成します。

7.アセットを作成します

JumpServerの展開と使用

ヒント:資産管理--->資産リスト--->新規、制御対象ホストに対応するホスト情報とIPアドレス情報を入力し、ユーザーを管理し、下部にある[送信]をクリックします。

JumpServerの展開と使用

ヒント:送信が完了すると、ホストに追加したばかりのアセットリストが表示されます。

8.資産の承認

JumpServerの展開と使用

ヒント:権限管理--->アセット認証--->作成。名前を入力した後、ユーザーとグループ、アセットとシステムユーザーを選択し、下部にある[送信]をクリックします。この時点で、リソースはテストを許可されます。ユーザーとテストユーザー。これはグループのメンバーです。ここでは注意が必要です。ノードには多数のサーバーがあります。特定のユーザーに対して単一のサーバーのみを承認する場合は、下のノードを空白のままにします。必要に応じてノードをユーザーに承認するには、ノードを選択できます。上記のアセットは空白のままにすることができます。単一のアセットと特定のノードをユーザーに承認する場合は、対応するアセットとノードを選択するだけです。デフォルトノードの場合ここで選択されている場合、デフォルトノードの下のすべてのホストがユーザーに許可されていることを意味します。デフォルトノードにはデフォルトですべてのホストが含まれています。

検証:テストユーザーを使用してjumpserverにログインし、テストユーザーが作成したリソースを表示できるかどうかを確認しますか?

JumpServerの展開と使用

ヒント:初めてログインすると、ユーザーの情報が更新されます。その後、いくつかの条件で、実際の情報に従ってこれを変更できます。現在のユーザーが私のアセットにいくつかのアセットを持っていることがわかります。

検証:テストユーザーを使用してnode01に接続し、node01に接続できるかどうかを確認しますか?

JumpServerの展開と使用

JumpServerの展開と使用

ヒント:テストユーザーは、node01に正常に接続するように構成したjumpserverユーザーを使用できることがわかります。

9.ユーザー操作の再生を表示する

JumpServerの展開と使用

ヒント:[セッション管理] ----> [セッション管理] ----> [履歴セッション] ----> [対応するセッションの背後にある再生を検索]をクリックして、過去のセッションで対応するユーザーが実行した操作を表示します。

JumpServerの展開と使用

さて、ジャンプサーバーの基本的な操作はここで終了します。Web上の対応するメニューをクリックして、将来的に他のログを表示できます。ここでは詳しく説明しません。

元のリンク:https//www.cnblogs.com/qiuhom-1874/p/13874503.html

おすすめ

転載: blog.51cto.com/mageedu/2603620