Jumpserver docker搭建

一、概述

Jumpserver 是全球首款完全開源的堡壘機, 使用 GNU GPL v2.0 開源協議, 是符合 4A 的專業運維審計系統。
Jumpserver 使用 Python / Django 進行開發, 遵循 Web 2.0 規範, 配備了業界領先的 Web Terminal 解決方案, 交互界面美觀、用戶體驗好。
Jumpserver 採納分佈式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無併發訪問限制。
Jumpserver 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。

二、安裝

環境介紹

操作系統 配置 ip地址 主機名 安裝軟件
centos 7.6 2核4g 192.168.31.200 jumpserver docker
centos 7.6 1核2g 192.168.31.150 svr-1
centos 7.6 1核2g 192.168.31.216 svr-2

 

 

 

 

 

 

mysql

使用docker方式安裝

注意:密碼不要設置123456這種簡單的密碼

mkdir -p /data/mysql/data
docker run -d --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=abcd@1234  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

創建jumpserver數據庫

注意:密碼不要設置123456這種簡單的密碼,否則會導致jumpserver無法寫入數據!提示無法連接mysql

# docker exec -it mysql /bin/bash
# mysql -u root -pabcd@1234
mysql> create database jumpserver default charset 'utf8mb4';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'abcd@1234';
mysql> flush privileges;
mysql> exit;
# exit

 

redis

使用docker方式安裝

mkdir -p /data/redis/data
docker run -d -it --name redis -p 6379:6379 -v /data/redis/data:/data --restart=always  --sysctl net.core.somaxconn=1024  redis:4.0.10 --requirepass "123456"

 

jumpserver

Jumpserver 封裝了一個 All in one Docker, 可以快速啓動。該鏡像集成了所需要的組件, 支持使用外置 Database 和 Redis

 

生成隨機加密密鑰

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

 

啓動jumpserver

這裏使用最新版本1.5.6

mkdir -p /data/jumpserver
docker run -d --name jumpserver -h jumpserver --restart=always  \
    -v /data/jumpserver:/opt/jumpserver/data/media \
    -p 80:80 \
    -p 2222:2222 \
    -e SECRET_KEY=$SECRET_KEY \
    -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \
    -e DB_HOST=192.168.31.200 \
    -e DB_PORT=3306 \
    -e DB_USER=jumpserver \
    -e DB_PASSWORD="abcd@1234" \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=192.168.31.200 \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD="123456" \
jumpserver/jms_all:1.5.6

參數解釋:

-h 指定docker主機名

-e 指定環境變量,注意修改mysql和redis的ip地址和密碼。

 

查看jumpserver啓動日誌

# docker logs -f jumpserver 
2020-01-09 20:02:18 Thu Jan  9 20:02:18 2020
2020-01-09 20:02:18 Jumpserver version 1.5.6, more see https://www.jumpserver.org
2020-01-09 20:02:18 Check database connection ...
users
 [ ] 0001_initial
...
Starting guacd: SUCCESS
Tomcat started.
Jumpserver ALL 1.5.6
官網 http://www.jumpserver.org
文檔 http://docs.jumpserver.org
有問題請參考 http://docs.jumpserver.org/zh/docs/faq.html

進入容器命令 docker exec -it jms_all /bin/bash

 

訪問網頁

http://192.168.31.200/

用戶名:admin

密碼:admin

 

四、配置

更改密碼

由於默認密碼是admin,不安全。需要修改一下

 

 點擊右側更改密碼即可。

 

 

基本設置

點擊系統設置-->基本設置

更改當前url和主題前綴

 配置郵箱

 

用戶管理

先來看一下jumpserver的用戶

 

用戶組

創建開發組

 

 

用戶列表

默認只有一個administrator管理員賬戶,創建一個開發用戶zhang

設置默認密碼,開啓MFA

 

 

 

 用戶登錄

使用普通用戶登錄

 

 再次輸入密碼

 

安裝應用

 

 

使用手機掃描,輸入6位校驗碼。

 

 注意:部分安卓手機,可能無法掃描。需要手動輸入提供的祕鑰,在上圖紅框中的祕鑰。

 輸入6位校驗碼之後,就會提示綁定成功

 

 重新登錄,輸入用戶和密碼,會提示MFA認證

 

 登錄成功之後,效果如下:

 

資產管理

管理用戶

管理用戶是針對於主機資產的管理員賬戶,可以用來推送一般權限賬戶。

 

進入docker容器,創建用戶assets,生成祕鑰

# docker exec -it jumpserver /bin/bash
# useradd assets
# su assets
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/assets/.ssh'.
Your identification has been saved in /home/assets/.ssh/id_rsa.
Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:N03AqZFRSrdTfPs+nF9x+FaOtKqkW73w4ItCHXFryS0 assets@jumpserver
The key's randomart image is:
+---[RSA 2048]----+
|        o=+o.    |
|       .+o++. .  |
|        .*o+.. . |
|        o E+. .. |
|       .Soo.. ooo|
|      . .. o . ==|
|     .    = . +.*|
|      .  * + o =o|
|       .+.+o+   +|
+----[SHA256]-----+

 

退出容器,拷貝祕鑰對

