jumperserver企業堡壘機
一:jumperserver簡介
JumpServer 是全球首款完全開源的堡壘機, 使用 GNU GPL v2.0 開源協議, 是符合 4A 的專業運維審計系統。
JumpServer 使用 Python / Django 進行開發, 遵循 Web 2.0 規范, 配備了業界領先的 Web Terminal 解決方案, 交互界面美觀、用戶體驗好。
JumpServer 采納分布式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無並發訪問限制。
JumpServer 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。
二:一鍵部署jumperserver
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl restart docker
systemctl enable docker
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.6.1/quick_start.sh | sh #要求內核8G
提前安裝好docker鏡像
vim /tmp/2.sh
#!/bin/bash
docker tag docker.mirrors.ustc.edu.cn/jumpserver/nginx:alpine2 jumpserver/nginx:alpine2
docker tag docker.mirrors.ustc.edu.cn/jumpserver/core:v2.6.1 jumpserver/core:v2.6.1
docker tag docker.mirrors.ustc.edu.cn/jumpserver/koko:v2.6.1 jumpserver/koko:v2.6.1
docker tag docker.mirrors.ustc.edu.cn/jumpserver/luna:v2.6.1 jumpserver/luna:v2.6.1
docker tag docker.mirrors.ustc.edu.cn/jumpserver/lina:v2.6.1 jumpserver/lina:v2.6.1
docker tag docker.mirrors.ustc.edu.cn/jumpserver/guacamole:v2.6.1 jumpserver/guacamole:v2.6.1
docker tag docker.mirrors.ustc.edu.cn/jumpserver/elasticsearch:7.9.3 jumpserver/elasticsearch:7.9.3
docker tag docker.mirrors.ustc.edu.cn/jumpserver/nginx:alpine2 jumpserver/nginx:alpine2
docker tag docker.mirrors.ustc.edu.cn/jumpserver/mysql:5 jumpserver/mysql:5
docker tag docker.mirrors.ustc.edu.cn/jumpserver/redis:6-alpine jumpserver/redis:6-alpine
docker tag docker.mirrors.ustc.edu.cn/jumpserver/core:v2.6.1 jumpserver/core:v2.6.1
cd /opt/jumpserver-installer-v2.6.1/
./jmsctl.sh start
用戶:登錄jumpserver用的
test用戶 運維
oldboy用戶 開發
資產管理:
管理用戶: 被管理機器的root用戶
系統用戶: 登錄資產使用的用戶(允許執行的命令)
網域: 進行跳轉登錄
命令過濾: 阻止運行的命令
資產列表: 添加托管的服務器
權限管理
關聯資產和jumpserver
會話管理:
連接服務器
三:手動配置jumpserver
跳板機服務部署過程
環境准備:
1)系統環境 centos7.5 - centos7.6
2)安全優化 selinux關閉 防火牆服務關閉
3)下載優化 yum源優化
1.需要部署跳板機依賴軟件
yum -y install git python-pip mariadb-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
git --- 用於下載jumpserver軟件程序
python-pip --- 用於安裝python軟件
mariadb-devel --- 數據庫依賴軟件包
gcc --- 解析代碼中C語言信息(解釋器)
automake --- 實現軟件自動編譯過程
autoconf --- 實現軟件自動配置過程
python-devel --- 系統中需要有python依賴
readline-devel --- 在操作python命令信息時,實現補全功能
2.下載jumpserver程序
cd /opt
git clone https://git.coding.net/jumpserver/jumpserver.git
3.python軟件依賴安裝
cd /opt/jumpserver/install/
pip install -r requirements.txt
4.優化pip源信息
mkdir ~/.pip/
vim ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
5.jumpserer軟件初始化安裝
yum install -y mariadb-server
systemctl start mariadb
python install.py
注:常見問題:jumpserver服務無法正常啟動
原因一:RP值有些低
cd /opt/jumpserver/
./service.sh start
查看進程信息:
jumpserver第一個重要進程: python ./manage.py runserver 0.0.0.0:80 --- 開啟80端口服務 jumpserver第二個重要進程: python ./run_websocket.py --- 利用此進程實現跳板機可以連接其他主機
原因二:環境准備有問題
執行以下命令python /opt/jumpserver/manage.py runserver 0.0.0.0:80 --- 啟動以上第一個進程
執行以下命令
python /opt/jumpserver/run_websocket.py --- 啟動以上第二個進程
4.瀏覽器登錄jumpserver配置界面
確認是否能登錄成功
6.瀏覽器登錄jumpserver配置界面 http://10.0.0.81 admin/admin 用戶/密碼
7.跳板機服務配置過程
1)企業配置需求說明:
需求01:所有主機想要被管理必須經過跳板機管理 所有主機只監聽內網地址
需求02:設置不同用戶權限信息
oldboy 老男孩 運維人員 權限大些 企業郵箱 oldboy@xxx.com
oldgirl 老女孩 開發人員 查看數據信息 企業郵箱 oldgirl@xxx.com
olddog 老狗 數據庫人員 數據庫操作
2) 用戶管理配置
功能作用:設置可以連接跳板機用戶信息
添加用戶信息 --- 用戶信息 --- 發送郵件
收到一封創建好用戶郵件信息:
您的用戶名: oldboy
您的權限: 普通用戶
您的web登錄密碼: HqOlysmTxOUyz8Xn
您的ssh密鑰文件密碼: 28HOoAJV0fyPwnzj
密鑰下載地址: http://10.0.0.62/juser/key/down/?uuid=250dff26be35440fa7b55805e436b954
說明: 請登陸后再下載密鑰!
資產管理配置
功能作用:定義跳板機可以訪問管理主機信息
添加好資產信息 --- 連接主機地址信息/用戶信息(必須是一個管理員用戶信息)
授權管理配置
常見問題:授權用戶推送失敗:
1)遠程服務配置是否正確
網絡因素 用戶信息
2)數據庫信息出現異常
進入到數據庫中刪除jumpserver數據庫 重新創建新的數據庫
重新初始化部署jumpserver
配置驗證過程
官方資料鏈接
https://github.com/ibuler/jumpserver
https://github.com/jumpserver/jumpserver/wiki 新版本jumpserver項目資料
https://github.com/jumpserver/jumpserver/wiki/v0.3.2-常見問題-FAQ
jumpserver軟件web界面操作
利用瀏覽器登錄到jumpserver登錄界面
界面管理配置操作官方資料:
https://github.com/jumpserver/jumpserver/wiki/快速開始
①. 添加用戶
用戶管理 - 查看用戶 - 添加用戶 填寫基本信息,完成用戶添加
用戶添加完成后,根據提示記住用戶賬號密碼,換個瀏覽器登錄下載key,
ssh登錄jumpserver測試
為創建好的普通員工發送郵件通知信息
提示用戶添加成功,並且可以收到通知郵件信息
說明信息:
web界面創建用戶信息,實質上在程序內部做了兩件事
①. 在jumpserver服務程序的數據庫中相應表中,添加了新的用戶信息
②. 在jumpserver的服務系統中,利用useradd命令創建出來相應的普通用戶,並且會生成用戶對應的公鑰和私鑰,利用密鑰登錄跳板機
普通用戶還有一個重要作用,可以用來登錄jumpserver的web管理界面
②. 添加資產
資產管理 - 查看資產 - 添加資產 填寫基本信息,完成資產添加
添加資產實質的作用是添加通過跳板機可以管理的主機信息
選擇單台添加,設置好主機名或IP地址,可以選擇管理賬號,勾選默認配置
使用默認表示選擇默認的用戶配置---選擇【設置】---編輯【默認設置】,表示定義管理賬戶的默認設置
如果沒有設置,默認是無法進行勾選的
定義管理權限用戶,必須在被管理資產主機上真實存在的,並且是具有創建用戶 刪除用戶的等權限的管理用戶,比如root
管理用戶設置完成,點擊提交
輸出以下提示信息,表示主機資產添加成功
添加默認管理用戶設置
有可能公司所有主機的管理用戶和賬號密碼是一致的,就可以設置默認管理用戶
# 在資產主機中創建默認管理用戶admin
[root@jumpserver-02 ~]# useradd admin
[root@jumpserver-02 ~]# echo 123456|passwd --stdin admin
更改用戶 admin 的密碼 。
passwd: 所有的身份驗證令牌已經成功更新。
[root@jumpserver-02 ~]# visudo <- 設置非root管理用戶的sudo權限
admin ALL=(ALL) NOPASSWD: ALL
如果采用的是密鑰登錄,也可以在下面的界面輸入私鑰信息,設置完畢點擊確認保存
默認管理用戶設置完成
添加資產主機是以主機名作為主鍵識別唯一性的,可以更改主機名稱,再添加一台相同的資產主機
此種邏輯設置,主要考慮到通過遠程登錄時,公網IP一樣,端口映射不一樣,所以主機名唯一,ip地址可以進行重復使用
至此,用戶添加完畢,主機資產添加完畢,下面就要對管理權限進行授權了
③.授權管理
添加sudo
授權管理 - Sudo - 添加別名 輸入別名名稱和命令,完成sudo添加
默認跳板機創建的用戶都是普通用戶,所以需要依賴sudo命令別名功能,使之普通用戶具有相應權限,操作管理用戶的命令
出現如下提示信息,表示sudo別名命令就創建完畢了
添加系統用戶
授權管理 - 系統用戶 - 添加 輸入基本信息,完成系統用戶添加
# 知識點總結回顧
普通用戶:實際上類似於公司的員工,不同的員工可以利用創建的普通用戶,登錄跳板機界面進行管理jumpserver跳板機
管理用戶:是必須在系統中存在的用戶,后續執行一些特殊權限命令,都需要借助管理用戶,比如創建新的的用戶信息等
默認用戶:就是默認管理用戶,有時公司的全部主機會有一個共有的管理用戶,比如root用戶,就可以進行管理用戶的默認配置
系統用戶:表示用於管理系統的用戶,比如網絡系統用戶為netadmin 開發為devadmin 運維為sa等,根據職能需求進行創建
系統用戶是被管理用戶所創建出來的
系統用戶進行關聯相應sudo權限,並且可以初始化不設置密碼信息,后續會自動生成
推送系統用戶
授權管理 - 推送 - 選擇需要推送的資產或資產組完成推送
推送只支持服務器,使用密鑰是指用戶從跳板機跳轉時使用key,反之使用密碼,
授權時會檢查推送記錄,如果沒有推送過則無法完成系統用戶在該資產上的授權。
如果資產時網絡設備,請不要選擇密碼和秘鑰,模擬一下推送,目的是為了生成
推送記錄。
系統用戶配置完畢后,需要利用【推送】功能,將需要創建的用戶信息,通過ansible批量告知被管理客戶端,進行相應用戶的創建
# 查看用戶信息
[root@jumpserver-02 ~]# id dev
id: dev:無此用戶
說明:在推送系統之前,被管理主機客戶端是沒有定義的dev用戶信息的;只有推送之后才有的
進行
如下圖所示,系統用戶推送成功
[root@jumpserver-02 ~]# id dev
uid=502(dev) gid=502(dev) 組=502(dev)
說明:檢驗完畢,系統用戶推送成功
記憶回顧:模擬推送失敗過程
①. 開啟主機selinux,並且確認客戶端主機未安裝libselinux-python軟件
②. 回收dev系統用戶
③. 重新進行推送
思考:理解推送過程邏輯原理,大致理解libselinux-python軟件包作用
添加授權規則
授權管理 - 授權規則 - 添加規則 選擇剛才添加的用戶,資產,系統用戶完成授權
如果資產中存在沒有系統用戶推送記錄的資產信息,就會輸出以下錯誤信息
重新進行配置調整后,進行重新授權
上述報錯,是由於存在一些資產信息,沒有系統用戶推送記錄導致,為避免這種問題再次出現,可以將所用資產的系統用戶都推送一下
對未推送過系統用戶資產,進行系統用戶推送
重新修改授權信息
授權用戶進行調整,授權資產信息也重新進行調整
利用資產中的連接,進行連接測試,會報錯誤信息如下圖所示
提示以上錯誤,是因為沒有對admin超級管理進行資產信息的授權,下面對admin用戶也進行資產授權
取消掉一個普通用戶,添加一個管理員用戶,然后重新進行授權
授權變更完成
④. 測試登錄
用戶下載key 登錄跳板機,會自動運行connect.py,根據提示登錄服務器
用戶登陸web 查看授權的主機,點擊后面的鏈接,測試是否可以登錄服務器
利用jumpserver即可實現連接相應的主機,進行操作管理,並且使用的系統用戶就是之前創建的dev用戶
查看dev系統用戶的sudo定義的權限信息是否正確
說明信息:
以上連接主機過程,需要依賴之前啟動的run_websocket.py 程序服務,否則會出現連接異常問題
⑤. 監控和結束會話
日志審計 - 在線 查看當前登錄的用戶登錄情況,點擊監控查看用戶執行的命令, 點擊阻斷,結束用戶的會話
重新建立新的瀏覽窗口,進行監控查看
通過跳板機連接資產主機,輸入相應的命令,都會被實時監控到
通過資產操作抓取資產主機硬件信息
可以把主機資產信息批量導出,進行資產管理
還可以對所用資產主機進行批量執行命令,實現主機資產批量管理
⑥. 執行命令
測試命令的執行,命令記錄查看 批量執行命令的日志
批量執行的命令操作也是有相應操作記錄的
⑦. 查看歷史記錄
日志審計 - 登錄歷史 查看登錄歷史,點擊統計查看命令歷史,點擊回放查看錄像
4. jumpserver軟件web界面操作-普通用戶界面操作
普通用戶進行登錄
用戶名為之前創建的普通用戶用戶名,密碼為郵件發送告知,進行登錄
普通用戶進行資產主機連接管理,操作步驟基本和上面的admin管理員操作步驟一致
說明信息:
普通用戶下是沒有審計功能,所以無法對資產主機進行監控管理,只有管理員admin有權限進行對運維人員的操作監控管理
上傳下載
測試文件的上傳下載,日志審計 - 上傳下載 查看上傳下載記錄
主要是對普通用戶進行監控,對系統上的資源文件,進行過哪些上傳和下載操作
上傳和下載操作也會被進行記錄,便於管理員進行監控管理
- jumpserver軟件命令行界面操作
要用admin用戶進行命令行操作管理
用戶進入到命令行界面
[root@jumpserver-01 jumpserver]# python connect.py
沒有該用戶,或許你是以root運行的 No that user.
[root@jumpserver-01 jumpserver]# su - admin
[admin@jumpserver-01 ~]$ cd /opt/jumpserver/
[admin@jumpserver-01 jumpserver]$ python connect.py
歡迎使用Jumpserver開源跳板機系統
1) 輸入 ID 直接登錄.
2) 輸入 / + IP, 主機名 or 備注 搜索.
3) 輸入 P/p 顯示您有權限的主機.
4) 輸入 G/g 顯示您有權限的主機組.
5) 輸入 G/g + 組ID 顯示該組下主機.
6) 輸入 E/e 批量執行命令.
7) 輸入 U/u 批量上傳文件.
8) 輸入 D/d 批量下載文件.
9) 輸入 H/h 幫助.
0) 輸入 Q/q 退出.
Opt or ID>:
普通用戶下是沒有審計功能,所以無法對資產主機進行監控管理,只有管理員admin有權限進行對運維人員的操作監控管理
切換到普通用戶oldboy進行命令行操作
[root@jumpserver-01 jumpserver]# su - oldboy
### 歡迎使用Jumpserver開源跳板機系統 ###
1) 輸入 ID 直接登錄.
2) 輸入 / + IP, 主機名 or 備注 搜索.
3) 輸入 P/p 顯示您有權限的主機.
4) 輸入 G/g 顯示您有權限的主機組.
5) 輸入 G/g + 組ID 顯示該組下主機.
6) 輸入 E/e 批量執行命令.
7) 輸入 U/u 批量上傳文件.
8) 輸入 D/d 批量下載文件.
9) 輸入 H/h 幫助.
0) 輸入 Q/q 退出.
Opt or ID>:
說明:發現直接就進入到跳板機的命令行界面,因為在/etc/profile.d 目錄當中存在一個跳板機腳本 zzjumpserver.sh
模擬利用oldboy普通用戶進行管理資產主機
通過郵件信息首先下載key密鑰信息
密鑰
密鑰信息下載完成
利用xshell的密鑰登錄主機方法,將密鑰進行導入,即可直接通過密鑰登錄到跳板機命令行界面
命令行選項操作說明
### 歡迎使用Jumpserver開源跳板機系統 ###
1) 輸入 ID 直接登錄.
2) 輸入 / + IP, 主機名 or 備注 搜索.
3) 輸入 P/p 顯示您有權限的主機.
4) 輸入 G/g 顯示您有權限的主機組.
5) 輸入 G/g + 組ID 顯示該組下主機.
6) 輸入 E/e 批量執行命令.
7) 輸入 U/u 批量上傳文件.
8) 輸入 D/d 批量下載文件.
9) 輸入 H/h 幫助.
0) 輸入 Q/q 退出.
Opt or ID>:
說明:發現直接就進入到跳板機的命令行界面,因為在/etc/profile.d 目錄當中存在一個跳板機腳本 zzjumpserver.sh
# 顯示有權限管理的主機信息
Opt or ID>: p
[ID ] 主機名 IP 端口 系統用戶 備注
[0 ] jumpclient-01 10.0.0.71 22 ['dev']
[1 ] dbmaster-01 10.0.0.71 22 ['dev']
# 直接輸入ID信息,進行登錄主機
Opt or ID>: 0
Last login: Tue Jun 27 03:08:36 2017 from 10.0.0.70
[dev@jumpserver-02 ~]$
# 顯示幫助信息界面
Opt or ID>: h
### 歡迎使用Jumpserver開源跳板機系統 ###
1) 輸入 ID 直接登錄.
2) 輸入 / + IP, 主機名 or 備注 搜索.
3) 輸入 P/p 顯示您有權限的主機.
4) 輸入 G/g 顯示您有權限的主機組.
5) 輸入 G/g + 組ID 顯示該組下主機.
6) 輸入 E/e 批量執行命令.
7) 輸入 U/u 批量上傳文件.
8) 輸入 D/d 批量下載文件.
9) 輸入 H/h 幫助.
0) 輸入 Q/q 退出.
# 利用搜索功能搜索主機信息
Opt or ID>: /jump
[ID ] 主機名 IP 端口 系統用戶 備注
[0 ] jumpclient-01 10.0.0.71 22 ['dev']