一、概述
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
訪問網頁
用戶名: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終端,再次切換用戶
這樣,就可以了!
本文參考鏈接: