Linux下堡壘機環境部署記錄(1)-Jumpserver安裝

 

Linux下堡壘機環境部署記錄(1)-Jumpserver安裝

Jumpserver是一款由python編寫, Django開發的開源跳板機/堡壘機系統, 助力互聯網企業高效 用戶、資產、權限、審計 管理。jumpserver實現了跳板機應有的功能,基於ssh協議來管理,客戶端無需安裝agent。
Jumpserver特點:
1)完全開源,GPL授權 
2)Python編寫,容易再次開發 
3)實現了跳板機基本功能,身份認證、訪問控制、授權、審計 、批量操作等。
4)集成了Ansible,批量命令等 
5)支持WebTerminal 
6)Bootstrap編寫,界面美觀 
7)自動收集硬件信息 
8)錄像回放 
9)命令搜索 
10)實時監控 
11)批量上傳下載

不多做介紹了,下面就Jumpserver安裝及功能使用做一記錄:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
安裝jumpserver 3.0版本,相對於jumpserver 2.0版本,在新的版本3.0中取消了LDAP授權,取而代之的是ssh進行推送;界面也有所變化,功能更完善,安裝更簡單。
 
1)關閉jumpserver部署機的iptables和selinux
[root@jumpserver ~]# /etc/init.d/iptables stop
[root@jumpserver ~]# setenforce 0
 
2)安裝依賴包
[root@jumpserver ~]# yum -y install epel-release
[root@jumpserver ~]# yum clean all && yum makecache
[root@jumpserver ~]# yum -y update
[root@jumpserver ~]# yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
 
3)下載jumpserver
下載地址:https://pan.baidu.com/s/1jI7hL4q
提取密碼:4c7s
 
[root@jumpserver ~]# tar -zvxf jumpserver-0.3.0.tar.gz
[root@jumpserver ~]# cd jumpserver-0.3.0-beta/install/
[root@jumpserver install]# ls
developer_doc.txt  initial_data.yaml  install.py  next.py  requirements.txt  zzjumpserver.sh
 
4)執行快速安裝腳本
[root@jumpserver install]# pip install -r requirements.txt
...........
...........
  Running setup.py install for ansible
  Running setup.py install for pyinotify
  Found existing installation: argparse 1.2.1
    Uninstalling argparse-1.2.1:
      Successfully uninstalled argparse-1.2.1
Successfully installed MarkupSafe-1.0 MySQL-python-1.2.5 PyYAML-3.12 ansible-1.9.4 argparse-1.4.0 backports-abc-0.5 backports.ssl-match-hostname-3.5.0.1 certifi-2017.4.17 django-1.6 django-bootstrap-form-3.2 django-crontab-0.6.0 ecdsa-0.13 jinja2-2.9.6 paramiko-1.16.0 passlib-1.6.5 psutil-3.3.0 pycrypto-2.6.1 pyinotify-0.9.6 singledispatch-3.4.0.3 tornado-4.3 xlrd-0.9.4 xlsxwriter-0.7.7
 
5)查看安裝的包
[root@jumpserver install]# pip freeze
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ansible==1.9.4
argparse==1.4.0
backports-abc==0.5
backports.ssl-match-hostname==3.5.0.1
cas==0.15
certifi==2017.4.17
Django==1.6
django-bootstrap-form==3.2
django-crontab==0.6.0
ecdsa==0.13
ethtool==0.6
iniparse==0.3.1
iotop==0.3.2
iwlib==1.0
Jinja2==2.9.6
MarkupSafe==1.0
matplotlib==0.99.1.1
MySQL-python==1.2.5
nose==0.10.4
numpy==1.4.1
ordereddict==1.2
paramiko==1.16.0
passlib==1.6.5
psutil==3.3.0
pycrypto==2.6.1
pycurl==7.19.0
pygpgme==0.1
pyinotify==0.9.6
python-dateutil==1.4.1
python-dmidecode==3.10.15
pytz===2010h
PyYAML==3.12
singledispatch==3.4.0.3
six==1.9.0
tornado==4.3
urlgrabber==3.9.1
xlrd==0.9.4
XlsxWriter==0.7.7
yum-metadata-parser==1.1.2
 
