jumpserver2.3.0社區開源版


簡介

官網
GitHub
嗶哩嗶哩官方視頻
jumpserver2.0發布會

jumpserver是全球首款完全開源的堡壘機,使用GUN GPL v2.0開源協議,是符合4A的專業運維審計系統。

jumpserver使用python/Django進行開發,遵循web2.0規范,配備了業界領先的web terminal解決方案,交互界面美觀、用戶體驗好

jumpserver采納分布式架構,支持多機房跨區域部署,中心節點提供API,各機房部署登錄節點,可橫向擴展、無並發訪問限制。

jumpserver現已支持管理SSH、Telnet、RDP、VNC協議資產。

作用

jumpserver作為一款開源堡壘機,在jumpserver中方便查看資產的硬件設備規格信息,具備四種能力(也就是上文提到的4A能力)

身份鑒別:防止身份冒用和復用
授權控制:防止內部誤操作和權限濫用
賬號管理:人員和資產的管理
安全審計:追溯的保障和事故分析的依據

我認為jumpserver在企業中的作用:

1、如果是多個運維人員進行管理一個項目,平時的操作都是xshell方式連接,如果出現誤操作后不承認,比較難以追責,jumpserver的錄像功能,可以方便事后追究責任。
2、公司的服務器不宜暴露在外網中,所以需要一個jumpserver制定規范化的端口后進行開放端口,用於運維人員登錄訪問。
(如果是將jumpserver的訪問來源設置為外網,則可以實現在家登陸jumpserver,進行操作服務器;但是更規范的方式為 搭建vpn遠程到公司,jumpserver設置為內網,其他服務器位於內網中,服務器的sshd只允許jumpserver的22端口訪問。)
jumpserver后在操作其他服務器,避免其他服務器暴露在外網中,降低被入侵的風險。並且jumpserver現在已經支持多因子認證,開放jumpserver的服務器在外網中可以安心使用,防止入侵。
3、權限划分,可以在jumpserver中設置開發人員的權限,管控權限防止權限濫用
4、傳輸文件,個人感覺比較雞肋,不能實時的跟隨所在目錄進行傳輸文件,必須指定一個目錄,如果想要的文件不是此目錄,還需要手動mv 。只不過可以錄像上傳、下載文件而已。

協議

JumpServer 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。

原理

在這里插入圖片描述
1、用戶通過HTTP請求到nginx,nginx的頁面到jumpserver
2、用戶通過ssh請求到coco,通過api到jumpserver(管理linux機器)
3、用戶通過ssh請求到guacamole,通過api調用到jumpserver(管理Windows)
4、用戶通過HTTP請求到nginx,nginx轉到Luna,通過瀏覽器調用api到nginx
5、jumpserver端和coco都對接數據庫,數據庫中存放着用戶的數據(可以利用mariadb進行重構和恢復系統)。

架構

LINA:前端模塊,負責頁面展示。
LUNA:web terminal前端,只提供api。
CORE:管理后台,是核心組件,支持restful api。
COCO/KOKO:提供ssh和web socket接口,連接服務器。
Guacamole:實現RDP功能,支持jumpserver調用
在這里插入圖片描述
jumpserver也有分布式部署的,在總公司部署核心節點,其他分公司部署proxy,可以實現統一管理。

安裝

安裝方式分為傳統方式、極速腳本方式、容器方式、分布式方式 安裝版本分為開源版和企業版,本文研究的是開源版

腳本方式

環境說明

全新安裝的 Centos7 (7.x)
需要連接 互聯網
使用 root 用戶執行
需要有4G內存

下載文件

cd /opt
yum -y install wget git
git clone --depth=1 https://github.com/jumpserver/setuptools.git
cd setuptools
cp config_example.conf config.conf
vi config.conf

執行安裝

./jmsctl.sh install

查看幫助

./jmsctl.sh -h

訪問頁面
http://ip:80

在這里插入圖片描述
在這里插入圖片描述

容器方式

docker環境准備

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
systemctl enable docker
systemctl start docker

配置鏡像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://h8h8tgzq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Linux 生成隨機加密秘鑰

if [ ! "$SECRET_KEY" ]; then
  SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
  echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
  echo $SECRET_KEY;
else
  echo $SECRET_KEY;
fi  
if [ ! "$BOOTSTRAP_TOKEN" ]; then
  BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
  echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
  echo $BOOTSTRAP_TOKEN;
else
  echo $BOOTSTRAP_TOKEN;
