【开源安全保护】如何安装JumpServer堡垒机

news2025/2/25 18:28:21

【开源安全保护】如何安装JumpServer堡垒机

什么是堡垒机

大家好,我是星哥,今天我以前来认识堡垒机

堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中,作为一个中介的安全服务器,它位于内外网之间,主要用于集中管理和审计远程访问企业内部重要系统的操作。堡垒机通过严格的访问控制、日志审计和身份认证等手段,确保只有授权用户可以通过它访问企业内部的敏感服务器,并对访问过程进行全面监控。

堡垒机可以有效地降低内部系统暴露在公网中的风险,成为防止外部攻击和内部滥用的重要安全防线。

未添加堡垒机,如下图

image-20241203162947055

使用堡垒机,如下图

image-20241203163107285

堡垒机的优点

增强安全性:堡垒机可以作为一道额外的防线,保护服务器免受直接连接的风险。只有堡垒机可以直接与服务器通信,从而减少了服务器直接暴露在公共网络中的风险。

严格的权限控制:堡垒机可以充当访问控制的关口,只有经过授权的用户才能连接到目标服务器。管理员可以在堡垒机上配置严格的访问规则,确保只有合适的人员可以访问目标服务器。

跟踪访问日志:堡垒机通常会记录连接和操作日志,这使得可以跟踪谁连接了服务器以及他们执行了哪些操作。这对于审计和安全审查非常重要。

集中管理:堡垒机提供了一个集中的访问点,管理员可以在这里管理所有对服务器的访问。这使得在一个地方控制访问权限和监控访问活动变得更加方便。

什么是JumpServer

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。

官方文档: https://docs.jumpserver.org/

开源地址:https://github.com/jumpserver/jumpserver

安装JumpServer

实验环境

本文完整的方案会用到服务器(或者虚拟机)

  • 服务器一台(必须,安装 Centos7.2 以上版本系统,如果没有备案域名请购买香港或海外区域,http://y.xgss.net/aliyun)
  • 域名或IP一个,下文以 域名 jms.xgss.net 代替(非必须,本文用用内网ip 192.168.1.121代替)
  • SSL 证书一个(非必须,可以免费证书)

环境要求

  • 支持主流 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

Ubuntu

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

CentOS

yum update
yum install -y wget curl tar gettext iptables

离线安装

为什么选择离线安装,因为在线安装jumpserver很考验服务器的网络,有时候会因为网络的问题导致安装失败。

还有一种方法是docker all in one。

从飞致云社区 下载最新的 linux/amd64 [地址: community.fit2cloud.com/#/products/jumpserver/downloads ]离线包, 并上传到部署服务器的 /opt 目录。

关注公众号’星哥玩云’,回复’jumpserver’,获得jumpserver的下载地址。

cd /opt
tar -xf jumpserver-ce-v4.4.1-x86_64.tar.gz
cd jumpserver-ce-v4.4.1-x86_64

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

安装成功

>>> The Installation is Complete
1. You can use the following command to start, and then visit
cd /opt/jumpserver-ce-v4.4.1-x86_64
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh start

2. Other management commands
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh stop
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh restart
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh backup
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh upgrade
For more commands, you can enter ./jmsctl.sh --help to understand

3. Web access
http://192.168.1.121:80
Default username: admin  Default password: ChangeMe

docker ps

查看正在运行的容器

[root@node121 ~]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS                 PORTS                                       NAMES
27241322b803   jumpserver/koko:v4.4.1-ce   "./entrypoint.sh ./k…"   5 hours ago   Up 5 hours (healthy)   0.0.0.0:2222->2222/tcp, :::2222->2222/tcp   jms_koko
76dda2c4c06c   jumpserver/core:v4.4.1-ce   "./entrypoint.sh sta…"   5 hours ago   Up 5 hours (healthy)   8080/tcp                                    jms_core
df05a6e1df0e   jumpserver/chen:v4.4.1-ce   "./entrypoint.sh wisp"   5 hours ago   Up 5 hours (healthy)   8082/tcp                                    jms_chen
099a575dc8a9   redis:7.0-bullseye          "docker-entrypoint.s…"   5 hours ago   Up 5 hours (healthy)   6379/tcp                                    jms_redis
716f50d4f2f0   jumpserver/web:v4.4.1-ce    "/docker-entrypoint.…"   5 hours ago   Up 5 hours (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp           jms_web
5afd8a649cc4   jumpserver/lion:v4.4.1-ce   "./entrypoint.sh sup…"   5 hours ago   Up 5 hours (healthy)   4822/tcp, 8081/tcp                          jms_lion
421b962cb795   postgres:16.3-bullseye      "docker-entrypoint.s…"   5 hours ago   Up 5 hours (healthy)   5432/tcp                                    jms_postgresql
72521dbb2adc   jumpserver/core:v4.4.1-ce   "./entrypoint.sh sta…"   5 hours ago   Up 5 hours (healthy)   8080/tcp                                    jms_celery

浏览器访问

http://192.168.1.121:80 访问 jumpserver

输入用户和默认的密码,username: admin Default password: ChangeMe,提示修改初始密码。

image-20241203164439583

至此离线安装jumpserver安装成功。

JumpServer all-in-one安装方法

这里用容器all-in-one有个好处就是方便,不会破坏宿主机原来的服务(如果是全新机就可以考虑这个问题),但是安装之后有两个BUG。

一个是nginx的一个报错,“nginx: [emerg] host not found in upstream “facelive” in /etc/nginx/includes/facelive.conf:2”

一个是需要配置配置文件,“配置文件有问题,无法登录,请联系管理员或查看最新文档,如果你是管理员,可以更新配置文件解决,设置配置项”

所以不建议没有Docker操作的小白用这个方法。

至少官方没有修复之前不建议用。

安装docker

省略

Quick start

docker volume create jsdata
docker volume create pgdata

docker run --name jms_all \
-e SECRET_KEY=PleaseChangeMe \
-e BOOTSTRAP_TOKEN=PleaseChangeMe \
-v jsdata:/opt/data \
-v pgdata:/var/lib/postgresql \
-p 2222:2222 \
-p 82:80 jumpserver/jms_all

报错

mv: inter-device move failed: '/opt/jumpserver/data/logs' to '/opt/data/jumpserver/logs'; unable to remove target: Directory not empty
rm: cannot remove '/var/log/nginx': Device or resource busy
>> Init database
>> Start database postgre
Removed stale pid file.

/opt/web/entrypoint.sh: Configuration complete; ready for start up
nginx: [emerg] host not found in upstream "facelive" in /etc/nginx/includes/facelive.conf:2
2024-12-03 16:55:49,570 INFO exited: web (exit status 1; not expected)
2024-12-03 16:55:50,571 INFO gave up: web entered FATAL state, too many start retries too quickly

image-20241203170109111

修复nginx配置bug

进入docker

# docker exec -it jms_all /bin/bash

编辑

vim /etc/nginx/includes/facelive.conf
把
proxy_pass http://facelive:9999;
改成:
proxy_pass http://127.0.0.1:9999;
保存退出,再重启容器

重启docker容器

root@415e8fb4b1cd:/opt# exit
exit
[root@node121 ~]# docker restart jms_all

浏览器访问

输入用户和默认的密码,username: admin Default password: ChangeMe

依然报错:

配置文件有问题,无法登录,请联系管理员或查看最新文档
如果你是管理员,可以更新配置文件解决,设置配置项
DOMAINS=192.168.1.121:82

image-20241203171218906

修复bug

修复: 配置文件有问题,无法登录,请联系管理员或查看最新文档,如果你是管理员,可以更新配置文件解决,设置配置项

在网上找到的解决办法,这个方法不管用。

# docker exec -it jms_all /bin/bash

1.服务器上找到  
mkdir /opt/jumpserver/config/
vim /opt/jumpserver/config/config.txt

2.vi进去,找到这里,如何找。可以进入冒号模式:/DOMAINS,来进行查找。

DOMAINS="192.168.1.121:82"


这个方法可以修复

# docker exec -it jms_all /bin/bash

vim /opt/jumpserver/apps/jumpserver/conf.py
找到 'DOMAINS': '', 这一行。
把改为:
'DOMAINS': '192.168.1.121:82', # 这里换成你的地址。
保存退出
再重启容器
exit
docker restart jms_all

至此all-in-one安装方法可以成功登录jumpserver。

系统内存占用到2G。

参考: https://github.com/jumpserver/Dockerfile/tree/master/allinone

结尾

JumpServer 的安装(离线安装)和配置并不复杂,但却能显著提升企业的运维安全性和操作规范化程度。通过合理的权限划分和全面的审计功能,

下一篇文章星哥会讲如何使用JumpServer堡垒机,保护你的服务器的安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!

AIGC 012-Video LDM-Stable Video diffusion前身,将LDM扩展到视频生成任务! 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者,作者在SD的架构上进行扩展,实现了视频的生成。后续在Vid…

Qt开源控件:图像刻度轴绘制器 (附源码)工程项目私信博主

项目简介 图像刻度轴绘制器是一款基于 Qt/C 开发的小型绘图工具,旨在实现带有刻度轴的图像显示功能。该项目主要用于需要精确测量或标注图像坐标的场景。通过左侧和底部的坐标轴以及对应的刻度线,可以直观地了解图像内容在二维空间中的位置。 项目功能 …

集成学习综合教程

一、前置知识 一个分类器的分类准确率在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为 “弱分类器”,比如CART(classification and regression tree 分类与回归树)。 反之&#x…

渗透测试--Windows凭证收集

在渗透测试过程中,我们终究会遇到攻陷了某台加域Windows主机的情况。而这种情况下,我们很需要搜集当前主机的凭证信息。为进一步利用这些相互信任的凭证来进行横向打下基础。 在凭证收集中,我们主要有以下场景: 1.lsass.exe的DMP文…

云开发 Copilot ——让开发变得更简单

声明:本篇博客为云开发 Copilot体验文章,非广告 目录 前言: 游客体验 云开发 Copilot实战: 一、图片生成需求 二、云开发 Copilot实现需求 三、AI生成低代码页面 Copilot 的亮点功能 使用场景 云开发 Copilot开发的前景…

【Docker】创建Docker并部署Web站点

要在服务器上创建Docker容器,并在其中部署站点,你可以按照以下步骤操作。我们将以Flask应用为例来说明如何完成这一过程。 1. 准备工作 确保你的服务器已经安装了Docker。如果没有,请根据官方文档安装: Docker 安装指南 2. 创…

【Java】Switch语句、循环语句(for、while、do...while)

Switch语句:针对某个表达式的值进行判断,从而决定执行哪一段代码 语法格式: switch(表达式){ case 目标值1: 执行语句1 break; case 目标值2: …

第一部分:基础知识 3. 数据类型 --[MySQL轻松入门教程]

第一部分:基础知识 3. 数据类型 --[MySQL轻松入门教程] MySQL 支持多种数据类型,这些数据类型可以分为几大类:数值类型、字符串类型、日期和时间类型、二进制类型以及枚举和集合。每种类型都有其特定的用途和存储需求。以下是 MySQL 中常用的数据类型的详细介绍: 1. 数值…

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作,比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);

HTTP(超文本传输协议)

HTTP是万维网通信的基础构成,是一个简单的请求相应协议,基于TCP之上80号端口 通信原理 DNS解析 将域名甩个DNS服务器解析,将域名化为IP访问 建立TCP连接 如图,客户端先发送一个sys置位seq为x(任意值)的…

(78)MPSK基带调制通信系统瑞利平坦衰落信道传输性能的MATLAB仿真

文章目录 前言一、MATLAB仿真1.仿真代码2.仿真结果 二、子函数与完整代码总结 前言 本文给出瑞利平坦衰落信道上的M-PSK通信系统性能仿真的MATLAB源代码与仿真结果。其中,调制方式M-PSK包括BPSK、QPSK、8-PSK、16-PSK、32-PSK等方式。 一、MATLAB仿真 1.仿真代码 …

JAVA |日常开发中JSTL标签库详解

JAVA &#xff5c;日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…

NAT traversal 原理 | TCP / UDP/ P2P

注&#xff1a;本文为 “NAT traversal ”相关的几篇文章合辑。 未整理去重。 NAT 穿越技术原理 Li_yy123 于 2020-12-08 18:54:26 发布 一、NAT 由来 为了解决全球公有 IPv4 的稀缺&#xff0c;提出了 NAT 技术。NAT 是 Network Address Translation 网络地址转换的缩写。 …

P3916 图的遍历(Tarjan缩点和反向建边)

P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一&#xff1a;Tarjan 思路&#xff1a;先运用Tarjan算法得到每个连通块中最大的编号&#xff0c;然后对每个连通块进行缩点重新建图&#xff0c;进行dfs&#xff0c;得到缩点后的连通块能够达到的最大编号。 Code: conste…

数据结构与算法学习笔记----堆

数据结构与算法学习笔记----堆 author: 明月清了个风 first publish time: 2024.12.2 revised: 2024.12.3 - 例题标题错误&#xff0c;已修改。 ps⛹从这里开始调整了文章结构&#xff0c;先讲解算法和数据结构基本原理&#xff0c;再给出例题&#xff0c;针对例题中的应用再…

【C++】格式化输出详解:掌握 cout 的进阶用法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;格式化输出的理论概述&#x1f4af;控制输出宽度和填充字符setw 操作符setfill 操作符 &#x1f4af;控制浮点数的显示格式fixed 与 scientificsetprecision &#x1f4af;…

Rust : 生成日历管理markdown文件的小工具

需求&#xff1a; 拟生成以下markdown管理小工具&#xff0c;这也是我日常工作日程表。 可以输入任意时间段&#xff0c;运行后就可以生成以上的markdown文件。 一、toml [package] name "rust-workfile" version "0.1.0" edition "2021"[d…

Spring01——Spring Framework系统架构

spring学习路线 Spring Framework系统架构 相关概念 低耦合&#xff1a;是指系统中各个模块或组件之间的依赖性较低&#xff0c;即它们之间的联系较少、交互简单。这种设计原则的目的是为了提高系统的灵活性和可维护性&#xff0c;便于模块的独立开发、测试和替换。解耦&…

MicroBlaze软核开发(一):Hello World

实现功能&#xff1a;使用 MicroBlaze软核 串口打印 Hello World Vivado版本&#xff1a;2018.3 目录 MicroBlaze介绍 vivado部分&#xff1a; 一、新建工程 二、配置MicroBlaze 三、添加Uart串口IP 四、生成HDL文件编译 SDK部分&#xff1a; 一、导出硬件启动SDK 二、…

ZLMediaKit+wvp (ffmpeg+obs)推拉流测试

这里使用了两种方式: ffmpeg命令和 OBS OBS推流在网上找了些基本没有说明白的, 在ZLMediaKit的issues中看到了一个好大哥的提问在此记录一下 使用OBS推流&#xff0c;rtmp&#xff0c;报鉴权失败 推流 1. ffmpeg命令推流 官方说明文档地址: 推流规则 rtsp://192.168.1.4:10554…