【DB寶48】JumpServer:多雲環境下更好用的堡壘機

一、JumpServer簡介

JumpServer 是全球首款開源的堡壘機,使用 GNU GPL v2.0 開源協議,是符合 4A 規範的運維安全審計系統。

JumpServer 使用 Python / Django 為主進行開發,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal 方案,交互界面美觀、用戶體驗好。

JumpServer 採納分佈式架構,支持多機房跨區域部署,支持橫向擴展,無資產數量及並發限制。

官網網址://www.jumpserver.org/

文檔://docs.jumpserver.org/zh/master/

GitHub://github.com/jumpserver/jumpserver

1.1、頁面展示

1.2、特色優勢

  • 開源: 零門檻,線上快速獲取和安裝;
  • 分佈式: 輕鬆支持大規模並發訪問;
  • 無插件: 僅需瀏覽器,極致的 Web Terminal 使用體驗;
  • 多雲支持: 一套系統,同時管理不同雲上面的資產;
  • 雲端存儲: 審計錄像雲端存儲,永不丟失;
  • 多租戶: 一套系統,多個子公司和部門同時使用;
  • 多應用支持: 數據庫,Windows遠程應用,Kubernetes。

1.3、功能列表

身份認證
Authentication
登錄認證 資源統一登錄與認證
LDAP/AD 認證
RADIUS 認證
OpenID 認證(實現單點登錄)
CAS 認證 (實現單點登錄)
MFA認證 MFA 二次認證(Google Authenticator)
RADIUS 二次認證
登錄複核 用戶登錄行為受管理員的監管與控制:small_orange_diamond:
賬號管理
Account
集中賬號 管理用戶管理
系統用戶管理
統一密碼 資產密碼託管
自動生成密碼
自動推送密碼
密碼過期設置
批量改密 定期批量改密:small_orange_diamond:
多種密碼策略:small_orange_diamond:
多雲納管 對私有雲、公有雲資產自動統一納管:small_orange_diamond:
收集用戶 自定義任務定期收集主機用戶:small_orange_diamond:
密碼匣子 統一對資產主機的用戶密碼進行查看、更新、測試操作:small_orange_diamond:
授權控制
Authorization
多維授權 對用戶、用戶組、資產、資產節點、應用以及系統用戶進行授權
資產授權 資產以樹狀結構進行展示
資產和節點均可靈活授權
節點內資產自動繼承授權
子節點自動繼承父節點授權
應用授權 實現更細粒度的應用級授權
MySQL 數據庫應用、RemoteApp 遠程應用:small_orange_diamond:
動作授權 實現對授權資產的文件上傳、下載以及連接動作的控制
時間授權 實現對授權資源使用時間段的限制
特權指令 實現對特權指令的使用(支持黑白名單)
命令過濾 實現對授權系統用戶所執行的命令進行控制
文件傳輸 SFTP 文件上傳/下載
文件管理 實現 Web SFTP 文件管理
工單 管理 支持對用戶登錄請求行為進行控制:small_orange_diamond:
組織管理 實現多租戶管理與權限隔離:small_orange_diamond:
安全審計
Audit
操作審計 用戶操作行為審計
會話審計 在線會話內容審計
歷史會話內容審計
錄像審計 支持對 Linux、Windows 等資產操作的錄像進行回放審計
支持對 RemoteApp:small_orange_diamond:、MySQL 等應用操作的錄像進行回放審計
指令審計 支持對資產和應用等操作的命令進行審計
文件傳輸 可對文件的上傳、下載記錄進行審計
數據庫審計
Database
連接方式 命令方式
Web UI方式 :small_orange_diamond:
支持的數據庫 MySQL
Oracle :small_orange_diamond:
MariaDB :small_orange_diamond:
PostgreSQL :small_orange_diamond:
功能亮點 語法高亮
SQL格式化
支持快捷鍵
支持選中執行
SQL歷史查詢
支持頁面創建 DB, TABLE
會話審計 命令記錄
錄像回放

1.4、架構圖

  • 首先前端是nginx提供的動態頁面,可以通過瀏覽器來進行訪問;
  • 接着jumpserver為管理後台,管理員可以通過web頁面進行資產管理、用戶管理、資產授權等操作,用戶可以通過web頁面進行資產登錄、文件管理等操作;
  • coco 為ssh server和 web terminal server,用戶可以使用自己的賬戶通過ssh或者web terminal訪問ssh協議和telnet協議資產;
  • Luna 為web terminal server前端頁面,用戶使用web terminal方式登錄所需要的組件;
  • Guacamole 為RDP協議和vnc協議資產組件,用戶可以通過web terminal來連接RDP協議和vnc協議資產(暫時只能通過web terminal來訪問);

1.5、端口說明

端口涉及如下端口:

  • Jumpserver 默認端口為 8080/tcp ,瀏覽器訪問的端口
  • Coco 默認 SSH 端口為 2222/tcp,Web Terminal默認 端口為 5000/tcp ,通過ssh連接的時候使用的端口
  • Guacamole 默認端口為 8081/tcp
  • Nginx 默認端口為 80/tcp
  • Redis 默認端口為 6379/tcp
  • Mysql/Mariadb 默認端口為 3306/tcp

1.6、產品組件

  • Jumpserver:管理後台,是核心組件(Core), 使用 Django Class Based View 風格開發,支持 Restful API。

  • Coco:Coco為 SSH Server 和 Web Terminal Server。用戶可以通過使用自己的賬戶登錄 SSH 或者 Web Terminal直接訪問被授權的資產。不需要知道服務器的賬戶和密碼,現在 Coco 已經被 koko 取代。

  • Luna:luna 為 Web Terminal Server 前端頁面,用戶使用 Web Terminal 方式登錄時所需要的插件。

  • Guacamole:Guacamole是一個開源項目,為遠程桌面提供解決方案。Jumpserver 使用其組件實現 RDP和VNC 功能,Jumpserver 並沒有修改其代碼而是添加了額外的插件,支持 Jumpserver 調用。

二、安裝JumpServer

有2種安裝方式,可以一鍵自動部署,也可以手動部署,建議一鍵自動部署。

2.1、一鍵自動部署

僅需兩步快速安裝 JumpServer:

  1. 準備一台 2核4G (最低)且可以訪問互聯網的 64 位 Linux 主機;
  2. 以 root 用戶執行如下命令一鍵安裝 JumpServer。
-- 一鍵安裝啟動
curl -sSL //github.com/jumpserver/jumpserver/releases/download/v2.8.2/quick_start.sh | bash

-- 注意:安裝過程需要下載docker環境,重啟docker,下載很多鏡像,最後大約佔用空間3g左右,安裝時間大約30分鐘。
[root@docker36 jumpserver-installer-v2.8.2]# docker images | grep jumpserver
jumpserver/core                                                          v2.8.2              f3dd5c1946ec        2 days ago          1.01GB
jumpserver/guacamole                                                     v2.8.2              8869e8512eec        2 days ago          824MB
jumpserver/lina                                                          v2.8.2              98abb9179db1        2 days ago          27.9MB
jumpserver/luna                                                          v2.8.2              d2e17fada2f6        2 days ago          27MB
jumpserver/koko                                                          v2.8.2              40cdabc32153        2 days ago          426MB
jumpserver/mysql                                                         5                   697daaecf703        3 months ago        448MB
jumpserver/redis                                                         6-alpine            f731cd48185c        3 months ago        31.6MB
jumpserver/nginx                                                         alpine2             b47070d178ad        18 months ago       18.5MB


-- 若不能下載,請添加以下解析:
echo "
13.229.188.59 github.com
199.232.4.133 raw.githubusercontent.com
" >> /etc/hosts

echo "
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 223.5.5.5
" > /etc/resolv.conf



-- 啟動
cd /opt/jumpserver-installer-v2.8.2/
./jmsctl.sh start
-- 會啟動9個容器,創建一個網絡叫jms_net,子網為:"192.168.250.0/24"
-- 首次啟動可能會報錯,可以使用命令「docker logs -f jms_core --tail 200」查看,等表結構合併完畢後,確定該命令輸出都是 ok, 沒有 error, 重新 start 即可,詳見//docs.jumpserver.org/zh/master/install/setup_by_fast/


-- Web訪問
//192.168.66.36:8080
//192.168.66.36:8443
(默認用戶名密碼為:admin/admin)