fi

運行docker部署jumpserver

mkdir  -p /opt/jumpserver/data
mkdir  -p /opt/jumpserver/mysql

docker run --name jms_all -d \
  -p 80:80 -p 2222:2222 \
  -e SECRET_KEY=$SECRET_KEY \
  -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \
  -v /opt/jumpserver/data:/opt/jumpserver/data \
  -v /opt/jumpserver/mysql:/var/lib/mysql \
  --privileged=true \
  jumpserver/jms_all:v2.3.1

訪問

瀏覽器訪問: http://<容器所在服務器IP>
SSH 訪問: ssh -p 2222 <容器所在服務器IP>
XShell 等工具請添加 connection 連接, 默認 ssh 端口 2222
默認管理員賬戶 admin 密碼 admin

傳統方式

分布式方式

配置

常用文件

文件名 作用
/opt/jumpserver/config.yml jumpserver配置文件
/opt/jumpserver/tmp jumpserver組件服務的pid
/opt/jumpserver/config.yml jumpserver配置文件
/opt/setuptools/config.conf jumpserver安裝信息文件

使用前須知

存儲規划
硬盤容量主要用於存儲審計錄像,所以容量的選擇需要根據用戶資產數量以及使用程度來評估,建議最好200G以上,以100台Linux虛擬機資產為例,正常的日常使用,200G可以存儲5-6個月的錄像。
存儲空間評估標准
每小時產生錄像大小(Linux和Windows平均值)10MB
每天操作時限 4小時
保留期限 30天
存儲空間 109104*30=127GB
主要是用於錄像存儲

端口
22 SSH
80,880 jumpserver的web服務(Nginx) 根據用戶需求可以修改
2222 jumpserver的終端連接端口 給第三方遠程終端工具(xshell,putty等)使用
5000 Koko服務端口
8081 guacamole服務端口
8070
3306 mariadb數據庫端口
6379 Redis
詳細見圖
注釋:參考Nginx的配置文件利於分析端口作用)

在這里插入圖片描述
docker容器運行 guacamole組件、Koko組件

目錄
/opt/jumpserver/data/ 錄像位置
/opt/jumpserver/data/ 靜態資源

概念區分
用戶列表中創建用戶

jumpserver平台用戶,並不是登錄Linux服務器的用戶

資產管理中的管理用戶

管理用戶是資產(被控服務器)上的 root,或擁有 NOPASSWD: ALL sudo 權限的用戶, JumpServer 使用該用戶來 `推送系統用戶`、`獲取資產硬件信息` 等。

資產管理中的系統用戶

可以理解為登錄資產用戶。單來說是用戶使用自己的用戶名登錄 JumpServer,JumpServer 使用系統用戶登錄資產。 系統用戶創建時,如果選擇了自動推送,JumpServer 會使用 Ansible 自動推送系統用戶到資產中。

使用

1、系統設置

1、基礎設置

在這里插入圖片描述

瀏覽器中 訪問 liushiya.com
在這里插入圖片描述
2、郵件設置
在這里插入圖片描述
我的授權碼:不告訴你
3、郵件內容設置
在這里插入圖片描述
注意:只要將郵件設置完成再創建用戶才會發送郵件 提醒修改密碼
在這里插入圖片描述
4、LDAP設置

5、安全設置
勾選 多因子認證以及設置限制登陸失敗次數,防止暴力破解
在這里插入圖片描述
重新登錄時會提示要求輸入admin用戶的密碼
在這里插入圖片描述
要求安裝手機端令牌應用
在這里插入圖片描述
在這里插入圖片描述
問題
問題在於 設置時 是在系統設置----> 安全設置中進行勾選
但是取消時 卻不是簡單取消勾選就可以的
而是需要
1、系統設置----> 安全設置中進行取消勾選
2、首頁右上角administrator用戶 ----> 個人信息 ----> 禁用 多因子認證
3、重新登錄就不會再要求輸入認證碼了。
在這里插入圖片描述

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200917224751770.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjUwNjU5OQ==,size_16,color_FFFFFF,t_70#pic_center

2、創建用戶

1、用戶管理 ---> 用戶列表 ----> 創建
在這里插入圖片描述
解釋:此創建的用戶為登錄jumpserver的用戶,並非是操作Linux系統的用戶,僅用於登錄jumpserver而已。

