CentOS7下搭建JumpServer(v2.28.6) 堡壘機
JumpServer 部署架構圖

JumpServer 功能架構圖

- JumpServer 是廣受歡迎的開源堡壘機,是符合 4A 規范的專業運維安全審計系統。
- JumpServer 使用 Python 開發,配備了業界領先的 Web Terminal 方案,交互界面美觀、用戶體驗好。
- JumpServer 采納分布式架構,支持多機房跨區域部署,支持橫向擴展,無資產數量及并發限制
為什么需要跳板機,堡壘機?
其實運維工作,出現各種問題是在所難免的,不僅要有很好的分析處理能力,而且還要避免問題再次發生。
要清楚認識到出現問題的真實原因:
- 沒有規范管理,人與服務器之間的界限不清晰;
- 沒有實名機制,登錄服務器前沒有實名驗證;
- 沒有密碼托管,服務器的密碼太多,很難做到定期修改,自己保管怕丟失;
- 沒有操作預警,對高危、敏感的操作無法做到事前防御;
- 沒有傳輸控制,對重要服務器無法控制文件傳輸;
- 沒有回溯過程,不能完整還原運維過程;
跳板機概述
- 跳板機屬于內控堡壘機范疇,是一種用于單點登錄的主機應用系統。跳板機就是一臺服務器,維護人員在維護過程中,首先要統一登錄到這臺服務器上,然后從這臺服務器再登錄到目標設備進行維護。但跳板機并沒有實現對運維人員操作行為的控制和審計,此外,跳板機存在嚴重的安全風險,一旦跳板機系統被攻入,則將后端資源風險完全暴露無遺。
- 跳板機優缺點
- 優勢:集中式進行管理
- 缺點:沒有實現對運維人員操作行為的控制與審計,使用跳板機的過程中還是會出現誤操作,違規操作等導致的事故,一旦出現操作事故很難定位到原因和責任人。
堡壘機概述
- 堡壘機的理念起于跳板機,人們逐漸認識到跳板機的不足,需要更新,更好的安全技術理念來實現運維操作管理,需要一種能滿足角色管理與授權審批,信息資源訪問控制,操作記錄和審計,系統變更和維護控制要求,并生成一些統計比報表配合管理規范來不斷提升IT內控的合規性的產品。結合了跳板機的優點堡壘機應運而生,它有效地降低了運維操作風險,使得運維操作管理變得更簡單,更安全。
- 堡壘機作用
- 核心系統運維和安全審計管控;
- 過濾和攔截非法訪問,惡意攻擊,阻斷不合法命令,審計監控,報警,責任追蹤;
- 報警,記錄,分析,處理;
堡壘機核心功能
- 單點登錄功能
支持對X11、Linux、Unix、數據庫、網絡設備、安全設備等一系列授權賬號進行密碼的自動化周期更改,簡化密碼管理,讓使用者無需記憶眾多系統密碼,即可實現自動登錄目標設備,便捷安全;
- 賬號管理
設備支持統一賬戶管理策略,能夠實現對所有服務器、網路設備、安全設備等賬號進行集中管理,完成對賬號整個生命周期的監控,并且可以對設備進行特殊角設置,如:審計巡檢員、運維操作員、設備管理員等自定義,以滿足審計需求;
- 身份認證
設備提供統一的認證接口,對用戶進行認證,支持身份認證模式包括動態口令、靜態密碼、硬件key、生物特征等多種認證方式,設備具有靈活的定制接口,可以與其他第三方認證服務器直接結合;
安全的認證模式,有效提高了認證的安全性和可靠性;
- 資源授權
設備提供基于用戶、目標設備、時間、協議類型IP、行為等要素實現細粒度的操作授權,最大限度保護用戶資源的安全;
- 訪問控制
設備支持對不同用戶進行不同策略的制定,細粒度的訪問控制能夠最大限度的保護用戶資源的安全,嚴防非法、越權訪問事件的發生;
- 操作審計
設備能夠對字符串、圖形、文件傳輸、數據庫等安全操作進行行為審計;通過設備錄像方式監控運維人員對操作系統、安全設備、網絡設備、數據庫等進行的各種操作,對違規行為進行事中控制;對終端指令信息能夠進行精確搜索,進行錄像精確定位;
堡壘機應用場景
- 多個用戶使用同一賬號
多出現在同一工作組中,由于工作需要,同時系統管理員賬號唯一,因此只能多用戶共享同一賬號;如果發生安全事故,不僅難以定位賬號的實際使用者和責任人,而且無法對賬號的使用范圍進行有效控制,存在較大的安全風險和隱患;
- 一個用戶使用多個賬號
目前一個維護人員使用多個賬號時較為普遍的情況,用戶需要記憶多套口令同時在多套主機系統、網絡設備之間切換,降低工作效率,增加工作復雜度;
- 缺少統一的權限管理平臺,難以實現更細粒度的命令權限控制
維護人員的權限大多是粗放管理,無基于最小權限分配原則的用戶權限管理,難以實現更細粒度的命令權限控制,系統安全性無法充分保證;
- 無法制定統一的訪問審計策略,審計粒度粗。
各個網絡設備、主機系統、數據庫是分別單獨審計記錄訪問行為,由于沒有統一審計策略,而且各系統自身審計日志內容深淺不一,難以及時通過系統自身審計發現違規操作行為和追查取證;
- 傳統的網路安全審計系統無法對維護人員經常使用的SSH、RDP等加密、圖形操作協議進行內容審計。
準備環境
[root@JumpServer ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@JumpServer ~]# uname -r
3.10.0-1160.el7.x86_64
[root@JumpServer ~]# setenforce 0
[root@JumpServer ~]# systemctl stop friewalld
[root@JumpServer ~]# hostname -I
172.16.70.181
[root@JumpServer ~]# yum update -y
[root@JumpServer ~]# yum install wget curl tar gettext iptables vim net-tools lrzsz tree -y
搭建Jumpserver
[root@JumpServer ~]# cd /opt
[root@JumpServer opt]# wget https://github.com/jumpserver/installer/releases/download/v2.28.6/jumpserver-installer-v2.28.6.tar.gz
[root@JumpServer opt]# tar -xf jumpserver-installer-v2.28.6.tar.gz
[root@JumpServer opt]# mv jumpserver-installer-v2.28.6 jumpserver
[root@JumpServer opt]# ls jumpserver
compose config-example.txt config_init jmsctl.sh LICENSE locale quick_start.sh README.md scripts static. env utils
[root@JumpServer opt]# tree jumpserver
jumpserver
├── compose
│ ├── docker-compose-app.yml
│ ├── docker-compose-db-tls.yml
│ ├── docker-compose-es.yml
│ ├── docker-compose-init-db.yml
│ ├── docker-compose-init-tls.yml
│ ├── docker-compose-init-xpack.yml
│ ├── docker-compose-lb.yml
│ ├── docker-compose-mariadb.yml
│ ├── docker-compose-minio.yml
│ ├── docker-compose-mysql.yml
│ ├── docker-compose-network_ipv6.yml
│ ├── docker-compose-network.yml
│ ├── docker-compose-redis.yml
│ ├── docker-compose-task.yml
│ └── docker-compose-xpack.yml
├── config-example.txt
├── config_init
│ ├── core
│ │ └── config.yml
│ ├── koko
│ │ └── config.yml
│ ├── mariadb
│ │ └── mariadb.cnf
│ ├── mysql
│ │ └── my.cnf
│ ├── nginx
│ │ ├── cert
│ │ │ ├── server.crt
│ │ │ └── server.key
│ │ └── lb_http_server.conf
│ ├── README.md
│ └── redis
│ └── redis.conf
├── jmsctl.sh
├── LICENSE
├── locale
│ ├── en
│ │ └── LC_MESSAGES
│ │ ├── jumpserver-installer.mo
│ │ └── jumpserver-installer.po
│ └── zh_CN
│ └── LC_MESSAGES
│ ├── jumpserver-installer.mo
│ └── jumpserver-installer.po
├── quick_start.sh
├── README.md
├── scripts
│ ├── 0_prepare.sh
│ ├── 1_config_jumpserver.sh
│ ├── 2_install_docker.sh
│ ├── 3_load_images.sh
│ ├── 4_install_jumpserver.sh
│ ├── 5_db_backup.sh
│ ├── 6_db_restore.sh
│ ├── 7_upgrade.sh
│ ├── 8_uninstall.sh
│ ├── const.sh
│ ├── docker.service
│ └── utils.sh
├── static. env
└── utils
├── build.sh
└── messages.sh
16 directories, 48 files
- 根據需要修改配置文件模板, 如果不了解用途可以跳過修改此配置文件, 系統會自動填入。
[root@JumpServer opt]# ls jumpserver/config-example.txt
jumpserver /config-example .txt
執行安裝
[root@JumpServer opt]# bash jumpserver/jmsctl.sh install
██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
Version: v2.28.6
1. Check Configuration File
Path to Configuration file : /opt/jumpserver/config
/opt/jumpserver/config/config .txt [ √ ]
/opt/jumpserver/config/nginx/cert/server .crt [ √ ]
/opt/jumpserver/config/nginx/cert/server .key [ √ ]
complete
>>> Install and Configure Docker
1. Install Docker
Starting to download Docker engine ...
Starting to download Docker Compose binary ...
complete
2. Configure Docker
Do you want to support IPv6? (y /n ) (default n):
complete
3. Start Docker
Created symlink from /etc/systemd/system/multi-user .target.wants /docker .service to /etc/systemd/system/docker .service.
complete
>>> Loading Docker Image
[jumpserver /redis :6.2]
......
[jumpserver /mariadb :10.6]
......
[jumpserver /core :v2.28.6]
......
[jumpserver /koko :v2.28.6]
......
[jumpserver /lion :v2.28.6]
......
[jumpserver /magnus :v2.28.6]
......
[jumpserver /web :v2.28.6]
......
complete
>>> Install and Configure JumpServer
1. Configure Private Key
SECRETE_KEY: NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1
BOOTSTRAP_TOKEN: NmUxMzRkNTYtNTk5MS1kM2I0
complete
2. Configure Persistent Directory
Do you need custom persistent store, will use the default directory /data/jumpserver ? (y /n ) (default n):
complete
3. Configure MySQL
Do you want to use external MySQL? (y /n ) (default n):
complete
4. Configure Redis
Do you want to use external Redis? (y /n ) (default n):
complete
5. Configure External Port
Do you need to customize the JumpServer external port? (y /n ) (default n):
complete
6. Init JumpServer Database
......
complete
>>> The Installation is Complete
1. You can use the following command to start, and then visit
cd /opt/jumpserver
. /jmsctl .sh start
2. Other management commands
. /jmsctl .sh stop
. /jmsctl .sh restart
. /jmsctl .sh backup
. /jmsctl .sh upgrade
For more commands, you can enter . /jmsctl .sh --help to understand
3. Web access
http: //172 .16.70.181:80
Default username: admin Default password: admin
4. SSH /SFTP access
ssh -p2222 admin@172.16.70.181
sftp -P2222 admin@172.16.70.181
5. More information
Official Website: https: //www .jumpserver.org/
Documentation: https: //docs .jumpserver.org/
安裝完成后,配置文件詳情
[root@JumpServer opt]# cat jumpserver/config/config.txt
# JumpServer configuration file example.
#
# 如果不了解用途可以跳過修改此配置文件, 系統會自動填入
# 完整參數文檔 https://docs.jumpserver.org/zh/master/admin-guide/env/
################################## 鏡像配置 ###################################
#
# 國內連接 docker.io 會超時或下載速度較慢, 開啟此選項使用華為云鏡像加速
# 取代舊版本 DOCKER_IMAGE_PREFIX
#
# DOCKER_IMAGE_MIRROR=1
################################## 安裝配置 ###################################
#
# JumpServer 數據庫持久化目錄, 默認情況下錄像、任務日志都在此目錄
# 請根據實際情況修改, 升級時備份的數據庫文件(.sql)和配置文件也會保存到該目錄
#
VOLUME_DIR= /data/jumpserver
# 加密密鑰, 遷移請保證 SECRET_KEY 與舊環境一致, 請勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 SECRET_KEY
#
SECRET_KEY=NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1
# 組件向 core 注冊使用的 token, 遷移請保持 BOOTSTRAP_TOKEN 與舊環境一致,
# 請勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 BOOTSTRAP_TOKEN
#
BOOTSTRAP_TOKEN=NmUxMzRkNTYtNTk5MS1kM2I0
# 日志等級 INFO, WARN, ERROR
#
LOG_LEVEL=ERROR
# JumpServer 容器使用的網段, 請勿與現有的網絡沖突, 根據實際情況自行修改
#
DOCKER_SUBNET=192.168.250.0 /24
# ipv6 nat, 正常情況下無需開啟
# 如果宿主不支持 ipv6 開啟此選項將會導致無法獲取真實的客戶端 ip 地址
#
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200:: /64
################################# MySQL 配置 ##################################
# 外置 MySQL 需要輸入正確的 MySQL 信息, 內置 MySQL 系統會自動處理
#
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
DB_NAME=jumpserver
# 如果外置 MySQL 需要開啟 TLS/SSL 連接, 參考 https://docs.jumpserver.org/zh/master/install/install_security/#ssl
#
# DB_USE_SSL=True
################################# Redis 配置 ##################################
# 外置 Redis 需要請輸入正確的 Redis 信息, 內置 Redis 系統會自動處理
#
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
# 如果使用外置 Redis Sentinel, 請手動填寫下面內容
#
# REDIS_SENTINEL_HOSTS=mymaster/192.168.100.1:26379,192.168.100.1:26380,192.168.100.1:26381
# REDIS_SENTINEL_PASSWORD=your_sentinel_password
# REDIS_PASSWORD=your_redis_password
# REDIS_SENTINEL_SOCKET_TIMEOUT=5
# 如果外置 Redis 需要開啟 TLS/SSL 連接, 參考 https://docs.jumpserver.org/zh/master/install/install_security/#redis-ssl
#
# REDIS_USE_SSL=True
################################## 訪問配置 ###################################
# 對外提供服務端口, 如果與現有服務沖突請自行修改
# 如果不想對外提供訪問可以使用 127.0.0.1:, eg: 127.0.0.1:33060
#
HTTP_PORT=80
SSH_PORT=2222
MAGNUS_PORTS=30000-30100
################################# HTTPS 配置 #################################
# 參考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
#
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
#
# Nginx 文件上傳下載大小限制
#
CLIENT_MAX_BODY_SIZE=4096m
################################## 組件配置 ###################################
# 組件注冊使用, 默認情況下向 core 容器注冊, 集群環境需要修改為集群 vip 地址
#
CORE_HOST=http: //core :8080
PERIOD_TASK_ENABLED=True
# Core Session 定義,
# SESSION_COOKIE_AGE 表示閑置多少秒后 session 過期,
# SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示關閉瀏覽器即 session 過期
#
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
# Lion 開啟字體平滑, 優化體驗
#
JUMPSERVER_ENABLE_FONT_SMOOTHING=True
################################# XPack 配置 #################################
# XPack 包, 開源版本設置無效
#
RDP_PORT=3389
################################## 其他配置 ##################################
# 終端使用宿主 HOSTNAME 標識, 首次安裝自動生成
#
SERVER_HOSTNAME=JumpServer
# 當前運行的 JumpServer 版本號, 安裝和升級完成后自動生成
#
CURRENT_VERSION=v2.28.6
==============================================================================
# 配置文件前后對比如下
[root@JumpServer opt]# diff jumpserver/config-example.txt jumpserver/config/config.txt
24c24
< SECRET_KEY=
---
> SECRET_KEY=NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1
31c31
< BOOTSTRAP_TOKEN=
---
> BOOTSTRAP_TOKEN=NmUxMzRkNTYtNTk5MS1kM2I0
53c53
< DB_PASSWORD=
---
> DB_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
65c65
< REDIS_PASSWORD=
---
> REDIS_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
124c124
< SERVER_HOSTNAME=${HOSTNAME}
---
> SERVER_HOSTNAME=JumpServer
128c128
< CURRENT_VERSION=
---
> CURRENT_VERSION=v2.28.6
=============================================================================
[root@JumpServer opt]# tree jumpserver/config
jumpserver /config
├── config.txt # 主配置文件
├── core
│ └── config.yml # core yml 格式配置文件,可以留空,使用 config.txt 設置
├── koko
│ └── config.yml # koko yml 格式配置文件,可以留空,使用 config.txt 設置
├── mariadb
│ └── mariadb.cnf # mariadb 配置文件
├── mysql
│ └── my.cnf # mysql 配置文件
├── nginx # nginx 配置文件
│ ├── cert
│ │ ├── server.crt
│ │ └── server.key
│ └── lb_http_server.conf
└── redis
└── redis.conf # redis 配置文件
7 directories, 9 files
jumpserver命令解析
[root@JumpServer opt]# bash jumpserver/jmsctl.sh --help
或
[root@JumpServer opt]# jmsctl --help
JumpServer Deployment Management Script
Usage:
. /jmsctl .sh [COMMAND] [ARGS...]
. /jmsctl .sh --help
Installation Commands:
install Install JumpServer
upgrade [version] Upgrade JumpServer
check_update Check for updates JumpServer
reconfig Reconfiguration JumpServer
Management Commands:
start Start JumpServer
stop Stop JumpServer
close Close JumpServer
restart Restart JumpServer
status Check JumpServer
down Offline JumpServer
uninstall Uninstall JumpServer
More Commands:
load_image Loading docker image
backup_db Backup database
restore_db [ file ] Data recovery through database backup file
raw Execute the original docker-compose command
tail [service] View log
啟動jumpserver
[root@JumpServer opt]# jmsctl version
v2.28.6
[root@JumpServer opt]# jmsctl status
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
jms_mysql jumpserver /mariadb :10.6 "docker-entrypoint.s…" mysql 13 minutes ago Up 13 minutes (healthy) 3306 /tcp
jms_redis jumpserver /redis :6.2 "docker-entrypoint.s…" redis 13 minutes ago Up 13 minutes (healthy) 6379 /tcp
[root@JumpServer opt] # jmsctl start
[+] Running 8 /8
? Container jms_redis Healthy 0.6s
? Container jms_mysql Healthy 0.6s
? Container jms_core Healthy 11.9s
? Container jms_magnus Started 14.1s
? Container jms_celery Started 12.4s
? Container jms_web Started 12.6s
? Container jms_koko Started 12.4s
? Container jms_lion Started 12.5s
[root@JumpServer opt]# jmsctl status
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
jms_celery jumpserver /core :v2.28.6 "./entrypoint.sh sta…" celery About a minute ago Up About a minute (healthy) 8070 /tcp , 8080 /tcp
jms_core jumpserver /core :v2.28.6 "./entrypoint.sh sta…" core About a minute ago Up About a minute (healthy) 8070 /tcp , 8080 /tcp
jms_koko jumpserver /koko :v2.28.6 "./entrypoint.sh" koko About a minute ago Up About a minute (healthy) 0.0.0.0:2222->2222 /tcp , :::2222->2222 /tcp , 5000 /tcp
jms_lion jumpserver /lion :v2.28.6 "./entrypoint.sh" lion About a minute ago Up About a minute (healthy) 4822 /tcp , 8081 /tcp
jms_magnus jumpserver /magnus :v2.28.6 "./entrypoint.sh" magnus About a minute ago Up About a minute (healthy) 0.0.0.0:30000-30100->30000-30100 /tcp , :::30000-30100->30000-30100 /tcp
jms_mysql jumpserver /mariadb :10.6 "docker-entrypoint.s…" mysql 15 minutes ago Up 15 minutes (healthy) 3306 /tcp
jms_redis jumpserver /redis :6.2 "docker-entrypoint.s…" redis 15 minutes ago Up 15 minutes (healthy) 6379 /tcp
jms_web jumpserver /web :v2.28.6 "/docker-entrypoint.…" web About a minute ago Up About a minute (healthy) 0.0.0.0:80->80 /tcp , :::80->80 /tcp
頁面訪問
- http://ip:80,默認賬號密碼:admin,admin;首次登錄需修改密碼。


出處:http://www.rzrgm.cn/zhangwencheng
版權:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出 原文鏈接
浙公網安備 33010602011771號