Jumpserver Wiki
作者:廣宏偉
官網地址:http://www.jumpserver.org/
Github地址:https://github.com/ibuler/jumpserver/wiki
文檔統計者:火拳Ace
一、概述
Jumpserver 是一款由python編寫開源的跳板機(堡壘機)系統,實現了跳板機應有的功能
首頁
WebTerminal:
Web批量執行命令
錄像回放
跳轉和批量命令
命令統計
l 完全真開源,GPL授權
l Python編寫,容易再次開發
l 實現了跳板機基本功能,認證、授權、審計
l 集成了Ansible,批量命令等
l 支持WebTerminal
l Bootstrap編寫,界面美觀
l 自動收集硬件信息
l 錄像回放
l 命令搜索
l 實時監控
l 批量上傳下載
二、快速安裝
快速安裝
建議使用 centos 6 mini環境快速安裝,安裝過一些軟件后,其中可能會安裝一些不兼容的python庫,如pycrypto, django, 會影響快速安裝
環境
CentOS 6.x x86_64 mini
iptables stop
selinux disable
開始
1. 安裝依賴rpm
Yum源可以使用阿里的,本人測試阿里沒有問題,在Centos 6.6上。
(詳情:http://mirrors.aliyun.com/help/centos)
yum -y install epel-release
yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz
2. 下載jumpserver
cd /opt
git clone https://github.com/ibuler/jumpserver.git
3. 執行快速安裝腳本
cd jumpserver/install && pip install -r requirements.txt
python install.py
根據提示輸入相關信息,完成安裝,完成安裝后,請訪問web,繼續查看后續文檔
如果啟動失敗,請返回上層目錄,手動運行 ./service.sh restart啟動
*默認賬號密碼 admin 5Lov@wife
注意
1. 后端服務器需要有python環境才能使用推送用戶,批量命令等功能
2. 后端服務器如果開啟了selinux,請安裝 libselinux-python
三、名詞解釋
l 用戶 用戶是授權和登陸的主體,將來為每個員工建立一個賬戶,用來登錄跳板機, 將資產授權給該用戶,查看用戶登陸記錄命令歷史等
l 用戶組 多個用戶可以組合成用戶組,為了方便進行授權,可以將一個部門或幾個用戶 組建成用戶組,在授權中使用組授權,該組中的用戶擁有所有授權的主機權限
l 資產 資產通常是我們的服務器、網絡設備等,將資產授權給用戶,用戶則會有權限登 錄資產,執行命令等
l 管理賬戶 添加資產時需要添加一個管理賬戶,該賬戶是該資產上已有的有管理權限的用戶, 如root,或者有 NOPASSWD: ALL sudo權限的用戶,該管理賬戶用來向資產推送系統用戶, 為系統用戶添加sudo,獲取資產的一些硬件信息
l 資產組 同用戶組,是資產組成的集合,為了方便授權
l 機房 又稱IDC,不解釋
l Sudo 這里的sudo其實是Linux中的sudo命令別名,一個sudo別名包含多個命令, 系統用戶關聯sudo就代表該系統用戶有權限sudo執行這些命令
l 系統用戶 系統用戶是服務器上建立的一些真實存在的可以ssh登陸的用戶,如 dev, sa, dba等,系統用戶可使用jumpserver推送到服務器上,也可以利用自己公司 的工具進行推送,授權時將用戶、資產、系統用戶關聯起來則表明用戶有權限登陸該資產的 這個系統用戶 如:用戶 小明 以 dev 系統用戶登錄 172.16.1.1資產, 簡單理解就是 將某個資產上的某個系統用戶映射給這個用戶登錄
l 推送系統用戶 添加完系統用戶,需要推送,推送操作是使用ansible,把添加的系統 用戶和系統用戶管理的sudo,推送到資產上,具體體現是在資產上useradd該系統用戶, ,設置它的key,然后設置它的sudo,為了讓用戶可以登錄它
l 授權規則 授權規則是將 資產 系統用戶 和 用戶 關聯起來,用來完成授權。 這樣用戶就可以以某個系統用戶賬號登陸資產。大家對這好像不是很理解,其實也是對系統用戶, 用戶這里沒有搞清楚。我們可以把用戶當做虛擬的用戶,而系統用戶是真實再服務器上存在的用戶, 系統用戶可以使用jumpserver推送,也可以自己手動建立,但是推送的過程一定要有,哪怕是模擬 推送(不選擇秘鑰和密碼推送,如網絡設備),因為添加授權規則會檢查推送記錄。為了簡化理解, 我們暫時 以 用戶 資產 系統用戶 來理解,暫時不考慮組,添加這樣的規則意思是 授權 用戶 在這個資產上 以這個系統用戶來登陸, 系統用戶是一組具有通用性,具有sudo的用戶, 不同的用戶授權不同的 系統用戶,比如 dba可能有用數據庫的sudo權限
l 日志審計
o 在線 查看當前在線的用戶(非web在線),可以監控用戶的命令執行,強制結束用戶 登錄。
o 實時監控 實時監控用戶的操作
o 登錄歷史 查看以往用戶的登錄歷史,可以查看用戶登陸操作的命令,可以回放用戶 執行命令的錄像
o 命令記錄 查看用戶批量執行命令的歷史,包含執行命令的主機,執行的命令,執行的結果
o 上傳下載 查看用戶上傳下載文件的記錄
l 默認設置 默認設置里可以設置 默認管理賬號信息,包括賬號密碼密鑰,默認信息為了方便添加資產 而設計,添加資產時如果選擇使用默認管理賬號,則會使用這里設置的信息,端口是資產的ssh端口,添加 資產時,默認會使用該端口
四、快速開始
1. 添加用戶
用戶管理 – 查看用戶 – 添加用戶 填寫基本信息,完成用戶添加
用戶添加完成后,根據提示記住用戶賬號密碼,換個瀏覽器登錄下載key,
ssh登錄jumpserver測試
2. 添加資產
資產管理 – 查看資產 – 添加資產 填寫基本信息,完成資產添加
3. 添加sudo
授權管理 – Sudo – 添加別名 輸入別名名稱和命令,完成sudo添加
4. 添加系統用戶
授權管理 – 系統用戶 – 添加 輸入基本信息,完成系統用戶添加
5. 推送系統用戶
授權管理 – 推送 – 選擇需要推送的資產或資產組完成推送
推送只支持服務器,使用密鑰是指用戶從跳板機跳轉時使用key,反之使用密碼,
授權時會檢查推送記錄,如果沒有推送過則無法完成系統用戶在該資產上的授權。
如果資產時網絡設備,請不要選擇密碼和秘鑰,模擬一下推送,目的是為了生成
推送記錄。
6. 添加授權規則
授權管理 – 授權規則 – 添加規則 選擇剛才添加的用戶,資產,系統用戶完成授權
7. 測試登錄
用戶下載key 登錄跳板機,會自動運行connect.py,根據提示登錄服務器
用戶登陸web 查看授權的主機,點擊后面的鏈接,測試是否可以登錄服務器
8. 監控和結束會話
日志審計 – 在線 查看當前登錄的用戶登錄情況,點擊監控查看用戶執行的命令, 點擊阻斷,結束用戶的會話
9. 查看歷史記錄
日志審計 – 登錄歷史 查看登錄歷史,點擊統計查看命令歷史,點擊回放查看錄像
10. 執行命令
同7 測試命令的執行,命令記錄查看 批量執行命令的日志
11. 上傳下載
同7 測試文件的上傳下載,日志審計 – 上傳下載 查看上傳下載記錄
五、更新Log
一. 更新Log
— 登錄腳本 —
1.1 精確記錄執行命令
1.2 新增文件上傳下載
1.3 更改為輸入ID登陸主機
1.4 增加主機搜索
1.5 執行命令使用ansible執行
1.6 優化腳本
— web管理 —
1.7 增加web terminal
1.8 增加web端批量命令執行
1.9 增加錄像回放
1.10 資產增加硬件信息抓取
1.11 資產增加Excel導出和導入
1.12 資產增加批量更改
1.13 廢棄了LDAP支持,改為在主機上授權系統用戶(系統用戶為一些通用用戶,如dev,dba等)
1.14 授權改為以授權規則為中心
1.15 添加系統用戶推送
1.16 更改sudo管理
1.17 增加執行命令日志審計
1.18 增加文件上傳命令審計
1.19 增加web端歷史命令搜索
1.20 取消權限申請
1.21 取消部門管理員
1.22 取消資產別名
1.23 授權細顆?;?/span>
六、FAQs
查看日志
tail -f logs/jumpserver.log
里面包含了詳細的日志,包含了賬號和密碼,一切完成后,請將 jumpserver.conf中的log改為 warning等
推送系統用戶失敗
在系統用戶列表,點擊系統用戶名稱,查看系統用戶詳情,把鼠標放到失敗按鈕上,會看到失敗的原因,通常是因為 管理賬號添加的不對(見管理賬號名稱解釋),或服務器沒有安裝sudo(推送系統用戶時,會推送sudo設置)
郵件發送失敗
如果出現mail,smtp等錯誤通常都是由于發送郵件導致的,請嘗試不同提供商的郵件設置
service啟動失敗
請進入jumpserver目錄,手動運行
python manage.py runserver 0.0.0.0:80
python run_websocket.py
如果啟動失敗,可能是由于 80端口和3000端口已經被占用,或者數據庫賬號密碼不對,請檢查
監控,websocket, web命令執行失敗
他們會像運行的websocket服務發起請求, 可能是websocket沒有啟動,可能是Jumpserver.conf中 websocket的地址不正確,務必保證設置的地址用戶可以訪問到(映射或防火墻等), service.sh先關掉服務器,手動運行(見 3), 查看websocket的console輸出
Crypto,HAVE_DECL_MPZ_POWM_SEC等錯誤
很常見的錯誤,通常是由 pycrypto的版本問題,請卸載重新安裝
pip uninstall pycrypto
rm -rf /usr/lib64/python2.6/site-packages/Crypto/
pip install pycrypto
用戶,系統用戶,管理用戶對比
為了簡單的描述這個問題,我們舉例來說明, 用戶 小明(公司員工), 系統用戶 dev(后端服務器上存在的賬號), 授權時將 系統用戶dev在某臺服務器授權給小明時,這是小明登陸后面的服務器,其實是登陸了服務器上的dev用戶, 類似 [xiaoming@localhost ~]$ ssh dev@somehost 。管理賬號是為了幫助大家推送系統用戶用的,在jumpserver上新建系統用戶并推送,其實相當于 ssh 管理賬戶@somehost -e 'useradd 系統賬號', 當然,我們是用ansible完成這樣的操作
原創文章,作者:Ace,如若轉載,請注明出處:http://www.www58058.com/10724