-- 啟動後的容器和狀態
[root@docker36 jumpserver-installer-v2.8.2]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS                        PORTS                                         NAMES
26b95ecb8900        jumpserver/nginx:alpine2      "sh -c 'crond -b -d …"   57 seconds ago       Up 51 seconds (healthy)       0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp   jms_nginx
9c25659c23c4        jumpserver/luna:v2.8.2        "/docker-entrypoint.…"   About a minute ago   Up About a minute (healthy)   80/tcp                                        jms_luna
c8d74738aaa2        jumpserver/lina:v2.8.2        "/docker-entrypoint.…"   About a minute ago   Up About a minute (healthy)   80/tcp                                        jms_lina
bc24581c6d0a        jumpserver/koko:v2.8.2        "./entrypoint.sh"        About a minute ago   Up About a minute (healthy)   0.0.0.0:2222->2222/tcp, 5000/tcp              jms_koko
cc17285dc6ec        jumpserver/guacamole:v2.8.2   "/init"                  About a minute ago   Up About a minute (healthy)   8080/tcp                                      jms_guacamole
edac0a216aa3        jumpserver/core:v2.8.2        "./entrypoint.sh sta…"   About a minute ago   Up About a minute (healthy)   8070/tcp, 8080/tcp                            jms_celery
2ca03ab4d62d        jumpserver/core:v2.8.2        "./entrypoint.sh sta…"   11 minutes ago       Up 11 minutes (healthy)       8070/tcp, 8080/tcp                            jms_core
69e9bdede65f        jumpserver/redis:6-alpine     "docker-entrypoint.s…"   13 minutes ago       Up 13 minutes (healthy)       6379/tcp                                      jms_redis
c73896dc22ad        jumpserver/mysql:5            "docker-entrypoint.s…"   13 minutes ago       Up 13 minutes (healthy)       3306/tcp, 33060/tcp                           jms_mysql
[root@docker36 jumpserver-installer-v2.8.2]# 
[root@docker36 jumpserver-installer-v2.8.2]# ./jmsctl.sh status
    Name                   Command                  State                          Ports                   
-----------------------------------------------------------------------------------------------------------
jms_celery      ./entrypoint.sh start task       Up (healthy)   8070/tcp, 8080/tcp                         
jms_core        ./entrypoint.sh start web        Up (healthy)   8070/tcp, 8080/tcp                         
jms_guacamole   /init                            Up (healthy)   8080/tcp                                   
jms_koko        ./entrypoint.sh                  Up (healthy)   0.0.0.0:2222->2222/tcp, 5000/tcp           
jms_lina        /docker-entrypoint.sh ngin ...   Up (healthy)   80/tcp                                     
jms_luna        /docker-entrypoint.sh ngin ...   Up (healthy)   80/tcp                                     
jms_mysql       docker-entrypoint.sh --cha ...   Up (healthy)   3306/tcp, 33060/tcp                        
jms_nginx       sh -c crond -b -d 8 && ngi ...   Up (healthy)   0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp
jms_redis       docker-entrypoint.sh redis ...   Up (healthy)   6379/tcp  

執行過程:

[root@docker36 ~]# curl -sSL //github.com/jumpserver/jumpserver/releases/download/v2.8.2/quick_start.sh | bash
download install script to /opt/jumpserver-installe (開始下載安裝腳本到 /opt/jumpserver-installe)


       ██╗██╗   ██╗███╗   ███╗██████╗ ███████╗███████╗██████╗ ██╗   ██╗███████╗██████╗
       ██║██║   ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║   ██║██╔════╝██╔══██╗
       ██║██║   ██║██╔████╔██║██████╔╝███████╗█████╗  ██████╔╝██║   ██║█████╗  ██████╔╝
  ██   ██║██║   ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝  ██╔══██╗╚██╗ ██╔╝██╔══╝  ██╔══██╗
  ╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║     ███████║███████╗██║  ██║ ╚████╔╝ ███████╗██║  ██║
  ╚════╝  ╚═════╝ ╚═╝     ╚═╝╚═╝     ╚══════╝╚══════╝╚═╝  ╚═╝  ╚═══╝  ╚══════╝╚═╝  ╚═╝

                                                                   Version:  v2.8.2  

語言 Language  (cn/en)  (default cn): 

>>> Install and Configure Docker
1. Install Docker
Starting to download Docker engine ...
complete
Starting to download Docker Compose binary ...
complete

2. Configure Docker
是否需要自定義 Docker 數據目錄, 默認將使用 /var/lib/docker 目錄? (y/n)  (default n): complete

3. Start Docker
Docker version has changed or Docker configuration file has been changed, do you want to restart? (y/n)  (default y): complete

>>> Loading Docker Image
[jumpserver/redis:6-alpine]
6-alpine: Pulling from jumpserver/redis
05e7bc50f07f: Pull complete 
14c9d57a1c7f: Pull complete 
ccd033d7ec06: Pull complete 
6ff79b059f99: Pull complete 
d91237314b77: Pull complete 
c47d41ba6aa8: Pull complete 
Digest: sha256:4920debee18fad71841ce101a7867743ff8fe7d47e6191b750c3edcfffc1cb18
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/redis:6-alpine
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/redis:6-alpine
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/redis@sha256:4920debee18fad71841ce101a7867743ff8fe7d47e6191b750c3edcfffc1cb18

[jumpserver/mysql:5]
5: Pulling from jumpserver/mysql
6ec7b7d162b2: Pull complete 
fedd960d3481: Pull complete 
7ab947313861: Pull complete 
64f92f19e638: Pull complete 
3e80b17bff96: Pull complete 
014e976799f9: Pull complete 
59ae84fee1b3: Pull complete 
7d1da2a18e2e: Pull complete 
301a28b700b9: Pull complete 
979b389fc71f: Pull complete 
403f729b1bad: Pull complete 
Digest: sha256:b3b2703de646600b008cbb2de36b70b21e51e7e93a7fca450d2b08151658b2dd
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/mysql:5
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/mysql:5
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/mysql@sha256:b3b2703de646600b008cbb2de36b70b21e51e7e93a7fca450d2b08151658b2dd

[jumpserver/nginx:alpine2]
alpine2: Pulling from jumpserver/nginx
c87736221ed0: Pull complete 
6ff0ab02fe54: Pull complete 
e5b318df7728: Pull complete 
b7a5a4fe8726: Pull complete 
Digest: sha256:d25ed0a8c1b4957f918555c0dbda9d71695d7b336d24f7017a87b2081baf1112
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/nginx:alpine2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/nginx:alpine2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/nginx@sha256:d25ed0a8c1b4957f918555c0dbda9d71695d7b336d24f7017a87b2081baf1112

[jumpserver/luna:v2.8.2]
v2.8.2: Pulling from jumpserver/luna
801bfaa63ef2: Pull complete 
b1242e25d284: Pull complete 
7453d3e6b909: Pull complete 
07ce7418c4f8: Pull complete 
e295e0624aa3: Pull complete 
4363a3b6ab61: Pull complete 
7270d1c7bfd7: Pull complete 
Digest: sha256:47f6bc784a2c8b0bfdfdfc465bb5b62012122dc1cd83257afa09edb7d027bdca
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/luna:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/luna:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/luna@sha256:47f6bc784a2c8b0bfdfdfc465bb5b62012122dc1cd83257afa09edb7d027bdca

[jumpserver/core:v2.8.2]
v2.8.2: Pulling from jumpserver/core
6ec7b7d162b2: Already exists 
80ff6536d04b: Pull complete 
2d04da85e485: Pull complete 
998aa32a5c8a: Pull complete 
7733ef26f344: Pull complete 
d441f02b2497: Pull complete 
64cad81ca92c: Pull complete 
cf134c77199b: Pull complete 
5c09bcf88bcf: Pull complete 
fe2b4e1dc49b: Pull complete 
328b09a36265: Pull complete 
c5b2c15fd6d6: Pull complete 
88d58a6b84f5: Pull complete 
Digest: sha256:13a53d3ad8e67c7e25890e44aeaac0dfe9d0f23d75f420bd536181897a0a57a2
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/core:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/core:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/core@sha256:13a53d3ad8e67c7e25890e44aeaac0dfe9d0f23d75f420bd536181897a0a57a2

[jumpserver/koko:v2.8.2]
v2.8.2: Pulling from jumpserver/koko
6d28e14ab8c8: Pull complete 
0df8b93ef734: Pull complete 
64e864129ede: Pull complete 
0a873335f747: Pull complete 
72734be47e36: Pull complete 
210e6f3fd739: Pull complete 
68eb2bfabdf9: Pull complete 
2b514aadeb8d: Pull complete 
b06884356f2d: Pull complete 
48b4106b3314: Pull complete 
c06b5a09cb3a: Pull complete 
52981c83908c: Pull complete 
4a31deb17aed: Pull complete 
8080af3428ec: Pull complete 
d45214541239: Pull complete 
Digest: sha256:0e6b2c718c2bbc046d22240d245014361c4f151d0668efab3a0bdc3d6025fd27
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/koko:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/koko:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/koko@sha256:0e6b2c718c2bbc046d22240d245014361c4f151d0668efab3a0bdc3d6025fd27

[jumpserver/guacamole:v2.8.2]
v2.8.2: Pulling from jumpserver/guacamole
6c33745f49b4: Pull complete 
ef072fc32a84: Pull complete 
c0afb8e68e0b: Pull complete 
d599c07d28e6: Pull complete 
e8a829023b97: Pull complete 
2709df21cc5c: Pull complete 
3bfb431a8cf5: Pull complete 
bb9822eef866: Pull complete 
5842bda2007b: Pull complete 
453a23f25fcb: Pull complete 
95325cfda054: Pull complete 
d0bba8ca7733: Pull complete 
77ed1f7e99c3: Pull complete 
7c218a3bc8c8: Pull complete 
b9b23e074906: Pull complete 
6eb77dc135e9: Pull complete 
5805059e25b4: Pull complete 
8687f3be3de5: Pull complete 
b3a371cb4926: Pull complete 
0e0115337931: Pull complete 
8871470a6d50: Pull complete 
0983df4b79d8: Pull complete 
97e3ae311d7b: Pull complete 
033a9d7411c6: Pull complete 
Digest: sha256:f6587bb65eb40dd101144ee89432a0310c46b245dcebc61965ae4de34fd82775
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/guacamole:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/guacamole:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/guacamole@sha256:f6587bb65eb40dd101144ee89432a0310c46b245dcebc61965ae4de34fd82775

[jumpserver/lina:v2.8.2]
v2.8.2: Pulling from jumpserver/lina
801bfaa63ef2: Already exists 
b1242e25d284: Already exists 
7453d3e6b909: Already exists 
07ce7418c4f8: Already exists 
e295e0624aa3: Already exists 
f2cd4bacfc5e: Pull complete 
16594fe0b0fc: Pull complete 
Digest: sha256:f809b70fcdcbb9216dfa40c6ab1bd293ca85e3eaf2d2c4d77ae9a1e80e0c82e5
Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/jumpserver/lina:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/lina:v2.8.2
Untagged: swr.cn-south-1.myhuaweicloud.com/jumpserver/lina@sha256:f809b70fcdcbb9216dfa40c6ab1bd293ca85e3eaf2d2c4d77ae9a1e80e0c82e5


>>> Install and Configure JumpServer
1. Check Configuration File
Path to Configuration file: /opt/jumpserver/config
/opt/jumpserver/config/config.txt  [ √ ]
/opt/jumpserver/config/nginx/lb_http_server.conf  [ √ ]
/opt/jumpserver/config/nginx/lb_ssh_server.conf  [ √ ]
/opt/jumpserver/config/core/config.yml  [ √ ]
/opt/jumpserver/config/koko/config.yml  [ √ ]
/opt/jumpserver/config/mysql/my.cnf  [ √ ]
/opt/jumpserver/config/redis/redis.conf  [ √ ]
complete

2. Configure Nginx
configuration file: /opt/jumpserver/config/nginx/cert
/opt/jumpserver/config/nginx/cert/server.crt  [ √ ]
/opt/jumpserver/config/nginx/cert/server.key  [ √ ]
complete

3. Backup Configuration File
Back up to /opt/jumpserver/config/backup/config.txt.2021-03-26_10-26-53
complete

4. Configure Network
Do you want to support IPv6? (y/n)  (default n): complete

5. Configure Private Key
SECRETE_KEY:     ICAgICAgICBUWCBlcnJvcnMgMCAgZHJvcHBlZCAwIG92ZXJyd
BOOTSTRAP_TOKEN: ICAgICAgICBUWCBl
complete

6. Configure Persistent Directory
Do you need custom persistent store, will use the default directory /opt/jumpserver? (y/n)  (default n): complete

7. Configure MySQL
Do you want to use external MySQL? (y/n)  (default n): complete

8. Configure Redis
Do you want to use external Redis? (y/n)  (default n): complete

>>> The Installation is Complete
1. You can use the following command to start, and then visit
./jmsctl.sh start

2. Other management commands
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
For more commands, you can enter ./jmsctl.sh --help to understand

3. Web access
//172.17.0.3:8080
//172.17.0.3:8443
Default username: admin  Default password: admin

4. SSH/SFTP access
ssh [email protected] -p2222
sftp -P2222 [email protected]

5. More information
Offical Website: //www.jumpserver.org/
Documentation: //docs.jumpserver.org/


[root@docker36 ~]# cd /opt/jumpserver-installer-v2.8.2/
[root@docker36 jumpserver-installer-v2.8.2]# ll
總用量 28
drwxrwxr-x 3 root root 4096 3月  18 14:41 compose
-rw-rw-r-- 1 root root 1863 3月  18 14:41 config-example.txt
drwxrwxr-x 7 root root   80 3月  18 14:41 config_init
-rwxrwxr-x 1 root root 5503 3月  18 14:41 jmsctl.sh
drwxrwxr-x 4 root root   27 3月  18 14:41 locale
-rw-rw-r-- 1 root root 2603 3月  18 14:41 README.md
drwxrwxr-x 2 root root 4096 3月  18 14:41 scripts
-rw-rw-r-- 1 root root   46 3月  26 11:54 static.env
drwxrwxr-x 2 root root   39 3月  18 14:41 utils

[root@docker36 jumpserver-installer-v2.8.2]# ./jmsctl.sh start              
Creating network "jms_net" with driver "bridge"
Creating jms_redis ... done
Creating jms_mysql ... done
Creating jms_core  ... done
Creating jms_celery    ... done
Creating jms_guacamole ... done
Creating jms_lina      ... done
Creating jms_koko      ... done
Creating jms_luna      ... done
Creating jms_nginx     ... done

//192.168.66.36:8443

//192.168.66.36:8080/

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

提示:重設密碼後,重新登錄,jumpserver的首頁就是下圖這樣;後續我們就可以在這個界面來管理內網服務器了;到此jumpserver服務器就搭建好了;

2.2、手動部署

cd /opt
yum -y install wget
wget //github.com/jumpserver/installer/releases/download/v2.8.2/jumpserver-installer-v2.8.2.tar.gz
tar -xf jumpserver-installer-v2.8.2.tar.gz
cd jumpserver-installer-v2.8.2

cat config-example.txt
# 以下設置如果為空系統會自動生成隨機字符串填入
## 遷移請修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 為原來的設置

## 安裝配置
DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
VOLUME_DIR=/opt/jumpserver
DOCKER_DIR=/var/lib/docker
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

## 使用外置 MySQL 配置
USE_EXTERNAL_MYSQL=0
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

## 使用外置 Redis 配置
USE_EXTERNAL_REDIS=0
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

## Compose 項目設置
COMPOSE_PROJECT_NAME=jms
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=192.168.250.0/24

## IPV6
DOCKER_SUBNET_IPV6=2001:db8:10::/64
USE_IPV6=0

## Nginx 配置,這個 Nginx 是用來分發路徑到不同的服務
HTTP_PORT=80
HTTPS_PORT=443
SSH_PORT=2222

## LB 配置, 這個 Nginx 是 HA 時可以啟動負載均衡到不同的主機
USE_LB=0
LB_HTTP_PORT=80
LB_HTTPS_PORT=443
LB_SSH_PORT=2222

## Task 配置
USE_TASK=1

## XPack
USE_XPACK=0

# Mysql 容器配置
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=jumpserver

# Core 配置
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true

### Keycloak 配置方式
### AUTH_OPENID=true
### BASE_SITE_URL=//jumpserver.company.com/
### AUTH_OPENID_SERVER_URL=//keycloak.company.com/auth
### AUTH_OPENID_REALM_NAME=cmp
### AUTH_OPENID_CLIENT_ID=jumpserver
### AUTH_OPENID_CLIENT_SECRET=
### AUTH_OPENID_SHARE_SESSION=true
### AUTH_OPENID_IGNORE_SSL_VERIFICATION=true

# Koko 配置
CORE_HOST=//core:8080

# Guacamole 配置
JUMPSERVER_SERVER=//core:8080
JUMPSERVER_KEY_DIR=/config/guacamole/data/key/
JUMPSERVER_RECORD_PATH=/config/guacamole/data/record/
JUMPSERVER_DRIVE_PATH=/config/guacamole/data/drive/
JUMPSERVER_ENABLE_DRIVE=true
JUMPSERVER_CLEAR_DRIVE_SESSION=true
JUMPSERVER_CLEAR_DRIVE_SCHEDULE=24

三、JumpServer使用說明

3.1、系統設置

3.1.1、基本設置

名稱 示例 備註
當前站點URL //demo.jumpserver.org 不設置的話,郵件收到的地址為 //localhost
用戶嚮導URL 用戶首次登陸可以看到此 超鏈接,可以不設置
忘記密碼URL 使用了 LDAP, OPENID 等外部認證系統,可以自定義