6)由於本機已經提前安裝了mysql    (mysql安裝參考:http://www.cnblogs.com/kevingrace/p/6109679.html)
需要提前在mysql數據庫中創建jumpserver庫,並授權連接。這樣在jumpserver安裝過程中就可以用到(如下)
mysql> create database jumpserver;
Query OK, 1 row affected (0.00 sec)
 
mysql> grant all on jumpserver.* to root@'182.48.115.%' identified by "123456";
Query OK, 0 rows affected (0.02 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
7)接着繼續執行install安裝
[root@jumpserver install]# python install.py
請務必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall
開始關閉防火牆和selinux
 
請輸入您服務器的IP地址,用戶瀏覽器可以訪問 [182.48.115.236]:              //jumpserver訪問地址         
是否安裝新的MySQL服務器? (y/n) [y]: n                 //由於本機已經提前安裝了mysql,所以這裏就不需要更新了
請輸入數據庫服務器IP [127.0.0.1]: 182.48.115.236      //輸入本機的ip地址,以連接mysql。最好提前測試下用這個賬號權限是否能正常連接
請輸入數據庫服務器端口 [3306]: 3306
請輸入數據庫服務器用戶 [root]: root                   //使用上面授權信息
請輸入數據庫服務器密碼: 123456
請輸入使用的數據庫 [jumpserver]: jumpserver
連接數據庫成功
請輸入SMTP地址: smtp.sina.com                   //接着進行發件郵箱設置(需要登陸到自己的郵箱下,將POP3/SMTP服務功能開啓)     
請輸入SMTP端口 [25]: 25                         //這個郵箱設置一定要正確通過,否則後續添加用戶時就不能正常發送郵件!
請輸入賬戶: [email protected]
請輸入密碼: 2hj12637JKDSJFKS
 
  請登陸郵箱查收郵件, 然後確認是否繼續安裝          //登陸郵箱,會收到一封"Jumpserver Mail Test!"的郵件,說明郵件測試通過
 
是否繼續? (y/n) [y]: y
開始寫入配置文件
開始安裝Jumpserver, 要求環境爲 CentOS 6.5 x86_64
開始更新jumpserver
..........
..........
請輸入管理員用戶名 [admin]: admin              //設置web管理員用戶名和管理員密碼
請輸入管理員密碼: [5Lov@wife]: admin
請再次輸入管理員密碼: [5Lov@wife]: admin
Starting jumpsever service:                                [確定]
 
安裝成功,請訪問web, 祝你使用愉快。
請訪問 https://github.com/ibuler/jumpserver 查看文檔
---------------------------------------------------------------------------------------------------------------
如果上面在執行install.py腳本中,出現下面報錯:
1)報錯1
Traceback (most recent call last):
  File "install.py", line 8, in <module>
    import MySQLdb
  File "/usr/lib64/python2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory
 
解決辦法:
查找這個libmysqlclient.so.18庫文件,由於本機之前部署了mysql,所以可以查到這個文件(如果沒有的話,可以安裝mysql來獲取這個文件)
[root@jumpserver install]# find / -name libmysqlclient.so.18
/usr/local/src/mysql-5.6.34/libmysql/libmysqlclient.so.18
/usr/local/src/mysql-5.6.34/libmysql/CMakeFiles/CMakeRelink.dir/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18
 
[root@jumpserver install]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
[root@jumpserver install]# vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib/
/usr/local/mysql/lib/
[root@jumpserver install]# ldconfig
 
然後再次執行上面的install.py腳本就OK了
 
2)報錯2
開始寫入配置文件
Traceback (most recent call last):
  File "/root/jumpserver-0.3.0-beta/install/next.py", line 19, in <module>
    from juser.user_api import db_add_user, get_object, User
  File "/root/jumpserver-0.3.0-beta/juser/user_api.py", line 3, in <module>
    from Crypto.PublicKey import RSA
  File "/usr/lib64/python2.6/site-packages/Crypto/PublicKey/RSA.py", line 75, in <module>
    from Crypto.Util.number import getRandomRange, bytes_to_long, long_to_bytes
  File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in <module>
    if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'
 
原因:是python的pycrypto模塊問題,需要卸載重裝:
[root@jumpserver install]# pip uninstall pycrypto
[root@jumpserver install]# easy_install pycrypto
---------------------------------------------------------------------------------------------------------------
 
安裝完成後,jumpserver程序會自動起來
[root@jumpserver install]# lsof -i:80
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  10533 root    3u  IPv4 460687      0t0  TCP *:http (LISTEN)
[root@jumpserver install]# ps -ef|grep jumpserver
root     10520     1  0 18:40 pts/1    00:00:00 sh /root/jumpserver-0.3.0-beta/service.sh start
root     10521     1  0 18:40 pts/1    00:00:00 sh /root/jumpserver-0.3.0-beta/service.sh start
root     10525 10521  0 18:40 pts/1    00:00:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10526 10520  0 18:40 pts/1    00:00:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; python /root/jumpserver-0.3.0-beta/manage.py runserver 0.0.0.0:80
root     10527 10525  1 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10528 10526  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/manage.py runserver 0.0.0.0:80
root     10533 10528  1 18:40 pts/1    00:00:01 /usr/bin/python /root/jumpserver-0.3.0-beta/manage.py runserver 0.0.0.0:80
root     10535 10527  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10536 10527  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10537 10527  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10538 10527  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10539 10527  0 18:40 pts/1    00:00:00 python /root/jumpserver-0.3.0-beta/run_websocket.py
root     10550  5272  0 18:41 pts/1    00:00:00 grep jumpserver
 
8)運行 crontab,定期處理失效連接,定期更新資產信息
 
執行下面的命令
[root@jumpserver ~]# python /root/jumpserver-0.3.0-beta/manage.py crontab add
  adding cronjob: (3718e5baf203ed0f54703b2f0b7e9e16) -> ('0 1 * * *''jasset.asset_api.asset_ansible_update_all')
  adding cronjob: (9956b75140f4453ab1dc4aeb62962a74) -> ('*/10 * * * *''jlog.log_api.kill_invalid_connection')
 
上面命令執行後,就會在crontab裏自動添加定期處理任務,如下crontab -l查看
[root@jumpserver ~]# crontab -l
0 1 * * * /usr/bin/python /root/jumpserver-0.3.0-beta/manage.py crontab run 3718e5baf203ed0f54703b2f0b7e9e16 # django-cronjobs for jumpserver
*/10 * * * * /usr/bin/python /root/jumpserver-0.3.0-beta/manage.py crontab run 9956b75140f4453ab1dc4aeb62962a74 # django-cronjobs for jumpserver

如果啓動失敗,請返回上層目錄,手動運行 ./service.sh start 啓動 。
訪問jumpserver(iptables若是開啓,需裏要開放80端口訪問),使用安裝過程中設置的用戶名和密碼登陸。

注意: 
在使用jumpserver過程中,有一步是系統用戶推送,要推送成功,client(後端服務器)要滿足以下條件: 
1)後端服務器需要有python、sudo環境才能使用推送用戶,批量命令等功能 
2)後端服務器如果開啓了selinux,請安裝libselinux-python

Jumpserver中的用戶,系統用戶,管理用戶對比

1
2
3
4
5
6
爲了簡單的描述這個問題,可以舉例來說明,:
1)用戶:小王(公司員工),
2)系統用戶:dev(後端服務器上存在的賬號),
授權時將系統用戶dev在某臺後段服務器授權給小王,這樣小王登陸後端服務器,其實是登陸了服務器上的dev用戶,類似執行"ssh dev@somehost"
3)管理賬號: 是爲了幫助大家推送系統用戶用的
在jumpserver上新建系統用戶並推送, 其實相當於執行了"ssh 管理賬戶@somehost -e 'useradd 系統賬號'", 這個是用ansible完成這樣的操作。

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章