2、資產管理 ----> 管理用戶 ------> 創建管理用戶
此管理用戶是指Linux系統上的真實存在的用戶,用於推送系統用戶、獲取資產硬件信息等
在這里插入圖片描述
3、創建資產
在這里插入圖片描述

4、更新硬件信息(更新后 如果是正確可以連接但是沒有顯示出來硬件信息,請刷新瀏覽器)
在這里插入圖片描述

3、創建資產

此步驟需要在完成第二步的創建管理用戶之后操作

資產管理 ----> 資產列表 ----> 創建

在這里插入圖片描述

測試資產服務器是否可以連接
正常可以連接
在這里插入圖片描述
不可以連接
在這里插入圖片描述
為了實現安全性 在配置完成后 根據資產服務器列表,進行sshd的訪問控制(只允許jumpserver的端口進行遠程連接,拒絕其他IP地址的連接)
具體sshd的遠程連接控制 查看博客 《sshd服務的白名單和黑名單》

4、資產授權

1、創建系統用戶
資產管理 ----> 系統用戶 ----> 創建系統用戶
(系統用戶是登錄真實服務器時的用戶,不是jumpserver的用戶)
在這里插入圖片描述
系統用戶創建完成后 點擊系統用戶,添加資產
在這里插入圖片描述
先選擇推送,在選擇測試

2、資產授權
權限管理 ----> 資產授權 ----> 創建資產授權規則
在這里插入圖片描述
提交后30秒的時間,就可以使用了。

會話管理-----> web終端 登錄即可了。

注釋:jumpserver的用戶列表的用戶和資產管理的系統用戶是相互綁定的,因為資產授權是將系統用戶和資產進行綁定,而系統用戶又需要登錄jumpserver的用戶才能使用,所以這三者之間是相互綁定的(jumpserver用戶----系統用戶----被管理的資產)

安全建議

Jumpserver 對外需要開放 80 和 2222 端口,如果你配置了 ssl 還需要開放 443 端口, 8080 端口開放給 koko 和 guacamole 組件訪問

JumpServer 所在服務器操作系統應該升級到最新
JumpServer 依賴的軟件升級到最新版本
服務器、數據庫、redis 等依賴組件請勿使用弱口令密碼
不推薦關閉 firewalld 和 selinux
只開放必要的端口,必要的話請通過 vpn 或者 sslvpn 訪問 JumpServer
如果必須開放到外網使用,你應該部署 web 應用防火牆做安全過濾
請部署 ssl 證書通過 https 協議來訪問 JumpServer
JumpServer 不要使用弱口令密碼,應立即改掉默認的 admin 密碼
推薦開啟 MFA 功能,避免因密碼泄露導致的安全問題

升級

卸載

!!!此操作不可逆, 請確認已經備份好數據庫
確保已經停止 jms koko guacamole 進程
確定數據已經處理完畢
請自行替換文中相關路徑為你的實際環境路徑

1、 正常部署卸載

rm -rf /opt/jumpserver
rm -rf /opt/koko /opt/koko
rm -rf /opt/docker-guacamole
rm -rf /opt/lina
rm -rf /opt/luna
rm -rf /opt/py3
rm -rf /config
rm -rf /etc/nginx/conf.d/jumpserver.conf

2、腳本部署卸載

cd /opt/setuptools
./jmsctl.sh uninstall

3、docker 組件部署卸載

rm -rf /opt/jumpserver
rm -rf /opt/py3
rm -rf /etc/nginx/conf.d/jumpserver.conf
docker rm jms_koko
docker rm jms_guacamole
docker rmi jumpserver/jms_koko:v2.3.1
docker rmi jumpserver/jms_guacamole:v2.3.1
rm -rf /usr/lib/systemd/system/jms.service
rm -rf /opt/start_jms.sh
rm -rf /opt/stop_jms.sh

刪除數據庫

mysql -uroot
drop database jumpserver;
exit

清空 redis

redis-cli -h 127.0.0.1
flushall
exit

問題

1、用戶登錄時出現問題

error: dial tcp 10.0.0.102:22: i/o timeout
在這里插入圖片描述
在這里插入圖片描述

解決

jumpserver的GitHub反饋
也是描述了相同的問題
使用docker方式部署沒有這個問題,
使用腳本方式安裝確實會出現這個問題的。

腳本方式版本信息 2.2.3
在這里插入圖片描述

docker方式版本信息 2.3.0
在這里插入圖片描述

2、查看資產用戶列表時要輸入MFA認證

在這里插入圖片描述

修改用戶的FTP默認目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM