Centos下堡壘機Jumpserver V3.0環境部署完整記錄(2)-配置篇

散盡浮華發表於2016-06-15

 

前面已經介紹了Jumpserver V3.0的安裝,基於這篇安裝文件,下面說下Jumpserver安裝後的的功能使用:

一、jumpserver的啟動

Jumpserver的啟動和重啟
[root@test-vm001 install]# /opt/jumpserver/service.sh start/restart

二、按照Jumpserver部署過程結尾的賬號資訊(admin/wangadmin@123)登陸Jumpserver的web介面

修改admin超級管理員的密碼

只修改admin的密碼即可,SSH祕鑰不需要重新生成

然後登出,使用admin重置後的新密碼登陸Jumpserver!

三、下面正式記錄下Jumpserver的使用者新增、推送及堡壘機方式登陸到目標機器的操作

1. 新增使用者組(如下以新增ops使用者組為例)

2. 新增使用者(如下以新增wangshibo使用者為例;注意這個使用者新增成功後,也會在Jumpserver部署機上自動生成。那麼刪除這個使用者後,也會自動從部署機上刪除

然後到上面新增wangshibo使用者時配置的郵箱裡會收到一封郵件,如下:

對於上面郵件裡的內容,要注意以下幾點:

  • web登入密碼:是指使用wangshibo使用者登陸Jumpserver的web介面的密碼,這個密碼在王士博使用者登陸到Jumpserver介面後可以修改。
  • 金鑰下載地址:是指下載wangshibo使用者登陸Jumpserver部署機的密碼的地址,可以通過開啟郵件裡的這個地址進行下載;也可以在wangshibo使用者新增成功後,點選Jumpserver介面裡"檢視使用者"->"wangshibo"後面的"下載"按鈕。
  • ssh金鑰檔案密碼:是指在使用wangshibo使用者的key(即第2步中下載的祕鑰)登陸Jumpserver部署機時要輸入的密碼。

-------------------------------------------------------------------------------------------------------------------------------
特別注意一點:
在Jumpserver裡新增的使用者的祕鑰下載後預設是pem格式的證照檔案。Xshell和SecureCRT客戶端可以直接使用pem格式的證照檔案進行登陸(但是注意低版本的SecureCRT還是需要將這個轉化為.pub格式後才能登陸)
做法如下:
1)將下載的這個wangshibo.pem祕鑰檔案放到任意一臺linux主機上進行轉化為.pub格式的公鑰檔案的操作(root賬號下操作,並且要保證wangshibo.pem檔案上傳到linux機器上後的許可權是600!)
localhost:Downloads root# ssh-keygen -e -f wangshibo.pem >> wangshibo.pem.pub
Enter passphrase: //注意這裡輸入的密碼就是上面郵件中的"您的ssh金鑰檔案密碼:"
localhost:Downloads root# ls -l wangshibo.*
-rw-------@ 1 kevin staff 1766 Sep 24 20:36 wangshibo.pem
-rw-r--r-- 1 root staff 506 Sep 24 20:39 wangshibo.pem.pub

2)然後將轉化後的wangshibo.pem.pub公鑰檔案拷貝給使用者,使用SecureCRT客戶端登入Jumpserver部署機。(如下圖,PublicKey的方式要推放到最前面)

 

如下,需要輸入的密碼即是上面郵件中收到的ssh金鑰檔案密碼(即 9f4ZCpvEiCy3wbS0)

---------------------或者在MAC或linux終端裡直接ssh使用.pem祕鑰檔案登陸------------------------
找到wangshibo.pem的下載路徑,使用ssh登陸
localhost:~ root# cd /Users/kevin/Downloads/
localhost:Downloads root# ls -l wangshibo.pem 
-rw-r--r--@ 1 kevin  staff  1766 Sep 29 16:06 wangshibo.pem
localhost:Downloads root# ssh -i /Users/kevin/Downloads/wangshibo.pem -p22 wangshibo@172.16.220.128        //需要在root賬號下操作。普通使用者要在sudo下操作,(sudo可以限制到只能ssh操作,比如:wangshibo     ALL=(ALL)    NOPASSWD: /usr/bin/ssh)
Enter passphrase for key '/Users/kevin/Downloads/wangshibo.pem':               //輸入上面郵件中收到的ssh金鑰檔案密碼(即 9f4ZCpvEiCy3wbS0)
Last login: Fri Sep 29 17:08:19 2017 from 10.45.225.9

