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完成這樣的操作。 |