# cd /data/jumpserver/
# docker cp jumpserver:/home/assets/.ssh/id_rsa .
# docker cp jumpserver:/home/assets/.ssh/id_rsa.pub .

將id_rsa下載到桌面

 

創建管理用戶assets,上傳祕鑰文件

 

系統用戶

系統用戶是 Jumpserver 跳轉登錄資產時使用的用戶,可以理解爲登錄資產用戶。在授權規則中,會用到此用戶!

創建develop,專門爲開發人員使用的。

 

 

 注意:上面有一個sudo,表示不允許執行命令的列表。注意絕對路徑要填寫正確,否則不會生效。

禁止開發人員,切換用戶。比如root

一定要禁止,否則輸入

sudo su -

就可以直接切換到root用戶,非常不安全!

 

資產列表

 默認沒有資產,default下面也沒有節點,可以創建不同類型的節點,在節點組下創建節點。
也可以對網域進行管理,網域概念估計是之前版本的IDC、機房的概念。

創建資產

新建節點

 

 重命名爲測試環境,點擊創建資產

 

 

 輸入基本信息,如果ssh端口不是22,請更改。

 

 

登錄到主機svr-1,新建用戶assets,生成祕鑰

[root@svr-1 ~]# useradd assets
[root@svr-1 ~]# su assets
[assets@svr-1 root]$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/assets/.ssh'.
Your identification has been saved in /home/assets/.ssh/id_rsa.
Your public key has been saved in /home/assets/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:SH/ap8XVKnqSYlfJLUpNsjUrdNyW4aY/fmOA/UgoF7k assets@svr-1
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|              .  |
|      .    ..o o |
|     . o  oo* *. |
|      . S..O*O. .|
|         =+EO=.. |
|        ..+=*o=  |
|        o ==.oo+.|
|       . ooo .oo.|
+----[SHA256]-----+
[assets@svr-1 root]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[assets@svr-1 root]$ chmod 600 ~/.ssh/authorized_keys
[assets@svr-1 ~]$ cd ~/.ssh/
[assets@svr-1 .ssh]$ vi authorized_keys 

 

登錄到jumpserver,查看docker容器中assets的公鑰

# cd /data/jumpserver/
# cat id_rsa.pub

 

在上面的步驟 vi authorized_keys ,添加assets的公鑰

...
# jumpserver assets
ssh-rsa AAAAB3NzaC1y...

 

登錄svr-1主機,修改配置文件

vi /etc/sudoers

在root後面添加一行

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
assets   ALL=(ALL)    NOPASSWD:ALL

使用 :x! 強制保存

 

測試資產

 

 確保測試是ok的

 

如果沒有在svr-1開啓assets用戶的sudo免密,會導致測試失敗! 

 

權限管理

資產授權

點擊創建權限規則

 

 

 

web終端

登錄zhang用戶,點擊web終端

 

 點擊svr-1

 

 出現報錯

Connect asset svr-1 error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password publickey], no supported methods remain

這是因爲svr-1主機,還沒有develop用戶

 

點擊資產管理-->系統用戶,點擊推送

 

 

 確保推送成功

 

 

重新刷新web終端頁面,再次點擊svr-1,就可以登錄了。

輸入命令 date,效果如下:

 

ssh終端

上面提到的是web終端方式,如果不喜歡的話,可以使用ssh客戶端工具,比如xhsell。

這裏推薦使用祕鑰方式登錄

確保windos10或者mac已經生成了ssh密鑰對。

windows10路徑爲:C:\Users\用戶名\.ssh

mac路徑爲:~/.ssh

 

將id_rsa.pub文件內容,寫入到ssh公鑰

 

 開啓mfa

 

 使用xshell新建一個連接。

注意:ip地址是jumpserver的地址,不是svr-1的地址

端口是2222,不是22

 

 選擇祕鑰驗證,用戶名zhang,選擇私鑰文件

 

 

點擊連接,會提示mfa認證。

 

 登錄成功之後,效果如下:

 

 輸入數字1

 

 因爲只有一臺資產,所以就直接登錄了。如果有多臺,會有一個列表選擇的!

 

測試切換到root用戶

 

 

提示輸入密碼,注意:我沒有給develop設置密碼。

那麼我測試一下,給develop用戶設置一個密碼。

登錄到svr-1,使用root登錄,給develop設置密碼

# passwd develop

 

再次使用zhang登錄堡壘機

 

 

提示無法執行。

 

上面是爲開發用戶,設置了一套權限。如果是管理員呢?

新建用戶組

manage

 

 

新建一個系統用戶manage

 

 

 

創建授權規則

 

 

 

推送用戶

 確保推送成功

 

 

使用admin登錄jumpserver

點擊會話管理-->web終端

點擊svr-1,就會以manage用戶登錄了。

 

切換到root用戶

 

由於沒有給manage設置密碼,我這裏直接使用在svr-1設置sudo免密即可。

以root用戶登錄svr-1,修改配置文件

vi /etc/sudoers

增加一行manage

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
assets   ALL=(ALL)    NOPASSWD:ALL
manage   ALL=(ALL)    NOPASSWD:ALL

 

刷新web終端,再次切換用戶

 

 這樣,就可以了!

 

 

 

本文參考鏈接:

https://blog.csdn.net/imtech/article/details/89332410

發佈了287 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章