记录一次搭建jumpserver V4堡垒机

1. 环境要求

  • 支持主流 Linux 发行版本(基于 Debian / RedHat,包括国产操作系统)
  • Gentoo / Arch Linux 请通过源码安装
操作系统架构Linux 内核软件要求最小化硬件配置
linux/amd64x86_64>= 4.0wget curl tar gettext iptables python2Core/8GB RAM/60G HDD
linux/arm64aarch64>= 4.0wget curl tar gettext iptables python2Core/8GB RAM/60G HDD

我个人测试使用,压缩配置,使用四流商家的3h4h100g vps,开3gswap使用。(安装完成后占用3g多内存,10.4g硬盘,因为操作极少,没什么录像,所以占用空间小,长期使用占用量不清楚,以后有[较小]可能会更新使用情况)

2. 安装部署

bbr+fq&swap

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

基础环境

apt-get update
apt-get install -y wget curl tar gettext iptables

使用在线安装方法

cd /opt
wget https://github.com/jumpserver/installer/releases/download/v4.1.0/jumpserver-installer-v4.1.0.tar.gz  # 选择最新版本
tar -xf jumpserver-installer-v4.1.0.tar.gz
cd jumpserver-installer-v4.1.0
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
vim config-example.txt
# JumpServer configuration file example.
#
# If you don't understand the purpose, you can skip modifying this configuration file, the system will automatically fill in
# Complete parameter documentation https://docs.jumpserver.org/zh/v3/guide/env/

################################# Image Configuration #################################
#
# The connection to docker.io in China will timeout or the download speed will be slow, enable this option to use Huawei Cloud image acceleration
# Replace the old version DOCKER_IMAGE_PREFIX
#
# DOCKER_IMAGE_MIRROR=1

# Image pull policy Always, IfNotPresent
# Always means that the latest image will be pulled every time, IfNotPresent means that the image will be pulled only if it does not exist locally
#
# IMAGE_PULL_POLICY=Always

############################## Installation Configuration #############################
#
# JumpServer 数据库持久化目录,默认情况下,记录、任务日志都在此目录中
# 请根据实际情况进行修改,升级过程中备份的数据库文件(.sql)和配置文件也将保存在此目录
#
VOLUME_DIR=/data/jumpserver

# 加密密钥,请确保在迁移时 SECRET_KEY 与旧环境一致,避免使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) Do not disclose SECRET_KEY to anyone
#
SECRET_KEY=

# 组件注册到核心时使用的令牌,请在迁移时保持 BOOTSTRAP_TOKEN 与旧环境一致,
# 避免使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) Do not disclose BOOTSTRAP_TOKEN to anyone
#
BOOTSTRAP_TOKEN=

# Log level 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

################################# DB Configuration ####################################
# 对于外部数据库,需要输入正确的数据库信息,系统将自动处理内置数据库
# (*) 密码部分不得包含单引号和双引号
#
DB_ENGINE=postgresql
DB_HOST=postgresql
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=
DB_NAME=jumpserver

# 如果外部 MySQL 需要启用 TLS/SSL 连接,请参考 https://docs.jumpserver.org/zh/v3/installation/security_setup/mysql_ssl/
#
# DB_USE_SSL=true

################################# Redis Configuration #################################
# 对于外部 Redis,请输入正确的 Redis 信息,系统将自动处理内置 Redis
# (*) 密码部分不得包含单引号和双引号
#
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# 如果您使用外部 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/v3/installation/security_setup/redis_ssl/
#
# REDIS_USE_SSL=true

################################# Access Configuration ################################
# 提供给外部的服务端口,如与现有服务冲突,请自行修改
#
HTTP_PORT=80

################################# HTTPS Configuration #################################
# Refer to https://docs.jumpserver.org/zh/v3/installation/proxy/ for configuration
#
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
#

# Nginx file upload and download size limit
#
CLIENT_MAX_BODY_SIZE=4096m

################################# Component Configuration #############################
# 组件注册使用,默认注册到核心容器,集群环境需要修改为集群 VIP 地址
#
CORE_HOST=http://core:8080
PERIOD_TASK_ENABLED=true

# 核心会话定义,
# SESSION_COOKIE_AGE 表示会话在闲置后过期的秒数,
# SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示浏览器关闭后会话立即过期
#
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=false

# 受信任的 DOMAINS 定义,
# 定义受信任的访问 IP,请根据实际情况修改,如果是公共 IP,请更改为相应的公共 IP,
# DOMAINS="demo.jumpserver.org:443"
# DOMAINS="172.17.200.191:80"
# DOMAINS="demo.jumpserver.org:443,172.17.200.191:80"
DOMAINS=

# 配置不需要启动的组件,默认所有组件都会启动,如不需要某个组件,可以将 {组件名称}_ENABLED 设置为 0 以关闭它
# CORE_ENABLED=0
# CELERY_ENABLED=0
# KOKO_ENABLED=0
# LION_ENABLED=0
# CHEN_ENABLED=0
# WEB_ENABLED=0

# Lion 启用字体平滑以优化体验
#
JUMPSERVER_ENABLE_FONT_SMOOTHING=true

################################# XPack Configuration #################################
# XPack 包,在开源版本中无效设置
#
SSH_PORT=2222
RDP_PORT=3389
XRDP_PORT=3390
MAGNUS_MYSQL_PORT=33061
MAGNUS_MARIADB_PORT=33062
MAGNUS_REDIS_PORT=63790
MAGNUS_POSTGRESQL_PORT=54320
MAGNUS_SQLSERVER_PORT=14330
MAGNUS_ORACLE_PORTS=30000-30030

################################## Other Configuration ################################
# 终端使用主机 HOSTNAME 作为标识,首次安装时自动生成
#
SERVER_HOSTNAME=${HOSTNAME}

# 使用内置 SLB,如果通过网页获取的客户端 IP 地址不正确,请将 USE_LB 设置为 0
# 当 USE_LB 设置为 1 时,使用配置 proxy_set_header X-Forwarded-For $remote_addr
# 当 USE_LB 设置为 0 时,使用配置 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
USE_LB=1

# 当前运行的 JumpServer 版本号,安装和升级后自动生成
#
TZ=Asia/Shanghai
CURRENT_VERSION=

需要修改的内容有:

  • HTTPS Configuration (绑定域名访问需要设置)
HTTPS_PORT=443
SERVER_NAME=your_domain_name
SSL_CERTIFICATE=server.crt
SSL_CERTIFICATE_KEY=server.key
  • 受信任的 DOMAINS 定义

填写需要访问的ip或域名,比如我要绑定域名访问则填写demo.jumpserver.org:443 (默认开启ssl,要配置上一步的证书)

# DOMAINS="demo.jumpserver.org:443"
# DOMAINS="172.17.200.191:80"
# DOMAINS="demo.jumpserver.org:443,172.17.200.191:80"
DOMAINS=demo.jumpserver.org:443
  • 上传证书到服务器

将证书文件上传到/opt/jumpserver/config/nginx/cert 目录下。

  • 另外还要注意SECRET_KEY和BOOTSTRAP_TOKEN,迁移时需要。不填写则会在安装时生成并输出。

回到jumpserver-installer-v4.1.0目录,安装:

./jmsctl.sh install

安装时选项全部选默认。

启动

./jmsctl.sh start
cd /opt/jumpserver-installer-v4.1.0

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

停止jumpserver,修改nginx配置,路径/opt/jumpserver/config/nginx/

示例文件:

# Todo: May be can auto discovery
upstream http_server {
  ip_hash;
  server web:8080;  # 这个是可以通过容器访问, 外部访问是 80端口
  # server HOST2:80;  # 另外的要写真实IP
}

server {
  listen 80;
  # listen [::]:80;
  server_name demo.jumpserver.org;  # 修改成你自己的域名
  return 307 https://$server_name$request_uri;
}

# 添加Cloudflare的IP地址范围配置
set_real_ip_from 173.245.48.0/20;  # Cloudflare的IP范围
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 172.64.0.0/13;  # Cloudflare的额外IP范围

real_ip_header X-Forwarded-For;  # 使用X-Forwarded-For头部来获取真实IP

server {
  listen 443 ssl http2;
  # listen [::]:443 ssl http2;
  # server_name demo.jumpserver.org;      # 取消注释并自行修改成你自己的域名
  server_tokens off;
  ssl_certificate cert/server.crt;        # 修改 server.crt 为你的证书, 不要改路径 certs/
  ssl_certificate_key cert/server.key;    # 修改 server.key 为你的证书, 不要改路径 certs/
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;

  client_max_body_size 5000m;

  location / {
    proxy_pass http://http_server;
    proxy_buffering off;
    proxy_request_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header X-Forwarded-For $remote_addr;
    # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 如果上层还有其他 slb 需要使用 $proxy_add_x_forwarded_for 获取真实 ip

    proxy_ignore_client_abort on;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 6000;
  }
}

环境访问

安装成功后,通过浏览器访问域名登录 JumpServer

地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin
密码: ChangeMe

按提示修改密码。在控制台-用户列表可以修改用户名、邮箱等。

可以在cloudflare设置waf规则限制访问ip,以提升安全性。

资产管理

添加用户

在用户列表添加用户组、用户。(个人使用也可以不创建)

添加资产

图片[1]-记录一次搭建jumpserver V4堡垒机-THsInk

添加用户时选择特权用户以应用root权限。远程windows选windows,不选windows rdp。

资产授权

新建一个授权,并添加给用户。

图片[2]-记录一次搭建jumpserver V4堡垒机-THsInk

连接资产

使用用户账号登录。切换到工作台,可看到资产。(如果没创建用户,直接分配给admin,则直接切换至工作台操作即可)

图片[3]-记录一次搭建jumpserver V4堡垒机-THsInk

可以正常连接并执行命令

图片[4]-记录一次搭建jumpserver V4堡垒机-THsInk

测试windows也正常。较卡。

图片[5]-记录一次搭建jumpserver V4堡垒机-THsInk

审计

在管理后台的审计台,可以查看操作记录:

图片[6]-记录一次搭建jumpserver V4堡垒机-THsInk
图片[7]-记录一次搭建jumpserver V4堡垒机-THsInk

点击转到可以查看会话详情,播放/下载回放录像。

系统设置

右上角设置-基本设置,设置站点url。

设置-通知设置,配置smtp。不可以同时勾选 使用 SSL 和 使用 TLS

综合评价

适合多用户管理。个人用可能有点画蛇添足了。多终端访问和可以rdp访问windows挺实用。

另外,之前还刷到一个轻量跳板机项目easynode,感兴趣也可以看看,docker部署,目前不支持远程windows。作者最近开始更新了,应该还不错。

参考

https://docs.jumpserver.org/zh/v4/installation/setup_linux_standalone/online_install/

https://docs.jumpserver.org/zh/v4/installation/proxy/

https://kb.fit2cloud.com/?p=152

https://www.ywbj.cc/?p=907

https://www.bilibili.com/video/av635028005

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!无需注册,过短或乱码评论会被屏蔽。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容