基本設置是必須設置當前jumpserver的url。

3.1.2、郵件設置

必須設置才能使用與郵件相關的功能

不可以同時勾選 使用SSL使用TLS

名稱 示例 備註
SMTP主機 smtp.qq.com 服務商提供的 smtp 服務器
SMTP端口 25 通常是 25
SMTP賬號 [email protected] 通常是 [email protected]
SMTP密碼 **************** 每次 測試連接 都需要重新輸入密碼
使用SSL [ ] 如果端口使用 465,必須勾選此項
使用TLS [ ] 如果端口使用 587,必須勾選此項
發件人 [email protected] 測試連接 必須要輸入
主題前綴 [JMS] 郵件的標題,收到的郵件是 [JMS] 開頭
測試收件人 [email protected] 測試連接必填

在系統設置—>郵件設置,把對應的賬號信息,郵件服務器信息都填寫好,然後測試連接,如果可以正常收到郵件,說明郵件服務器信息和郵件用戶名密碼沒有問題;最後點提交;

和郵件主題前綴;這樣在用戶收到郵件中的鏈接都會指向這個jumpserver的url;

收到郵件:

3.1.3、登陸用戶

jumpserver涉及到的三個用戶:

  • 登錄用戶,用於創建給開發人員進行登錄JumpServer的用戶;
  • 管理用戶,指定用戶名和密碼,就是添加的資源機器的登錄賬號;
  • 系統用戶,jumpserver跳轉登錄資產時使用的用戶;

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

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

3.2、資產管理

準備兩個測試資產和一個數據庫來驗證功能

IP Host name Port System Admin User Password
172.16.80.11 test_ssh01 22 Centos 7 root Test2020.L
172.16.80.21 test_rdp01 3389 Windows 10 administrator Test2020.W
172.16.80.31 test_mysql01 3306 MySQL 5 root Test2020.M

Windows 資產先進行 Windows SSH 設置

MySQL 應用需要授權 core 和 koko 的遠程訪問的權限 MySQL 應用要求

3.2.1、編輯資產樹

根節點 Default 不能重名, 右擊節點可以添加、刪除和重命名節點, 以及進行資產相關的操作

說明:\:

點擊頁面左側的 資產管理資產列表
先在根節點 Default 右鍵新建 SSH ServerRDP Server 兩個節點

Defaule
├─ SSH Server
└─ RDP Server

3.2.2、創建管理用戶

點擊頁面左側的 資產管理新建管理用戶 創建兩個管理用戶, 管理用戶的內容就是上面表單的 Admin UserPassword

名稱不能重名, 密碼或者密鑰二選一即可, 一些資產不允許通過 密碼 認證可以改用 私鑰 認證

表單 SSH 管理用戶示例 RDP 管理用戶示例
名稱 172.16.80.11_root 172.16.80.21_administrator
用戶名 root administrator
密碼 Test2020.L Test2020.W
SSH密鑰
備註 SSH 資產管理用戶 RDP 資產管理用戶

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

3.2.3、創建資產

點擊頁面左側的 資產管理資產列表創建資產 把兩個資產導入

主機名不能重名

表單 SSH 資產示例 RDP 資產示例
主機名 test_ssh01 test_rdp01
IP(域名) 172.16.80.11 172.16.80.21
系統平台 Linux Windows
公網IP
網域
協議組 ssh 22 rdp 3389 / ssh 22
管理用戶 172.16.80.11_root 172.16.80.21_administrator
節點 Default / SSH Server Default / RDP Server

創建 Windows 資產, 注意協議組我們需要選擇 sshrdp, 否則無法獲取 Windows 資產的狀態及硬件信息。

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

提示:提交完成後,我們就可以在資產列表中看到我們剛才添加到主機;

3.2.4、創建數據庫應用

擊頁面左側的 應用管理數據庫應用創建數據庫應用 創建 mysql 數據庫

表單 MySQL 資產示例
名稱 test_mysql01
類型 MySQL
主機 172.16.80.31
端口 3306
數據庫
備註 MySQL 資產

數據庫 選項可以留空, 如果是某些特定用戶, 只允許訪問指定的數據庫, 這裡指定數據庫名稱即可

3.2.5、創建系統用戶

