搭建jumperserver堡壘機管理萬台服務器-1
1 Jumpserver堡壘機概述-部署Jumpserver運行環境
2 安裝Coco組件
3 安裝Web-Terminal前端-Luna組件-配置Nginx整合各組件
4 jumpserver平台系統初始化
5 實戰:使用jumpserver 管理數萬台服務器
部署准備:
序號 | 服務器名 | IP | 角色 |
1 | k5 | 10.27.17.62 | jumbserver 、redis、mariadb、koko、Web Terminal |
2 |
.1.1 跳板機概述
跳板機就是一台服務器,開發或運維人員在維護過程中首先要統一登錄到這台服務器,然后再登錄到目標設備進行維護和操作;
跳板機缺點:沒有實現對運維人員操作行為的控制和審計,使用跳板機的過程中還是會出現誤操作、違規操作導致的事故,一旦出現操作事故很難快速定位到原因和責任人;
堡壘機概述:
堡壘機,即在一個特定的網絡環境下,為了保障網絡和數據不受來自外部和內部用戶的入侵和破壞,而運用各種技術手段實時收集和監控網絡環境中每一個組成部分的系統狀態、安全事件、網絡活動,以便集中報警、及時處理及審計定責。
堡壘機比跳板機多了實時收集、監控網絡環境、集中報警等功能。
Jumpserver概述:
Jumpserver是一款使用Python, Django開發的開源跳板機系統, 為互聯網企業提供了認證,授權,審計,自動化運維等功能。
jumpserver堡壘機組件說明:
1、Jumpserver:
現指 Jumpserver 管理后台,是核心組件(Core), 使用 Django Class Based View 風格開發,支持 Restful API。
2、Coco:
實現了 SSH Server 和 Web Terminal Server 的組件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 開發。
3、Luna:
現在是 Web Terminal 前端,計划前端頁面都由該項目提供,Jumpserver 只提供 API,不再負責后台渲染html等。
1.2 部署Jumpserver運行環境
安裝說明:
服務器名:k5 ip:10.27.17.42 內容: jumpserver 服務端
服務器名:hero3 ip:10.27.17.43 內容: jumpserver的客戶端,資源,被管理服務器
服務端准備:
上傳依賴的軟件到到Linux系統上 "rz " 上傳到、/opt上
關閉防火牆並清空規則
[root@k5 opt]# systemctl stop firewalld
[root@k5 opt]# systemctl disable firewalld
[root@k5 opt]# iptables -F
關閉 SELINUX
[root@k5 opt]# vim /etc/selinux/config
修改字符集
[root@k5 opt]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@k5 opt]# export LC_ALL=zh_CN.UTF-8
[root@k5 opt]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
1.3安裝Python 3和python 的虛擬環境
(1)、安裝依賴包
[root@k5 ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
(2)、編譯安裝python3.6.1
[root@k5 ~]# cd /opt
[root@k5 ~]# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
[root@k5 ~]# ./configure && make -j 4 && make install
(3)、建立 Python 虛擬環境
因為 CentOS 6/7 自帶的是 Python2,而 Yum 等工具依賴原來的 Python2,為了不擾亂原來的環境我們來使用 Python 虛擬環境
[root@k5 ~]# cd /opt
[root@k5 ~]# python3 -m venv py3
[root@k5 ~]# source /opt/py3/bin/activate
(py3) [root@k5 ~]# #切換成功后,前面有一個py3 標識
# 看到下面的提示符代表成功,以后運行 Jumpserver 都要先運行以上 source 命令,以下所有命令均在該虛擬環境中運行
1.4 安裝 Jumpserver 1.0.0
1、下載或 Clone 項目
方法1:項目提交較多 git clone 時較大,你可以選擇去 Github 項目頁面直接下載zip包。
(py3) [root@k5 ~]# cd /opt/jumpserver/ #我們已經提前下載
注:在線下載方法:
方法2:
(py3) [root@k5 ~]#git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
注:depth用於指定克隆深度,為1即表示只克隆最近一次commit
2、 安裝依賴 RPM 包
(py3) [root@k5 jumpserver]# cd /opt/jumpserver/requirements
(py3) [root@k5 requirements]# yum -y install $(cat rpm_requirements.txt)
3、 安裝 Python 庫依賴
(py3) [root@k5 requirements]# cd /opt/jumpserver/requirements
(py3) [root@k5 requirements]# source /opt/py3/bin/activate
(py3) [root@k5 requirements]# pip -V
pip 9.0.1 from /opt/py3/lib/python3.6/site-packages (python 3.6)
方法1:離線安裝:
(py3) [root@k5 python-package]# cd /opt/python-package
(py3) [root@k5 ~]# pip install ./*
方法2:在線安裝:
(py3) [root@k5~]# pip install -r requirements.txt
pip 是一個安裝和管理 Python 包的工具,相當於yum命令
建議這里選擇方法2
4、安裝 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
(py3) [root@k5 requirements]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
(py3) [root@k5 requirements]# yum -y install redis
(py3) [root@k5 requirements]# systemctl enable redis ; systemctl start redis
6、建數據庫 Jumpserver 並授權
(py3) [root@k5 ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
MariaDB [(none)]> flush privileges;
7、改 Jumpserver 配置文件,讓Jumpserver可以連接數據庫
(py3) [root@k5 ~]# cd /opt/jumpserver
(py3) [root@k5 jumpserver]# cp config_example.py config.py
(py3) [root@k5 jumpserver]# vim config.py
修改:如下38-43
# 我們計划修改 DevelopmentConfig 中的配置,因為默認 Jumpserver 使用該配置,它繼承自 Config
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
34 DB_ENGINE = 'sqlite3'
35 DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')
36
37 # MySQL or postgres setting like:
38 DB_ENGINE = 'mysql'
39 DB_HOST = '127.0.0.1'
40 DB_PORT = 3306
41 DB_USER = 'jumpserver'
42 DB_PASSWORD = '123456'
43 DB_NAME = 'jumpserver'
8、創建數據庫表結構和初始化數據
(py3) [root@k5 jumpserver]# cd /opt/jumpserver/utils
(py3) [root@k5 utils]# bash make_migrations.sh #注,在執行這一條命令之前,必續保障之前的pip install ./* 命令已經執行完了。
9、運行 Jumpserver一定在python3環境下執行
(py3) [root@k5 utils]# source /opt/py3/bin/activate
(py3) [root@k5 utils]# cd /opt/jumpserver
(py3) [root@k5 jumpserver]# chmod +x jms
(py3) [root@k5 jumpserver]# ./jms start all -d #后台運行使用 -d 參數
注: ./jms start all #前台運行
如果運行失敗,報錯如一下:
- Start Beat as Periodic Task Scheduler
Error: celery start error
Stop service: gunicorn熱
celery is stopped
beat is stopped
解決:重新啟動一下
測試:
jumpserver堡壘機測試鏈接:http://10.27.17.62:8080 用戶 : admin 密碼: admin
2 安裝 Coco組件
coco概述:coco實現了 SSH Server 和 Web Terminal Server 的組件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 開發。
(py3) [root@k5 jumpserver]# cd /opt/coco #直接使用離線代碼
(py3) [root@k5 coco]# source /opt/py3/bin/activate
方法1:附:在線下載代碼:# git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
2、 安裝coco的依賴包,主要有rpm和python包
(py3) [root@k5 coco]# cd /opt/coco/requirements
(py3) [root@k5 requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@k5 requirements]# pip install -r requirements.txt
注:擴展: pip download -r requirements.txt #使用download可以下載python包到本地
3、查看配置文件並運行
(py3) [root@k5 requirements]# cd /opt/coco
(py3) [root@k5 coco]# cp conf_example.py conf.py
(py3) [root@k5 coco]# chmod +x cocod
#如果 coco 與 jumpserver 分開部署,請手動修改 conf.py
(py3) [root@k5 coco]# ./cocod restart -d #啟動
(py3) [root@k5 coco]# netstat -antup | grep 5000 #這時不會成功,當你成功激活后,此時就會成功。
3 安裝Web-Terminal前端-Luna組件-配置Nginx整合各組件
Luna概述:Luna現在是 Web Terminal 前端,計划前端頁面都由該項目提供,Jumpserver 只提供 API,不再負責后台渲染html等。
訪問(https://github.com/jumpserver/luna/releases)下載對應版本的 release 包,直接解壓,不需要編譯
解壓 Luna
(py3) [root@k5 ~]# cd /opt
(py3) [root@k5 ~ ]# tar zxvf luna.tar.gz
(py3) [root@k5 ~]# ls /opt/luna
注:在線下載
#wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
3.2 配置 Nginx 整合各組件
安裝 Nginx 根據喜好選擇安裝方式和版本
(py3) [root@k5 jumpserver]# yum -y install nginx
在准備配置文件
(py3) [root@k5 opt]# vim /etc/nginx/nginx.conf
注釋掉以下:
#server {
72 # listen 80 default_server;
73 # listen [::]:80 default_server;
74 # server_name _;
75 # root /usr/share/nginx/html;
76
77 # # Load configuration files for the default server block.
78 # include /etc/nginx/default.d/*.conf;
79
80 # location / {
81 # }
82
83 # error_page 404 /404.html;
84 # location = /40x.html {
85 # }
86
87 # error_page 500 502 503 504 /50x.html;
88 # location = /50x.html {
89 # }
90 ## }
添加以下:
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/; # 如果coco安裝在別的服務器,請填寫它的ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://localhost:8080; # 如果jumpserver安裝在別的服務器,請填寫它的ip
}
}
3.3 運行 Nginx
(py3) [root@k5 opt]# nginx -t # 檢測配置文件
(py3) [root@k5 jumpserver]# systemctl start nginx ; systemctl enable nginx
3.4 接受coco注冊
登錄:http://10.27.17.62/ 到會話管理-終端管理 接受 Coco的注冊。點接受。
再刷新頁面:
(py3) [root@k5 nginx]# ssh -p2222 admin@10.27.17.62 #密碼:admin