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

 

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

1、jumpserver的啓動python

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

2、按照Jumpserver部署過程結尾的帳號信息(admin/wangadmin@123)登錄Jumpserver的web界面linux

修改admin超級管理員的密碼web

只修改admin的密碼便可,SSH祕鑰不須要從新生成shell

而後註銷,使用admin重置後的新密碼登錄Jumpserver!vim

3、下面正式記錄下Jumpserver的用戶添加、推送及堡壘機方式登錄到目標機器的操做api

1. 添加用戶組(以下以添加ops用戶組爲例)安全

2. 添加用戶(以下以添加wangshibo用戶爲例;注意這個用戶添加成功後,也會在Jumpserver部署機上自動生成。那麼刪除這個用戶後,也會自動從部署機上刪除bash

而後到上面添加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!注意: 若是在其餘帳號下操做, 須要保證這個帳號對下載下來的wangshibo.pem.pub文件有操做權限, 好比設置爲777)
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>:

====================================================
這裏注意下: 若是直接使用郵件裏的web登陸密碼也是能夠的
# ssh -22 wangshibo@172.16.220.128
輸入郵件中的web登陸密碼, 好比上面郵件中的"fpolnS1slCgjPgzg"

登陸後的效果, 和上面用pem登陸的密碼一致

===========================還能夠作成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@12三、ops@12三、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堡壘機的設置已完成!

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

註銷admin用戶登錄的Jumpserver,使用wangshibo用戶登錄Jumpserver的web界面

點擊主機後面的"鏈接"按鈕,選擇一個系統用戶,好比work用戶,而後在webshell裏面就能登錄主機了!(其餘用戶的操做方法與這個是同樣的)

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

5、Jumpserver其餘功能介紹

1. 日誌審計(記錄了服務器的在線狀況、每一個用戶的登錄歷史、命令記錄、上傳下載記錄)。也能夠直接在"儀表盤"中查看全部機器的綜合信息!

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

2.1)上傳功能
首先使用wangshibo用戶登錄Jumpserver界面,將須要上傳的文件或者目錄拖拽上去,或者點擊下面的Drop files to upload"後在彈出的提示框中選擇須要上傳的文件或目錄,而後點擊"所有上傳",注意:上傳文件默認放在目標服務器的/tmp目錄下,由於tmp下臨時共享目錄,普通用戶都有操做權限。


而後就到test-vm0二、test-vm0三、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命令鎖定帳號登陸。http://www.javashuo.com/article/p-syrububf-ba.html
2)在ssh配置文件裏操做。http://www.javashuo.com/article/p-sigmhwvt-m.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服務器上重置一個密碼便可)

相關文章
相關標籤/搜索