時間:2020-10-29來源:www.farandoo.com作者:電腦系統城
一、簡介
前面我們聊到了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倉庫
1 2 3 4 5 6 |
[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
1 | [root@node02 ~] # yum install -y MariaDB-server |
配置mariadb 忽略名稱解析
啟動mariadb
連接mariadb 創建數據庫和用戶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[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登錄數據庫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[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
1 | [root@node02 ~] # yum -y install redis |
配置redis監聽本機所有地址,并設置密碼
1 2 3 4 |
[root@node02 ~] # grep -Ei "^(bind|requirepass)" /etc/redis.conf bind 0.0.0.0 requirepass admin123.com [root@node02 ~] # |
啟動redis
驗證:登錄redis
1 2 3 4 5 6 7 8 9 |
[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源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
[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
1 | [root@node01 ~] # yum install -y docker-ce |
啟動docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
[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加速器
1 2 3 4 5 |
[root@node01 ~] # cat /etc/docker/daemon.json { "registry-mirrors" : [ "https://registry.docker-cn.com" , "https://cyr1uljt.mirror.aliyuncs.com" ] } [root@node01 ~] # |
重啟docker
1 | [root@node01 ~] # systemctl restart docker |
使用doker info 命令驗證加速器地址是否應用
下載jumpserver web鏡像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[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的腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[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
1 2 3 4 |
[root@node01 ~] # bash key_gen.sh wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q Lx15DW9xDxqOkiCq [root@node01 ~] # |
提示:這兩個隨機密鑰很重要,它用來加密數據庫字段用的,所以在環境遷移和升級都會用到這兩個key;
創建用戶保存jumpserver容器中的數據目錄
1 2 3 4 |
[root@node01 ~] # mkdir /data/jumpserver/ -pv mkdir : created directory ‘ /data ’ mkdir : created directory ‘ /data/jumpserver/ ’ [root@node01 ~] # |
啟動jumpserver/jms_all:v2.4.0鏡像為容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[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上點擊對應的菜單查看,我這里就不過多闡述了;
2022-04-13
蘋果系統安裝雙系統圖文教程 蘋果系統怎么裝雙系統 ?2022-04-13
遠程登錄Linux CentOS系統方法 怎么遠程登錄Linux CentOS系統?2022-03-21
CentOS7安裝MYSQL8.X的詳解教程很多網友對于linux系統比較陌生,更別說linux系統安裝了。有使用筆記本電腦的網友需要用到linux系統,不過卻不知道怎么安裝,所以下面小編要來跟大家說說linux操作系統安裝步驟詳細,大家一起來看看吧。...
2022-03-07
RedFlag紅旗Linux系統怎么安裝?電腦想要安裝雙系統,該怎么安裝RedFlag紅旗系統呢?下面我們就來看看紅旗Red Flag安裝全程圖解,詳細請看下文介紹...
2022-01-23