IP System System User Password Group Sudo Sftp Root
172.16.80.11 Centos 7 testssh01 random pass ALL /
172.16.80.21 Windows 10 testrdp01 random pass Users
172.16.80.23 MySQL 5 root Test2020.M

點擊頁面左側的 資產管理系統用戶創建系統用戶 創建對應協議系統用戶

表單 SSH 系統用戶
名稱 test_ssh01_測試系統用戶
登錄模式 自動登陸
用戶名 testssh01
協議 ssh
自動推送
Sudo ALL
Shell /bin/bash
家目錄
用戶附屬組
自動生成密鑰
SFTP根路徑 /
表單 RDP 系統用戶
名稱 test_rdp01_測試系統用戶
登錄模式 自動登陸
用戶名 testrdp01
協議 rdp
自動推送
自動生成密鑰
表單 MySQL 系統用戶
名稱 test_mysql01_測試系統用戶
登錄模式 自動登陸
用戶名 root
協議 mysql
密碼 Test2020.M

資產管理—>系統用戶—>新建,填寫好用戶名,勾選自動推送和自動生成密鑰,點擊最下方的提交即可;這裡填寫的用戶會用作jumpserver上登錄對應的主機用到用戶,如果被管控端沒有這個用戶,jumpserver就會利用我們剛才添加的管理用戶去創建一個這裡的系統用戶;

3.3、創建授權規則

權限管理—>資產授權—>創建,填寫好名稱後,要選擇用戶和組以及資產和系統用戶,然後點擊最下方的提交;到此一個資源就授權給test用戶和test組中的成員了;這裡需要注意一點,一個節點中有很多server,如果你只想授權單台server給某個用戶,下面的節點就留空,如果你想授權一個節點給用戶你可以選擇節點,上面的資產就可以留空,如果你又想授權單個資產和某個節點給用戶,就選擇對應的資產和節點即可;如果這裡選擇default節點,表示把default節點下的所有主機都授權給用戶;默認default節點包含所有主機;

3.3.1、為用戶分配資產

IP System System User User
172.16.80.11 Centos 7 testssh01 admin
172.16.80.21 Windows 10 testrdp01 admin
172.16.80.31 MySQL 5 root admin

點擊頁面左側的 授權管理資產授權創建授權規則 創建兩個授權

表單 SSH 資產授權 RDP 資產授權
名稱 test_ssh01_測試授權 test_rdp01_測試授權
用戶 Administrator(admin) Administrator(admin)
用戶組
資產 test_ssh01(172.16.80.11) test_rdp01(172.16.80.21)
節點
系統用戶 test_ssh01_測試系統用戶(testssh01) test_rdp01_測試系統用戶(testrdp01)
權限 √ 全部 √ 全部

3.3.2、為用戶分配數據庫應用

點擊頁面左側的 授權管理數據庫應用創建授權規則 創建數據庫授權

表單 MySQL 資產授權
名稱 test_mysql01_測試授權
用戶 Administrator(admin)
用戶組
數據庫應用 test_mysql01
系統用戶 test_mysql01_測試系統用戶(root)

3.4、用戶登錄

  • 登錄 JumpServer
    點擊頁面左側的 會話管理Web終端 用戶只能看到自己被管理員授權了的 資產 , 如果登錄後無資產, 請聯繫管理員進行確認

  • 連接資產
    在我的資產點擊資產右邊的 連接 快速連接資產
    也可以點擊左側欄的 Web終端 點擊 資產 名字, 就連上資產了
    如果顯示連接 超時, 請參考 FAQ 文檔進行處理

  • 斷開資產
    點擊頁面頂部的 Server 按鈕會彈出選個選項, 第一個斷開所選的連接, 第二個斷開所有連接
    也可以直接點資產小窗口的 X , SSH 會話也可以輸入 exit 來退出
    直接關閉頁面也可以, 但是不推薦

  • 文件管理
    點擊 文件管理
    先在左邊選擇資產, 目前只支持自動登錄的 SSH 協議 資產
    也可以使用 sftp 方式進行 文件管理

3.5、查看用戶操作回放

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

About Me


● 本文作者:小麥苗,部分內容整理自網絡,若有侵權請聯繫小麥苗刪除
● 本文原始發表於個人微 信公眾號(DB寶)上
● QQ群號: 230161599 、618766405,微信群私聊
● 個人QQ號(646634621),微 信號(db_bao),註明添加緣由
● 版權所有,歡迎分享本文,轉載請保留出處

Tags: