【DB寶48】JumpServer:多雲環境下更好用的堡壘機
一、JumpServer簡介
JumpServer 是全球首款開源的堡壘機,使用 GNU GPL v2.0 開源協議,是符合 4A 規範的運維安全審計系統。
JumpServer 使用 Python / Django 為主進行開發,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal 方案,交互界面美觀、用戶體驗好。
JumpServer 採納分佈式架構,支持多機房跨區域部署,支持橫向擴展,無資產數量及並發限制。
文檔://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
- 極速安裝://docs.jumpserver.org/zh/master/install/setup_by_fast/
- 完整文檔://docs.jumpserver.org
- 演示視頻://www.bilibili.com/video/BV1ZV41127GB
有2種安裝方式,可以一鍵自動部署,也可以手動部署,建議一鍵自動部署。
2.1、一鍵自動部署
僅需兩步快速安裝 JumpServer:
- 準備一台 2核4G (最低)且可以訪問互聯網的 64 位 Linux 主機;
- 以 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
提示:第一次登陸時,它會讓我們重設密碼;
提示:重設密碼後,重新登錄,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使用說明
- 視頻教程 JumpServer 從入門到精通://www.bilibili.com/video/BV19D4y1S7s4
- 官網://jumpserver.readthedocs.io/zh/master/admin-guide/quick_start/
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 Server
和 RDP Server
兩個節點
Defaule
├─ SSH Server
└─ RDP Server
3.2.2、創建管理用戶
點擊頁面左側的 資產管理
– 新建管理用戶
創建兩個管理用戶, 管理用戶的內容就是上面表單的 Admin User
和 Password
名稱不能重名, 密碼或者密鑰二選一即可, 一些資產不允許通過 密碼 認證可以改用 私鑰 認證
表單 | 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 資產, 注意協議組我們需要選擇 ssh
和 rdp
, 否則無法獲取 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),註明添加緣由
● 版權所有,歡迎分享本文,轉載請保留出處