目錄
前言
Jumpserver是一款由python編寫, Django開發的開源跳板機/堡壘機系統, 助力互聯網企業高效 用戶、資產、權限、審計 管理。jumpserver實現了跳板機應有的功能,基於ssh協議來管理,客戶端無需安裝agent。
Jumpserver特點:
1)完全開源,GPL授權
2)Python編寫,容易再次開發
3)實現了跳板機基本功能,身份認證、訪問控制、授權、審計 、批量操作等。
4)集成了Ansible,批量命令等
5)支持WebTerminal
6)Bootstrap編寫,界面美觀
7)自動收集硬件信息
8)錄像回放
9)命令搜索
10)實時監控
11)批量上傳下載
環境準備
準備python3和python虛擬環境
- 安裝依賴
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
- 編譯安裝
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure –prefix=/usr/local/python3.6 && make && make install
- 建立python虛擬環境
$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
看到下面的提示符代表成功,以後運行 Jumpserver 都要先運行以上 source 命令,以下所有命令均在該虛擬環境中運行: (py3) [root@localhost py3]
安裝jumpserver1.0.0
下載或clone項目
項目提交較多 git clone 時較大,你可以選擇去 Github 項目頁面直接下載zip包
$ cd /opt/
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
安裝依賴RPM包
$ cd /opt/jumpserver/requirements
$ yum -y install $(cat rpm_requirements.txt) # 如果沒有任何報錯請繼續
安裝python庫依賴
$ pip install -r requirements.txt
# 不要指定-i參數,因爲鏡像上可能沒有最新的包,如果沒有任何報錯請繼續
安裝redis
jumpserver使用redis做cache和celery broke
$ yum -y install redis
$ service redis start
安裝mysql
$ yum -y install mariadb mariadb-devel mariadb-server
# centos7下安裝的是mariadb
$ service mariadb start
創建數據庫jumpserver並授權
修改root登錄密碼
mysql -uroot -p
use mysql;
UPDATE user SET password=password('123') WHERE user='root';
Flush privileges;
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123';
修改jumpserver配置文件
$ cd /opt/jumpserver
$ cp config_example.py config.py
$ vi config.py # 我們計劃修改 DevelopmentConfig中的配置,因爲默認jumpserver是使用該配置,它繼承自Config
class DevelopmentConfig(Config):
DEBUG = True
DB_ENGINE = 'mysql'
DB_HOST = '127.0.0.1'
DB_PORT = 3306
DB_USER = 'jumpserver'
DB_PASSWORD = 'somepassword'
DB_NAME = 'jumpserver'
config = DevelopmentConfig() # 確保使用的是剛纔設置的配置文件
生成數據庫表結構和初始化數據
$ cd /opt/jumpserver/utils
$ bash make_migrations.sh
運行jumpserver
$ cd /opt/jumpserver
$ ./run_server.py all
後臺運行: nohup ./run_server.py all &
運行不報錯,請瀏覽器訪問 http://192.168.244.144:8080/ (這裏只是 Jumpserver, 沒有 Web Terminal,所以訪問 Web Terminal 會報錯)
賬號: admin 密碼: admin
安裝SSH server和WebSocket server:coco
下載或clone項目
新開一個終端,連接測試機,別忘了 source /opt/py3/bin/activate
$ cd /opt
$ git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
安裝依賴
$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt
查看配置文件並運行
$ cd /opt/coco
$ cp conf_example.py conf.py
$ python run_server.py
這時需要去 Jumpserver 管理後臺-會話管理-終端管理(http://192.168.139.128:8080/terminal/terminal/)接受 Coco 的註冊
連接測試
Ssh -p2222 [email protected]
密碼:admin
Windows下:ssh [email protected] 2222
密碼:admin
安裝Web terminal前端:luna
Luna已改爲純前端,需要nginx來運行訪問
訪問(https://github.com/jumpserver/luna/releases)下載對應版本的 release 包,直接解壓,不需要編譯
$ pwd
/opt/
$ tar xvf luna.tar.gz
$ ls /opt/luna
安裝windows支持組件
因爲手動安裝 guacamole 組件比較複雜,這裏提供打包好的 docker 使用, 啓動 guacamole
Docker安裝
$ yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine
$ yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker官方源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum makecache fast
$ yum install docker-ce
# 國內部分用戶可能無法連接docker官網提供的源,這裏提供阿里雲的鏡像節點供測試使用
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
$ yum makecache fast
$ yum -y install docker-ce
$ systemctl start docker
$ systemctl status docker
docker run --name jms_guacamole -d \
-p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
-e JUMPSERVER_KEY_DIR=/config/guacamole/key \
-e JUMPSERVER_SERVER=http://<填寫本機的IP地址>:8080 \
registry.jumpserver.org/public/guacamole:1.0.0
這裏所需要注意的是 guacamole 暴露出來的端口是 8081,若與主機上其他端口衝突請自定義一下。
再次強調:修改 JUMPSERVER_SERVER 環境變量的配置,填上 Jumpserver 的內網地址, 這時 去 Jumpserver-會話管理-終端管理 接受[Gua]開頭的一個註冊
配置nginx整合各組件
安裝nginx根據喜好選擇方式和版本
yum install -y nginx
修改配置文件
/etc/nginx/nginx.conf
server {
listen 80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/;
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/;
}
location /static/ {
root /opt/jumpserver/data/;
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /guacamole/ {
proxy_pass http://localhost:8081/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log off;
}
location / {
proxy_pass http://localhost:8080;
}
}
運行nginx
nginx -t
service nginx start
訪問
http://ip