6、跳板機Jumpserver】
Jumpserver是國內一款開源的輕便的跳板機系統,他們的官網:http://www.jumpserver.org/
使用這款軟件意在提高公司內部登錄生產環境服務器的便捷性,權限分配細化,以及后台管理的可視化,審計日志的WEB化(哪怕用戶vi一個文件,在里面做了什么樣的操作,都能審計)。本文檔參考http://bbs.jumpserver.org/read/285.html的使用說明,以及相關安裝文檔而修訂
環境要求
Jumpserver作為生產環境的主要入口,生產服務器的網絡只打通到這台跳板機
我使用centos 7.1版本安裝
8核8G內存40G硬盤
使用辦公內網服務器比如(10.40.150.90)
jumpserver v0.3.0-2
內網的dnsmasq作一個解析地址:jumpserver.venic.com 10.40.150.90
生產服務器的網絡只打到這台跳板機,IPsec VPN的ACL作規則permit放行,jumpserver不放開外網訪問進來權限。只允許內網訪問,如有外網登錄跳板的,建議其通地撥號VPN,先連辦公網,再登錄跳板。
基礎環境配置
修改系統內核句柄
修改ulimit打開文件的大小
/etc/security/limits.conf 尾部添加兩行
* soft nofile 65536
* hard nofile 65536
關閉自動寫入key的功能,在
/etc/ssh/ssh_config
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
重啟服務器
修改時鍾同10.40.42.10 controller步為其它內網服務器,比如controller
vi /etc/hosts
10.40.42.10 controller
vi /etc/chrony.conf
server controller iburst
service chronyd start
安裝數據庫
yum install mariadb mariadb-server -y
修改數據庫連接數
vi /etc/my.cnf
max_connections = 10000
vi /usr/lib/systemd/system/mariadb.service 或者vi /usr/lib/systemd/system/mysqld.service
在以下增加紅色字體部份
[Service]
Type=simple
User=mysql
Group=mysql
LimitNOFILE=65535
LimitNPROC=65535
重啟服務
systemctl daemon-reload
systemctl restart mariadb
初始化
mysql_secure_installation
create database jumpserver DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all on jumpserver .* to 'jumpserver '@'%' identified by 'jumpserver@123';
flush privileges;
上jumpserver.org官網下載他們的git.zip
在電腦上解壓使用SSHclient上傳至服務器10.40.150.90(剛新創建空虛擬機)
將文件件移至/opt目錄下
/opt/jumpserver-master/install目錄
直接執行python install.py
它會自動下載數據庫和依賴包和pip包
按提示操作
Successfully installed MySQL-python-1.2.5 ansible-1.9.4 argparse-1.4.0 backports-abc-0.4 certifi-2016.8.8 django-1.6 django-bootstrap-form-3.2 django-crontab-0.6.0 django-smtp-ssl-1.0 paramiko-1.16.0 passlib-1.6.5 psutil-3.3.0 pycrypto-2.4.1 pyinotify-0.9.6 pyte-0.5.2 singledispatch-3.4.0.3 tornado-4.3 wcwidth-0.1.7 xlrd-0.9.4 xlsxwriter-0.7.7
開始關閉防火牆和selinux
setenforce: SELinux is disabled
請輸入您服務器的IP地址,用戶瀏覽器可以訪問 [10.40.150.90]:
是否安裝新的MySQL服務器? (y/n) [y]: n
請輸入數據庫服務器IP [127.0.0.1]:
請輸入數據庫服務器端口 [3306]:
請輸入數據庫服務器用戶 [jumpserver]:
請輸入數據庫服務器密碼: jumpserver@123
請輸入使用的數據庫 [jumpserver]:
連接數據庫成功
請輸入SMTP地址:
請輸入SMTP端口 [25]:
請輸入賬戶:
請輸入密碼:
please run connect() first
是否跳過(y/n) [n]? : y
請登陸郵箱查收郵件, 然后確認是否繼續安裝
是否繼續? (y/n) [y]: y
請輸入管理員用戶名 [admin]: admin
請輸入管理員密碼: [5Lov@wife]: venic8888
請再次輸入管理員密碼: [5Lov@wife]: venic8888
Starting jumpserver service: [ 確定 ]
安裝成功,Web登錄請訪問http://ip:8000, 祝你使用愉快。
請訪問 https://github.com/jumpserver/jumpserver/wiki 查看文檔
[root@jumpserver install]#
[root@jumpserver install]# netstat -tunl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
tcp6 0 0 :::10050 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:49683 0.0.0.0:*
udp6 0 0 ::1:323 :::*
udp6 0 0 :::48824 :::*
如果啟動失敗,請返回上層目錄/opt/jumpserver-master,手動運行 python run_server.py 或 ./service.sh restart啟動
重啟
./service.sh restart
問題記錄一:
默認跳板機的上傳文件有限制大小為256M,可以修改dropzone.js
vi /opt/jumpserver-master/static/js/dropzone/dropzone.js ,296 行
maxFilesize: 5000,
還要安裝一個nginx代理,以用來改善它的80端口訪問和改善WEB大文件上傳,加上一個http://jumpserver.venic.com/doc
來鏈接使用說明
[root@jumpserver http]# vi uploadbigfile.conf
server {
listen 80;
client_max_body_size 5g;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
location ^~ /ws/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://127.0.0.1:8000/ws/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
location /file/upload/ {
proxy_pass http://127.0.0.1:8083;
}
location ^~ /doc/ {
proxy_pass http://127.0.0.1:8088/;
}
}
server {
listen 8088;
location / {
root /opt/jumpserver-master/docs/;
index index.html index.htm;
}
}
由於多了一個8083端口,還要啟動這個
cd /opt/jumpserver-master
python manage.py runserver 127.0.0.1:8083 &
*************************************************
xshell工具的上傳大小還沒解決,以下是剛才修改配置的位置,但測試最終提示不超過2G的單文件。
上傳文件有限制大小為256M,可以修改dropzone.js
vi /opt/jumpserver-master/static/js/dropzone/dropzone.js ,296 行
maxFilesize: 5000,
./service.sh restart
~
加一些開機自啟動
chkconfig mariadb on
vi /etc/rc.d/rc.local
/home/local/nginx1.9/sbin/nginx
/opt/jumpserver-master/service.sh restart
/bin/python /opt/jumpserver-master/manage.py runserver 127.0.0.1:8083 &
chmod +x /etc/rc.d/rc.local
問題記錄二:
Web console登錄機器,會產生過大的CPU,單開一個WEB console就消耗了44%的CPU,2核中占滿一個。而使用Xshell公鑰匙則沒有問題
如果要禁用Web Console的話,修改Web前端,但我沒有刪掉
進入/opt/jumpserver-master/templates/jasset/asset_cu_list.html -----修改130行 這個是修改普通用戶界面的
進入/opt/jumpserver-master/templates/jasset/asset_list.html 135行 --------這個是修改管理員界面的
比如我把它修改成跳轉方式到其它網站連接去
<a value="{{ asset.id }}" class="conn btn btn-xs btn-warning">連接</a>
<a href="http://jumpserver.venic.com/doc" class="conn btn btn-xs btn-warning">連接</a>
而我沒有取消,是因我調高CPU配置為8核后,發現開了8個窗口,最終還是最多消耗2個核,所以我沒有禁用web console
-------------------------------------------------------------------------------------------------------------
需求變更一:
修改web console的窗口寬一點
/opt/jumpserver-master/static/js/webterminal.js
改里面所有100值為160的值
修改webconsole 窗口,加個注釋,禁用用戶修改窗口大小
<!--
<div class="termChangBar">
<input type="number" min="100" value="100" placeholder="col" id="term-col"/>
<input type="number" min="35" value="35" placeholder="row" id="term-row"/>
<button id="col-row">修改窗口大小</button>
</div>
-->
修改彈窗的窗口體大小(非terminal),
進入/opt/jumpserver-master/templates/jasset/asset_cu_list.html -----修改237行和249行 這個是修改普通用戶界面的
進入/opt/jumpserver-master/templates/jasset/asset_list.html 248行和259 --------這個是修改管理員界面的
window.open(new_url+data, "_blank", 'width=1000, height=600');
------------------------------------------------------
需求變更二:
修改左側導航欄的訪問官網鏈接
進入/opt/jumpserver-master/templates/nav.html 52行和80行
<a href="http://jumpserver.venic.com/doc" target="_blank"><i class="fa fa-database"></i> <span class="nav-label">訪問官網</span></a>
上傳一個用word文檔寫的“操作指引”到如下鏈接,


這個word文檔轉成html,我只是使用另存為html自己保存成2個新文件(index.files和index.htm)


然后我在htm文件的<head></head>標簽中,添加了一個<style></style>如下標簽,目的是讓圖片自動伸縮和居中
<style>
html{
}
body{width:800px;
margin:auto;
}
img {max-width:800px;}
</style>
然后把這2個文件上傳至服務器的/opt/jumpserver-master/docs目錄下。所以才上面的nginx多一條跳轉的配置


然后我們還要修改首頁的前代碼,讓“連接使用說明”指到這個 http://jumpserver.venic.com/doc/
修改處在
/opt/jumpserver-master/templates/nav.html

測試跳轉后的顯示界面樣式如下,