Jumpserver簡介
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5EMJRlT5VlaOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5AjNzADM0cTM3EDOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
堡壘機概述:
為網際網路企業提供了認證,授權,審計,自動化運維等功能。
堡壘機,在一個特定的網絡環境下,為了保障網絡和資料不受來自外部和内部使用者的入侵和破壞,可以實時收集和監控網絡環境。一但出現違規的操作導緻的事故,可以快速定位到原因和責任人
跳闆機概述:
跳闆機就是一台伺服器,開發或運維人員在維護過程中首先要統一登入到這台伺服器,然後再登入到目标裝置進行維護和操作。
跳闆機缺點:沒有實作對運維人員操作行為的控制和審計,使用跳闆機的過程中還是會出現誤操作、違規操作導緻的事故,一旦出現操作事故很難快速定位到原因和責任人
堡壘機比跳闆機多了幾個功能:
1、給其它伺服器推送sudo使用者,并為其設定權限
2、多了一個使用者行為監控的功能(有錄像)
堡壘機比跳闆機多了實時收集、監控網絡環境、集中報警等功能。
Jumpserver概述:
Jumpserver 是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協定,是符合 4A 的專業運維審計系統。
Jumpserver 使用 Python / Django 進行開發,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal 解決方案,互動界面美觀、使用者體驗好。
Jumpserver 采納分布式架構,支援多機房跨區域部署,中心節點提供 API,各機房部署登入節點,可橫向擴充、無并發限制。
為網際網路企業提供了認證,授權,審計,自動化運維等功能。
Jumpserver實作的功能:
1、使用者組/使用者 :添加組友善進行授權,使用者是授權和登陸的主體.
2、資産組/資産/IDC : 主機資訊簡潔完整,使用者自定義備注登入,支援自動擷取首頁硬體資訊.
3、Sudo/系統使用者/授權規則 :支援sudo 授權,系統使用者用于登陸用戶端,授權是将使用者、資産和系統使用者關聯起來.
4、線上/登入曆史/指令記錄/上傳下載下傳 : 線上實時監控使用者操作,統計和錄像回放使用者操作内容,阻斷控制,詳細記錄上傳下載下傳.
5、上傳/下載下傳 : 支援檔案上傳下載下傳,實作 rzsz方式.
6、預設設定 : 預設管理使用者,設定包括使用者密碼密鑰,預設資訊為了友善添加資産而設計.
jumpserver元件
1、Jumpserver 為管理背景,管理者可以通過Web頁面進行資産管理、使用者管理、資産授權等操作
2、Coco 為 SSH Server 和 Web Terminal Server(網頁linux用戶端)。使用者可以通過使用自己的賬戶登入 SSH 或者 Web Terminal 直接通路被授權的資産。不需要知道伺服器的賬戶密碼,新版本的coco被koko取代。
3、Luna 為 Web Terminal Server 前端頁面,使用者使用 Web Terminal 方式登入所需要的元件
4、Guacamole 為 Windows 元件,使用者可以通過 Web Terminal 來連接配接 Windows 資産 (暫時隻能通過 Web Terminal 來通路)
Jumpserver 環境要求
硬體配置 2個cpu核心 、4G記憶體 、50硬碟
環境配置 python3.6版本以上 、mysql server5.6版本以上 、mariadb server 5.5.56版本以上
一.部署jumpserver堡壘機
[[email protected]-2 ~]# hostnamectl set-hostname jumpserver 更改主機名
[[email protected]-2 ~]# logout
1.安裝python3.6的版本
安裝python3.6的版本,目前系統是centos7自帶版本的是2.7.5的版本
軟體下載下傳位址:
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
2.上傳所有安裝包
Jumpserver-packs包裡包含了所有需要的rpm包。
網盤位址:所有的包
連結:https://pan.baidu.com/s/1Ik_vh04KPmTxftPKThym_A
提取碼:pjtr
3.解壓上傳的包
[[email protected] ~]# tar xf pip-packs.tar.gz
[[email protected] ~]# tar xf Python-3.6.8.tgz -C /usr/local/src/
[[email protected] ~]# vim /etc/yum.repos.d/jumpserver.repo 配置本地jumpserveryum源
[jumpserver]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0
4.安裝jumpserver依賴
[[email protected] ~]# tar xf jumpserver-packs.tar.gz 解壓
[[email protected] ~]# yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
5.安裝python3.6.8
[[email protected] ~]# cd /usr/local/src/Python-3.6.8/
[[email protected] Python-3.6.8]# ./configure --prefix=/usr/local/python //預編譯
[[email protected] Python-3.6.8]# make -j 2 調用兩個核心加快編譯
[[email protected] Python-3.6.8]# make install
[[email protected] ~]# cd /usr/local/python/bin/
[[email protected] bin]# ls
優化環境變量,給python做軟連接配接
[[email protected] bin]# ln -s /usr/local/python/bin/* /usr/local/bin/
[[email protected] ~]# python3 -V #檢視版本
Python 3.6.8
[[email protected] ~]# pip3 -V #檢視版本
pip 18.1 from /usr/local/python/lib/python3.6/site-packages/pip (python 3.6)
主要用于安裝python一些子產品
6.配置python環境
因為 CentOS 6/7 自帶的是 Python2,而Yum等工具依賴原來的 Python,為了不擾亂原來的環境我們來使用 Python虛拟環境
[[email protected] ~]# python3.6 -m venv /opt/py3 建立py3虛拟環境
[[email protected] ~]# source /opt/py3/bin/activate 載入py3虛拟環境
看到下面的提示符代表成功,以後運作 Jumpserver 都要先運作以上 source 指令,以下所有指令均在該虛拟環境中運作
(py3) [[email protected] ~]#
設定為開機自啟,打開另一個終端會自動進入python環境
(py3) [[email protected] ~]# echo "source /opt/py3/bin/activate" >> /root/.bashrc
7.安裝jumpserver
(py3) [[email protected] ~]# yum -y install unzip 安裝解壓工具
(py3) [[email protected] ~]# unzip jumpserver-master.zip 解壓
(py3) [[email protected] ~]# mv jumpserver-master/ /opt/jumpserver mv到opt下
安裝rpm依賴
安裝rpm_requirements.txt檔案中記錄的依賴
安裝jumpserver運作代碼依賴
使用pip安裝,我們剛才上傳了pip并解壓了所有直接使用
(py3) [[email protected] requirements]# pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner ###--on-index表示不聯網裝,但是後面得指定從哪裝這些是依賴 安裝依賴
(py3) [[email protected] requirements]# pip install --no-index --find-links=/root/pip-packs/ -r requirements.txt
安裝代碼運作所需的依賴
檢視是否安裝成功
(py3) [[email protected] ~]# cd pip-packs/
(py3) [[email protected] pip-packs]# ls
8.安裝redis
Jumpserver使用Redis做緩存,加快了用戶端通路速度
Jumpserver使用Redis做cache和分布式任務隊列,如果有搭建好的redis叢集,可以不用搭建。也可以使用二進制包安裝redis。
(py3) [[email protected] ~]# yum -y install redis 安裝redis
py3) [[email protected] ~]# systemctl start redis 開啟redis服務
(py3) [[email protected] ~]# systemctl enable redis 把redis添加開機啟動項
9.安裝mysql
如果有mysql叢集,可以不同搭建,centos7預設使用mariadb資料庫,也可以源碼安裝mysql5.7
(py3) [[email protected] ~]# yum -y install mariadb mariadb-devel mariadb-server 安裝mariadb
(py3) [[email protected] ~]# systemctl start mariadb 開啟服務
(py3) [[email protected] ~]# systemctl enable mariadb 添加開機啟動項
10.建立jumpserver并授權
(py3) [[email protected] ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8'; 建立jumpserver資料庫
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver';
允許jumpserver使用者從本地登入密碼是jumpserver,對此庫所有的表授予任何權限
MariaDB [(none)]> flush privileges; 重新整理權限
11.生成密鑰
生成49位的密鑰,Linux1也可以用以下方式來生成密鑰。(每次生成的密鑰都不一樣)
py3) [[email protected] ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
MbgU67f1Td0HnNYusX5AgDZKZ3AvOpeDzL8QfMsYTgJSaGrp6
(py3) [[email protected] ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo
O6HeyM4BKj7CxDdG
生成的這兩個密鑰,下面會用到
12.修改jumpserver配置檔案
(py3) [[email protected] ~]# cd /opt/jumpserver/
(py3) [[email protected] jumpserver]# cp config_example.yml config.yml
py3) [[email protected] jumpserver]# vim config.yml
13.生成資料庫表結構和初始化資料
py3) [[email protected] jumpserver]# cd /opt/jumpserver/utils/
(py3) [[email protected] utils]# sh make_migrations.sh
14.運作jumpserver
(py3) [[email protected] utils]# cd /opt/jumpserver/
py3) [[email protected] jumpserver]# ./jms start all
#可以-d參數在背景運作 ./jms start all -d, 確定已經載入 py3 虛拟環境。盡量用以下方式啟動
設定service腳本
(py3) [[email protected] ~]# vim /usr/lib/systemd/system/jms.service
添加以下内容
[Unit] Description=jms After=network.target mariadb.service
redis.service docker.service Wants=mariadb.service redis.service
docker.service
[Service] Type=forking
Environment=“PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”
ExecStart=/opt/jumpserver/jms start all -d
ExecRestart=/opt/jumpserver/jms restart all -d
ExecStop=/opt/jumpserver/jms stop
[Install] WantedBy=multi-user.target
(py3) [[email protected] ~]# systemctl daemon-reload
(py3) [[email protected] ~]# systemctl restart jms 啟動
(py3) [[email protected] ~]# systemctl enable jms 設定開機自啟
11.登入通路jumpserver
登陸jumpserver,預設賬号:admin 密碼:admin
http://192.168.1.20:8080/
已完成部署
二、安裝Web Terminal- koko元件
這裡隻是部署了Jumpserver, 沒有 Web Terminal,是以通路 Web Terminal(web linux終端)會報錯。
Koko的下載下傳網址
https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-9ab4ea6-linux-amd64.tar.gz
py3) [[email protected] ~]# tar xf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/ 解壓koko
(py3) [[email protected] ~]# chown -R root:root /opt/kokodir/ 更改屬組屬主
修改koko配置檔案
(py3) [[email protected] ~]# cd /opt/kokodir/
(py3) [[email protected] kokodir]# cp config_example.yml config.yml 準備koko配置檔案
(py3) [[email protected] kokodir]# vi config.yml #密鑰要跟jumpserver的密鑰一緻
注釋去掉
(py3) [[email protected] kokodir]# ./koko & 把koko放背景運作
預設監聽兩個端口号 5000和2222
(py3) [[email protected] kokodir]# echo " cd /opt/kokodir && ./koko & " >> /etc/rc.local 開機啟動
py3) [[email protected] kokodir]# chmod +x /etc/rc.local
在web背景檢視終端
可以看見有jumpserver終端說明,安裝成功
使用ssh測試
有了Web Terminal以後,我們可以遠端堡壘機,然後通過堡壘機進行登入管理伺服器。
jumpserver元件
Jumpserver 為管理背景,管理者可以通過Web頁面進行資産管理、使用者管理、資産授權等操作
Coco 為 SSH Server 和 Web Terminal Server(網頁linux用戶端)。使用者可以通過使用自己的賬戶登入 SSH 或者 Web Terminal 直接通路被授權的資産。不需要知道伺服器的賬戶密碼,新版本的coco被koko取代。
Luna 為 Web Terminal Server 前端頁面,使用者使用 Web Terminal 方式登入所需要的元件
Guacamole 為 Windows 元件,使用者可以通過 Web Terminal 來連接配接 Windows 資産 (暫時隻能通過 Web Terminal 來通路)
部署luna 元件
軟體下載下傳位址:
https://github.com/jumpserver/luna/releases/download/1.5.2/luna.tar.gz
(py3) [[email protected] ~]# tar -zxvf luna.tar.gz -C /opt/ 解壓lua
(py3) [[email protected] ~]# chown -R root:root /opt/luna/ 設定權限
設定nginx 整合各元件
這裡直接使用yum安裝,也可以使用源碼包安裝.協調各個元件
(py3) [[email protected] ~]# yum install -y nginx
(py3) [[email protected] ~]# vim /etc/nginx/nginx.conf 修改配置檔案
Nginx主要提供反向代理功能,這裡要修改主配置檔案裡的預設server端口
![]()
Jumpserver堡壘機一.部署jumpserver堡壘機
所有的jumpserver的服務都使用nginx來進行反向代理,開啟nginx緩存
(py3) [[email protected] ~]# vim /etc/nginx/conf.d/jumpserver.conf
建立jumpserver配置檔案
server {
listen 80;
client_max_body_size 100m; # 錄像及檔案上傳大小限制
location /luna/ {
try_files $uri / /index.html; #如果通路不到luna就會通路到index.html
alias /opt/luna/; # luna 路徑, 如果修改安裝目錄, 此處需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 錄像位置, 如果修改安裝目錄, 此處需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 靜态資源, 如果修改安裝目錄, 此處需要修改
}
location /socket.io/ { #将所有請求交給koko的5000端口
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";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /coco/ { #通路coco反向代理給5000端口
proxy_pass http://localhost:5000/coco/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ { #以下參數是連接配接windos系統的參數
proxy_pass http://localhost:8081/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location / { #nginx通路,直接通路到jumpserver。通路時不需後面加8080
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
(py3) [[email protected] ~]# nginx -t 檢查nginx文法
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(py3) [[email protected] ~]# systemctl start nginx 啟動nginx
(py3) [[email protected] ~]# systemctl enable nginx 添加開機啟動項
(py3) [[email protected] ~]# netstat -anput|grep 808
登入jumpserver
使用nginx做反向代理以後,就可以直接使用80端口來通路jumpserver
http://192.168.1.20/測試是否可以通路lua頁面
jumpserver使用
配置jumpserver基本設定.
修改目前站點的URL為本機IP或者jumpserver的域名,不然建立使用者發送過去的郵件修改不了密碼。
1、設定jumpserver郵箱
設定jumpserver發件郵箱,用來給使用者發送通知郵件,設定完了以後測試一下郵箱聯通。
首先要生成授權碼,然後設定郵箱
這裡生成的授權碼,後面會用到******************
最後點送出
這時候會收到一條郵件
建立使用者
這裡建立的使用者是登陸jumpserver的使用者,這個使用者可以登陸jumpserver,然後通過jumpserver去連接配接被管理的伺服器,最後登陸到被管理的伺服器進行指令操作。當然,這裡建立的使用者也可以提權來管理jumpserver的背景。
郵件發送到了使用者的郵箱,提示設定密碼
現在可以是使用我們剛建立好的角色登入jumpserver
建立使用者組
資産管理
Jumpserver所能管理的主機,叫做資産
開啟兩台主機,添加資産。
主機名是centos2和centos3
建立資産
資産管理使用者已經建立好了,現在建立資産
建立指令過濾器
系統使用者可以綁定一些指令過濾器,一個過濾器可以定義一些規則
當使用者使用這個系統使用者登入資産,然後執行一個指令 這個指令需要被綁定過濾器的所有規則比對,高優先級先被比對,
當一個規則比對到了,如果規則的動作是允許,這個指令會被放行, 如果規則的動作是禁止,指令将會被禁止執行, 否則就比對下一個規則,如果最後沒有比對到規則,則允許執行
資産管理管理這1.30,這樣設定就會當管理1.30的時候,不會使用rm -rf 指令
建立系統使用者
在資産上建立使用者
系統使用者是 Jumpserver 跳轉登入被管理伺服器時使用的使用者,而不是使用某個使用者的使用者名跳轉登入伺服器(
ssh [email protected]
); 簡單來說是使用者使用自己的使用者名登入 Jumpserver,Jumpserver 使用系統使用者登入資産。
系統使用者建立時,如果選擇了自動推送,Jumpserver 會使用 Ansible 自動推送系統使用者到資産中,如果資産(交換機)不支援 Ansible,請手動填寫賬号密碼。
注意:這裡添加完系統使用者之後需要再給這個使用者設定一個密碼
資産授權
#在1.30上檢視,是否有admin使用者
[[email protected] ~]# grep "admin" /etc/passwd
admin:x:1000:1000::/home/admin:/bin/bash
測試web終端
這裡使用谷歌類的浏覽器,有些浏覽器不支援luna。使用運維總監登入
使用web終端登陸資産
如果這裡連接配接不上,重新啟動koko
使用會話登入資産
打開之前建立的會話
退出資産輸入exit,在退出的話輸入q
錄像.
登入admin使用者檢視錄像
視訊存放的路徑