Welcome to aliyun Elastic Compute Service!


###    歡迎使用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>:

還可以做成expect指令碼方式登陸:

將下載的使用者金鑰檔案(如wangshibo.pem)放到一臺linux伺服器的一個使用者家目錄(比如/home/wangshibo)下,編寫expect指令碼(安裝參考:http://www.cnblogs.com/kevingrace/p/5900303.html)
操作記錄如下(wangshibo使用者在這臺linux伺服器上有sudo ssh的許可權):
[wangshibo@sh-sre-man01 ~]$ pwd
/home/wangshibo

[wangshibo@sh-sre-man01 ~]$ cat shanghai-jump 
#!/bin/expect  
set timeout 30  
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
expect "'/home/wangshibo/wangshibo.pem':"  
send "9f4ZCpvEiCy3wbS0\r"  
interact 

[wangshibo@sh-sre-man01 ~]$ ./shanghai-jump 
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
Enter passphrase for key '/home/wangshibo/wangshibo.pem': 
Last login: Mon Oct 16 12:43:26 2017 from 111.110.111.141

Welcome to aliyun Elastic Compute Service!


###    歡迎使用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>: p
[ID ] 主機名    IP               埠  系統使用者  備註
[0  ] sh-sre-man01    111.110.111.141   2200   ['ops', 'devs', 'work']  
[1  ] sh-api-dmk01    111.110.111.140   22     ['ops', 'devs', 'work']  
[2  ] sh-api-dmk02    111.110.111.139   22     ['ops', 'devs', 'work']  
[3  ] sh-inf-deploy01 111.110.111.146   22     ['ops', 'devs', 'work']  
[4  ] sh-sre-monitor01 111.110.111.148   22     ['ops', 'devs', 'work']  
[5  ] sh-db-dmk01     111.110.111.142   22     ['ops', 'devs', 'work']  
[6  ] sh-db-dmk02     111.110.111.143   22     ['ops', 'devs', 'work']  
[7  ] sh-srv-dmk02    111.110.111.144   22     ['ops', 'devs', 'work']  

Opt or ID>: 2
[ID] 系統使用者
[0 ] ops
[1 ] devs
[2 ] work

授權系統使用者超過1個,請輸入ID, q退出
ID>: 0
Last login: Sat Oct 14 23:30:26 2017 from 122.161.155.17

Welcome to aliyun Elastic Compute Service!

[ops@sh-api-dmk02 ~]$

-------------------------------------------------------------------------------------------------------------------------------

3. 新增資產組、機房

4. 現在開始新增機器資產(也就是新增要從跳板機登陸管理的目標機器)

注意一點:可以一臺臺新增,也可以選擇使用批量新增,有批量新增的模版。這裡我暫且使用單臺新增作為演示。另外:管理使用者是指目標客戶機上真實存在使用者,這個最好填目標主機的root使用者(以及目標主機的root的真實密碼),如果填寫真實存在的普通使用者,則它必須擁有NOPASSWD: ALL sudo許可權。管理使用者的作用是用於推送系統使用者(也就是說這個管理使用者最好使用root,如果是非root賬號,那麼它必須擁有NOPASSWD: ALL sudo許可權!)

如下新增三臺主機資產

通過"編輯"主機,將其劃到相應的機房裡,完善主機資訊

5. 下面開始許可權管理的設定
先新增Sudo,這裡的sudo其實是Linux中的sudo命令別名,一個sudo別名包含多個命令, 系統使用者關聯sudo就代表該系統使用者有許可權sudo執行這些命令。當然可以建立多Sudo,劃分給不同許可權的使用者。如下,建立兩個Sudo

============下面是使用過的一個sudo授權==============

如上,設定sudo的別名,設定後,系統使用者需要繫結這些sudo的別名,然後進行推送(後續追加sudo命令,就再次進行"重新推送")
推送成功後,檢視目標機器的/etc/sudoers檔案,可以看到設定的sudo資訊

===============================================================

接著新增系統使用者。系統使用者是伺服器上建立的一些真實存在的可以ssh登陸的使用者,如work,ops,dev等,系統使用者可使用資產的管理使用者將其推送到新增的目標資產伺服器上。這裡我新增了三個系統使用者,分別為work、ops、dev(新增時的使用者密碼隨便定義,比如work@123、ops@123、dev@123)。這些系統使用者在Jumpserver介面裡新增成功後,會自動推送到新增的目標主機上。
特別需要注意一點:這裡的系統使用者不能使用root!必須是非root使用者!然後通過定義的各種sudo進行不同的相關操作(比如允許ops切換到root賬號下)

========建立上面系統使用者的時候可能報錯========

報錯:'module' object has no attribute 'getStrongPrime'

解決辦法:
註釋/usr/lib64/python2.6/site-packages/Crypto/Util/number.py檔案中的下面兩行,然後重啟jumpserver即可
    #if _fastmath is not None:
    #    return _fastmath.getStrongPrime(long(N), long(e), false_positive_prob, randfunc)

系統使用者建立好之後,一定要記得點選"推送",將這些系統使用者及其密碼、sudo的資訊推送到新增的目標伺服器上。當然,後續要是在jumpserver的介面裡刪除這個系統使用者,那麼目標機器上也會自動刪除這個系統使用者!如下,將這三個系統使用者都推送到目標機器上。如果推送成功,則會出現一個類似"系統使用者 work 推送成功[ test-vm03,test-vm02,test-vm04 ]"的提示。

可以在系統使用者列表,點選系統使用者名稱稱,進去檢視系統使用者的推送情況。比如檢視work系統使用者的推送情況

---------------------------------------------------------------------------------------------------
新增主機的推送:
系統使用者列表->點選系統使用者名稱稱(比如work)->work-未推送主機->點選新增主機,進行推送操作
---------------------------------------------------------------------------------------------------

推送成功後還可以直接到目標機器上檢視推送效果。比如到test-vm02機器上檢視:

[root@test-vm02 ~]# cat /etc/passwd
.......
work:x:1000:1000::/home/work:/bin/bash
ops:x:1001:1001::/home/ops:/bin/bash
dev:x:1002:1002::/home/dev:/bin/bash

[root@test-vm02 ~]# cat /etc/sudoers
......
Cmnd_Alias SUPERADMIN = /bin/*, /sbin/*
work ALL = (root)  NOPASSWD: SUPERADMIN
ops ALL = (root)  NOPASSWD: SUPERADMIN
Cmnd_Alias DEVADMIN = /usr/bin/vim, /usr/bin/tar, /usr/bin/gzip, /usr/bin/rsync, /usr/bin/tail
dev ALL = (root)  NOPASSWD: DEVADMIN

如上,說明test-vm02機器已經被推送成功了。其他機器的檢查方法跟上面一樣。

-----------------------------------------------------------------------------------------------------------------------

這裡說下推送失敗的案例1:
在系統使用者列表,點選系統使用者名稱稱,檢視系統使用者推送詳情,把滑鼠放到失敗按鈕上,會看到失敗的原因。

可以登陸其中的一臺伺服器比如test-vm02上,檢視/var/log/message日誌資訊,再結合上面截圖中的報錯,原因是執行/etc/sudoers檔案時,發現沒有work使用者!也就是說work使用者沒有useradd建立成功!那麼就嘗試在test-vm02機器上手動建立work賬號,如下:

果然是useradd建立系統使用者失敗導致的!解決辦法:

[root@test-vm02 ~]# rm -f /etc/gshadow.lock

這樣就OK了!可以再次手動useradd建立work賬號試試,建立成功後再userdel刪除它!
最後別忘記在/etc/sudoers檔案裡刪除底部新增的work賬號的sudo設定資訊,因為這是推送失敗的那次新增的sudo資訊,刪除後重新推送下,否則配置資訊就會重疊!
其他伺服器的處理方法跟這個一樣!

------------------------------------------------------------------------------------------------------------------------

再說下推送失敗的案例2

解決方案:http://www.cnblogs.com/kevingrace/p/5893121.html
修改後,可以重啟jempserver(即/opt/jumpserver/server.sh restart)

------------------------------------------------------------------------------------------------------------------------

推送失敗的案例3

推送使用者的時候,如下報錯:
Aborting,target uses selinux but python bindings(libselinux-python)aren‘t installed

解決辦法:
yum install -y libselinux-python

=======================================================================
推送系統使用者失敗的案例4:SSH Error: Permission denied (publickey,password).....
原因可能是:1)新增資產的時候,填寫的"管理使用者名稱"和"密碼"有誤所致的! 2)jumpserver部署機器在ssh登陸目標機器時,報錯:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!。即在jumpserver部署機的/root/.ssh/known_hosts檔案裡刪除目標機器的連線資訊就行了。

------------------------------------------------------------------------------------------------------------------------

最後進行"授權規則"的建立

到此,Jumpserver堡壘機的設定已完成!

四、下面正式記錄下Jumpserver堡壘機的使用

登出admin使用者登陸的Jumpserver,使用wangshibo使用者登陸Jumpserver的web介面

點選主機後面的"連線"按鈕,選擇一個系統使用者,比如work使用者,然後在webshell裡面就能登陸主機了!(其他使用者的操作方法與這個是一樣的)

也可以直接使用下載的wangshibo使用者的祕鑰直接登陸到堡壘機上進行操作(登陸方式在上面已經介紹了,使用SecureCRT客戶端登入)

五、Jumpserver其他功能介紹

1. 日誌審計(記錄了伺服器的線上情況、每個使用者的登陸歷史、命令記錄、上傳下載記錄)。也可以直接在"儀表盤"中檢視所有機器的綜合資訊!

2. 上傳下載功能(前提是Jumpserver部署機上要有rz、sz命令,這個在部署環境之前就已經yum lrzsz安裝了。上傳下載功能都只能在非admin管理員賬號下操作)

2.1)上傳功能
首先使用wangshibo使用者登陸Jumpserver介面,將需要上傳的檔案或者目錄拖拽上去,或者點選下面的Drop files to upload"後在彈出的提示框中選擇需要上傳的檔案或目錄,然後點選"全部上傳",注意:上傳檔案預設放在目標伺服器的/tmp目錄下,因為tmp下臨時共享目錄,普通使用者都有操作許可權。


然後就到test-vm02、test-vm03、test-vm04伺服器上檢視是否已成功上傳了檔案(如下以test-vm02為例)

也可以在命令列進行上傳操作,也是上傳到對應伺服器的/tmp目錄下

2.2)下載功能
注意:下載檔案的路徑一定要是真實存在目標主機的/tmp臨時共享目錄下的,其他目錄路徑無效!並且路徑要精確到檔案!!!(下載後的檔案預設自動打包)如下:

可以在命令列進行下載操作,下載路徑要是對應伺服器的/tmp目錄下的檔案。下載後以打包形式存在。

3. 批量執行命令:

除此之外,也可以使用普通使用者(比如wangshibo)登陸jumpserver介面,在介面裡批量執行:

4. "設定功能",如下設定後,新增"資產"的時候,在"管理賬號"這一項就可以選擇"使用預設"了。

--------------------------------------------------------------------------------------------------------------------------
最後說下在Jumpserver裡面批量新增主機資產的操作(先匯出模版,然後在模版裡填好主機資訊,最後再匯入模版檔案)。如下匯出的模版更名為jumpserver.xlsx:

注意:新增主機(或批量新增主機)後,推送系統使用者,有時會失敗,比如報錯SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password或認證失敗。 這時可以嘗試刪除主機,重新新增主機,然後重新推送系統使用者還有,用於推送系統使用者的管理使用者(如上,選用root作為管理使用者)的密碼一定要正確!(一定要是真實存在於主機上的使用者的真實密碼!,否則推送就會失敗)

--------------------------------------------------------------------------------------------
發現jumpserver部署機在堡壘機環境搞好後,不能正常su切換到其他使用者下,報錯如下:
"沒有該使用者,或許你是以root執行的 No that user."

解決辦法註釋掉connect.py檔案的下面兩行判斷設定即可(註釋後不需要重啟jumpserver服務)!
[root@test-vm01 jumpserver]# cd
[root@test-vm01 ~]# cd /opt/jumpserver
[root@test-vm01 jumpserver]# vim connect.py
#if not login_user: # 判斷使用者是否存在
# color_print('沒有該使用者,或許你是以root執行的 No that user.', exits=True)

然後再嘗試su切換使用者就可以了。

總結:
jumpserver堡壘機在剛部署好的時候,本機使用su切換到其他使用者下,預設是不行的,需要按照上面的方式解決後才能su切換。
堡壘機本機上su切換到其他使用者,都是會進入到堡壘機使用介面的(如上),但是隻有推送後的系統使用者才能成功跳轉到其他機器上。

--------------------------------------------------------------------------------------------------
jumpserver裡面的使用者(如上的wangshibo)除了可以用郵件裡的祕鑰在遠端登陸以外,還可以直接使用密碼在遠端ssh登陸(只是在jumpserver 介面裡建立使用者時,預設沒有設定密碼,可以在jumpserver部署機上手動給使用者設定密碼,而後就可以在遠端使用使用者+密碼登陸堡壘機了)。


---------------------------------------------------------------------------------------------

使用wangshibo使用者登入Jumpserver介面,在Web terminal裡登入work、ops、dev系統使用者失敗!     
在jumpserver部署機上使用"tail -f /var/log/message" 或者"salt-minion -l debug"命令檢視,
發現有錯誤如下:
.......
[ERROR   ] DNS lookup of 'salt' failed.
[ERROR   ] Master hostname: 'salt' not found. Retrying in 30 seconds 

原因是:salt master端的minion_id不對導致的

解決辦法:
重啟jumpserver服務即可!(在jumpserver部署機上檢視是否有/etc/salt/minion_id檔案,如果有就果斷刪除,然後再重啟jumpserver服務)

[root@test-vm001 ~]# rm -f /etc/salt/minion_id 
[root@test-vm001 ~]# /app/jumpserver/service.sh restart
Stopping jumpsever service:                                [  確定  ]
Starting jumpsever service:                                [  確定  ]

然後再在Web terminal裡登入work、ops、dev系統使用者就ok了。

---------------------------------------------------------------------------------------------
使用祕鑰和祕鑰檔案密碼登入Jumpserver失敗

1)xshell上使用祕鑰登入,輸入祕鑰密碼後,報錯:所選的使用者密碼未在遠端主機上註冊,請再試一次。
解決辦法:確保jumpserver介面裡建立好使用者後,在jumpserver伺服器的/etc/passwd和/home目錄下有該使用者資訊。

2)報錯如下:
[root@jumpserver01 home]# tail -f /var/log/secure
......
Mar 21 14:42:19 jumpserver01 sshd[141831]: Authentication refused: bad ownership or modes for directory /home/yangkai

解決辦法:/home/yangkai/.ssh的許可權要是700,/home/yangkai/.ssh/authorized_keys檔案許可權要是600
[root@jumpserver01 ~]# ll -d /home/yangkai
drwx------ 4 yangkai yangkai 4096 3月  21 09:43 /home/yangkai

[root@jumpserver01 ~]# ll -d /home/yangkai/.ssh
drwx------ 2 yangkai yangkai 4096 3月  21 09:43 /home/yangkai/.ssh

[root@jumpserver01 ~]# ll /home/yangkai/.ssh/authorized_keys 
-rw-------- 1 yangkai yangkai 416 3月  21 11:41 /home/yangkai/.ssh/authorized_keys

============================================================================
需要注意一點:
部署了jumpserver堡壘機環境的伺服器,ssh直接登入的話,只能使用root賬號。非root賬號ssh登入的話,登入後直接進入的是jumpserver歡迎介面,而不能直接進入系統。

jumpserver堡壘機只有在首次推送的時候,需要用到系統賬號,如上面的root、work、ops、dev等,在推送操作完成後,鑑於安全登入考慮,可以禁止這些系統使用者直接登入系統,只允許通過堡壘機唯一入口進入。
禁止使用者直接ssh登入的方法:
1)使用useradd或passwd命令鎖定賬號登入。https://www.cnblogs.com/kevingrace/p/6109818.html
2)在ssh配置檔案裡操作。https://www.cnblogs.com/kevingrace/p/6110842.html

=======生產系統伺服器登入安全======

1)堡壘機登入
- 各使用者登入:賬號+key證照+證照檔案密碼(建立時隨機產生16位密碼)。
- root登入:運維管理員所用,密碼每三個月重置一次,16位密碼。

2)伺服器登入
- 登入入口唯一:只能通過堡壘機這唯一的入口進行跳轉登入,禁止通過系統賬號登入。
- 賬號鎖定:root、ops、app、dev、omd賬號被鎖定(usermod命令),禁止直接通過這些賬號遠端登入伺服器(鎖定後,個別業務場景下做的ssh互信關係不受影響)。
  注意:通過usermod或passwd鎖定賬號,不會對做了ssh互信的機器造成登入影響;但要是在sshd_config裡做了DenyUsers的限制,則就徹底禁止了ssh動作,互信也受影響。
- 網路限制:伺服器均為內網ip,根據業務做網路隔離,不通業務伺服器之間的ip禁止通訊。

========修改jumpserver堡壘機ssh私鑰檔案密碼========

在使用開源堡壘機jumpserver時,預設生成的ssh金鑰檔案是帶密碼的,每次更換電腦配置Xshell或者secureCRT時,都很麻煩,容易忘記。下面介紹下修改堡壘機ssh金鑰檔案密碼的方法:  比如在jumpserver堡壘機裡建立了kevin賬號, 在建立kevin賬號時填寫的郵箱會收到一封郵件, 如下:

首先確認你拿到的ssh金鑰檔案(kevin.pem)時, 私鑰開頭是如下這樣的:

-----BEGIN RSA PRIVATE KEY-----

然後根據下面的操作進行密碼修改:

root@shibo:/home/kevin/下載# ssh-keygen -f kevin.pem -p
Enter old passphrase:                                         #輸入郵件中ssh祕鑰檔案的密碼
Enter new passphrase (empty for no passphrase):               #輸入新設定的ssh祕鑰檔案密碼, 也可以設定為空密碼
Enter same passphrase again:                                  # 確認新設定的ssh祕鑰檔案密碼
Your identification has been saved with the new passphrase.

如上設定好ssh祕鑰檔案密碼後, 在使用kevin賬號登入jumpserver堡壘機時, 就可以使用上面設定的ssh祕鑰檔案新密碼登入了!

到此,關於Jumpserver堡壘機的設定和使用已經暫時介紹完畢。(注意:除了使用祕鑰及祕鑰檔案密碼登入jumpserver,還可以直接使用密碼登入,給jumpserver登入使用者在jumpserver伺服器上重置一個密碼即可)

相關文章