Linux 搭建 JumpServer 堡垒机

2023-11-18

  • 跳板机概述

跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。 

跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;

  • 堡垒机概述:

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。

  • 总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。

  • JumpServer 2.12.1 环境要求: 
  • 注意:全新安装的 Linux

  • 需要连接 互联网
    使用 root 用户执行

  • 快速开始

    仅需两步快速安装 JumpServer:

  • 准备一台 2核4G (最低)且可以访问互联网的 64 位 Linux 主机;
  • 以 root 用户执行如下命令一键安装 JumpServer。
  • 实验环境
  • CentOS 7.6   192.168.2.19   SElinux、Firewalld以及iptables 均为关闭状态
  • wget https://ghproxy.com/https://github.com/jumpserver/jumpserver/releases/download/v2.12.1/quick_start.sh | bash

  • 查看 docker 运行状态 

  • docker  ps -a

  • 打开浏览器访问 http://192.168.2.19

  • 默认 用户名 密码 admin

  • 首次登陆会强制更新密码

  • jumpserver 平台系统初始化

  • 系统基本设置
  • 这里要写成自己真实的 URL 地址,不然后期用户访问不了。http://192.168.2.19,设置完成后,并点击“提交”按钮。

  • 邮件设置

  • 根据自己的实际情况填写,完成点击提交保存

  • 用户管理,添加用户组。

  • 用户名即 Jumpserver 登录账号。用户组是用于资产授权,当某个资产对一个用户组授权后,这个用户组下面的所有用户就都可以使用这个资产了。角色用于区分一个用户是管理员还是普通用户。
  • 点击用户管理 —> 查看用户组 —> 创建--->提交

  • 添加用户

  • 点击用户管理 —> 用户列表 —> 创建用户
  • 其中,名称是真实姓名,用户名即 Jumpserver 登录账号。
  • 这里选择生成重置密码链接,通过邮件发送给用户。方式来重置新建用户密码
  • 权限选择为系统管理员

  •  登陆邮箱查看

  •  勾选我同意 ,提交

  • 扩展:
    MFA,Multi-FactorAuthentication,即多因子认证,是一种简单有效的安全认证方法。它能够在用户名和密码之外,再增加一层保护。MFA 设备,又叫动态口令卡或 Token 卡,是提供这种安全认证方法的设备。
  • MFA 设备如:
    硬件 MFA 设备
    硬件 MFA 设备如下图所示,正面的 6 位数动态安全码 30 秒更新一次,背面有该硬件 MFA 设备的序列号。
     

  • 编辑资产树添加节点
  • 使用 admin 用户登录 jumpserver,选择 资产管理 ----> 系统用户 ---> 特权用户
  • 特权用户为 root 或者拥有 sudo ‘NOPASSWD’ ALL 权限的普通用户,生成环境推荐使用 sudo 用户+SSH密钥 认证

  •  资产管理---->资产列表--->右键 创建节点

  • 点击提交后,大约20秒(视硬件、网络情况)左右会看到硬件信息

  • 如果看不到请检查管理用户的用户名和密钥是否正确以及该管理用户是否能使用 SSH 从 Jumpserver 主机正确登录到资产主机上。

  • 创建授权规则

  • 节点,对应的是资产,代表该节点下的所有资产。
  • 用户组,对应的是用户,代表该用户组下所有的用户。
  • 系统用户,及所选的用户组下的用户能通过该系统用户使用所选节点下的资产。
  • 节点,用户组,系统用户是一对一的关系,所以当拥有 Linux、Windows 不同类型资产时,应该分别给 Linux 资产和 Windows 资产创建授权规则。
  • 创建普通用户

  • 权限管理----资产授权----选择 default test---创建 

  • 注:这一条授权的含意是: 只要是“test”组中的人,对节点“default--test"中的所有服务器,拥有“系统管理员用户”的权限。
  • 授权提交后,查看 192.168.2.4 是否创建用户以及权限

  •  普通 用户 gf  拥有 sudo 权限

  • 打开资产所在的节点:
    双击资产名字,就连上资产了:
    如果显示连接超时,请检查为资产分配的系统用户用户名和密钥是否正确,是否正确选择 Linux 操作系统,协议 ssh,端口 22,以及资产的防火墙策略是否正确配置等信息。

  •  使用 xshell 连接 jumpserver 管理服务器

  • 查看历史命令记录

  •  查看历史会话并回放视频 

  •  历史会话

 

  • 文件管理功能

  • 可以新建文件夹,也可以上传文件到服务器。这些创建的文件和上传的文件,都会存在目标服务器的/tmp 目录下

  • 作业中心
    任务列表作业是 Jumpserver 向其所管理下的资产发送的指令, 例如, 测试资产可连接性、获取资产硬件信息、测试管理用户可连接性和测试系统用户可连接性等命令。默认展示最近 7 天的作业记录。
    点击作业名称可以查看作业的具体详情、作业的历史版本以及作业执行的历史记录

  • 批量命令
    可以通过该功能快速下发命令到资产, 目前仅支持能被 ansible 管理的资产, 要求 系统用户 登陆方式为 自动登陆 

  • 使用 jumpserver 管理 mysql 数据库

  • 添加 Mysql 系统用户,服务器需正确安装、配置及启动Mysql 服务

  •  创建应用

  •  应用授权

 

  • 测试,选择会话管理,会看到左侧有刚才授权的应用

 


  • 手动安装

  • CentOS 7.6   192.168.2.2
  • 准备工作:
  • 安装 mariadb   redis  

Redis >= 6.0
MariaDB >= 10.2
  • 首先安装配置 mariadb
  • vim /etc/yum.repos.d/mariadb.repo 
    [mariadb]
    name = MariaDB
    baseurl=http://yum.mariadb.org/10.6/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    enabled=1
  • yum -y install mariadb-server mariadb wget gcc epel-release git MariaDB-shared mariadb-devel
  • systemctl enable mariadb --now
  • mysql
  • >alter user 'root'@'localhost' identified by '123456';
    flush privileges;

    create database jumpserver default charset 'utf8' collate 'utf8_bin';
    grant all on jumpserver.* to 'jumpserver'@'%' identified by 'PASSWORD'; 

    flush privileges;
  • systemctl restart mariadb

  • 安装 redis
  • yum -y install  http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • 使用 remi repository 源安装 Redis
  • yum --enablerepo=remi install -y redis
  • vim /etc/redis.conf 
  • 修改如下:
    bind 192.168.2.2
    requirepass PASSWORD
  • 启动 Redis
  • systemctl enable redis.service --now

  • 安装 jumpserver
  • cd /opt
  • wget https://github.com/jumpserver/installer/releases/download/v2.12.1/jumpserver-installer-v2.12.1.tar.gz
  • tar -xf jumpserver-installer-v2.12.1.tar.gz
  • cd jumpserver-installer-v2.12.1
  • vim config-example.txt 
    # 以下设置如果为空系统会自动生成随机字符串填入
    ## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
    ## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

    ## 安装配置, 可以使用华为云加速下载, arm64 用户需要注释掉 DOCKER_IMAGE_PREFIX
    # DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
    VOLUME_DIR=/opt/jumpserver
    DOCKER_DIR=/var/lib/docker

    SECRET_KEY=PASSWORD
    BOOTSTRAP_TOKEN=PASSWORD

    LOG_LEVEL=ERROR

    ##  MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置数据库, 请输入正确的 MySQL 信息
    ##根据自己的实际情况设置
    USE_EXTERNAL_MYSQL=1
    DB_HOST=192.168.2.2
    DB_PORT=3306
    DB_USER=jumpserver
    DB_PASSWORD=PASSWORD
    DB_NAME=jumpserver

    ##  Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置数据库, 请输入正确的 Redis 信息
    ##根据自己的实际情况设置
    USE_EXTERNAL_REDIS=1
    REDIS_HOST=192.168.2.2
    REDIS_PORT=6379
    REDIS_PASSWORD=PASSWORD

    ## Compose 项目设置, 如果 192.168.250.0/24 网段与你现有网段冲突, 请修改然后重启 JumpServer
    COMPOSE_PROJECT_NAME=jms
    COMPOSE_HTTP_TIMEOUT=3600
    DOCKER_CLIENT_TIMEOUT=3600
    DOCKER_SUBNET=192.168.250.0/24

    ## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
    USE_IPV6=0
    DOCKER_SUBNET_IPV6=2001:db8:10::/64

    ## Nginx 配置, USE_LB=1 表示开启, 为 0 的情况下, HTTPS_PORT 定义不生效
    HTTP_PORT=80
    SSH_PORT=2222
    RDP_PORT=3389

    USE_LB=0
    HTTPS_PORT=443

    ## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
    USE_TASK=1

    ## XPack, USE_XPACK=1 表示开启, 开源版本设置无效
    USE_XPACK=0

    # Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
    # SESSION_COOKIE_AGE=86400
    SESSION_EXPIRE_AT_BROWSER_CLOSE=true

    # Koko Lion XRDP 组件配置
    CORE_HOST=http://core:8080

    # 额外的配置
    CURRENT_VERSION=

  • ./jmsctl.sh install
     

  • ./jmsctl.sh start 启动  restart 重启  stop 停止 upgrade 更新

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 搭建 JumpServer 堡垒机 的相关文章

  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 在键盘热插拔上加载模块

    我正在尝试学习如何为 Linux 系统编写模块和驱动程序 类似于this https unix stackexchange com questions 120839 usb kernel module does not load on de
  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • 使用 C++ 输出字符串覆盖 Linux 终端上的最后一个字符串

    假设我有一个命令行程序 有没有办法让我说的时候 std cout lt lt stuff 如果我不做std cout lt lt n 在另一个之间std cout lt lt stuff 东西的另一个输出将覆盖同一行上的最后一个东西 清理行
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 如何在 Linux 中使用单行命令获取 Java 版本

    我想通过单个命令获取 Linux 中的 Java 版本 我是 awk 的新手 所以我正在尝试类似的事情 java version awk print 3 但这不会返回版本 我将如何获取1 6 0 21从下面的Java版本输出 java ve
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b

随机推荐

  • 【线性代数】向量组的线性相关性

    文章目录 向量组及其线性组合 一 向量 二 线性表示 1 线性组合的定义 2 线性表示的定义 3 线性表示的充要条件 三 向量组等价 1 向量组等价定义 2 向量组线性表示的充要条件 3 向量组等价的充要条件 4 向量组线性表示的必要条件
  • 如何设计企业节点的『工业互联网标识解析系统』

    一 星火 链网 体系架构 星火 链网 以节点形式进行组织互联互通 其中包括三类节点 超级节点 骨干节点 业务节点 其底层采用 1 N 主从链群架构 支持同构和异构区块链接入主链 在全国重点区域部署 星火 链网 超级节点 作为国家链网顶层 提
  • Waffle使用初体验

    一 什么是Waffle Waffle是什么呢 我们直接看其文档上的介绍 Waffle is a library for writing and testing smart contracts Sweeter simpler and fast
  • 主要进行OGRE引擎和shader

    今天 老大告诉我 只要把GLSL进行就行了 其余不用管 那就与OGRE相结合 轮流进行即可 看看引擎架构 搞搞shader
  • HDC即将开始,有哪些亮点值得期待?

    鸿蒙新版本即将发布 开发者该如何紧跟生态热点 最重磅的当然是HarmonyOS 3 1beta版本将于11月4日在华为开发者大会2022 HDC 现场宣布发布 代表着鸿蒙生态新的征程 除正式发布外 最近华为开发者学堂已经上线的一些鸿蒙生态相
  • 北大硕士7年嵌入式学习经验分享

    01 前言 大家现在状态是怎么样的 这几年技术进步怎么样 职场晋升 管理水平有没有提升 欢迎留言 本文内容来自于知乎 觉得内容很不错 分享给大家 下文的我代表的是原作者 作者 梦人亦冷 链接 https www zhihu com ques
  • 数据库查询语句

    数据库查询语句无疑是所有语句中 最重要的语句 经常配合where一起使用 1 最基本的查询 公式1 select from 表名 查看aaa表中的所有数据 SELECT FROM aaa 你说 我不想查看表中所有的数据 我就想查看表中id字
  • Python进行大数据挖掘和分析

    大数据无处不在 在时下这个年代 不管你喜欢与否 在运营一个成功的商业的过程中都有可能会遇到它 什么是大数据 大数据就像它看起来那样 有大量的数据 单独而言 你能从单一的数据获取的洞见穷其有限 但是结合复杂数学模型以及强大计算能力的TB级数据
  • 中国大陆网站TOP100

    1 新浪新闻中心 包括即日的国内外不同类型的新闻与评论 人物专题 图库 BR www sina com cn 2 Baidu com 全球最大中文搜索引擎 向人们提供简单 可依赖的信息获取方式 BR www baidu com 3 搜狐 资
  • VMware Vsphere-下

    18 创建资源池和vAPPs 主机右击可以看到 新建资源池 资源池里可以指定资源池所消耗的物理的cpu和内存 份额 预留 限制 资源池里面可以放虚拟机 资源池的作用 可以将几台虚拟机放进一个池 限制资源 这样就不会出现一个虚拟机抢占过多资源
  • vue3知识点:Suspense组件

    文章目录 五 新的组件 3 Suspense 案例 完整代码 本人其他相关文章链接 五 新的组件 3 Suspense 等待异步组件时渲染一些额外内容 让应用有更好的用户体验 使用步骤 第1步 异步引入组件 import defineAsy
  • 记录移动开发初探——用uniApp+sqlite仿XyKey实现密码管理记事本

    写在前面 最近刚准备上手移动开发 本着想要多端可用的原则 了解到了uniApp 大致扫完一遍文档 基本可以算是vue 微信小程序原生 对我来说基本0难度可直接进入开发 因此想着索性做一款简单的app来做更加深入的了解 就在这时候 朋友给我推
  • 在vscode中做实验出现的bug......

    1 python如何调用opencv中的saliency模块 如果你已经安装了opencv python的库 但是调用cv2 saliency方法时出现了如下的报错 module cv2 saliency has no attribute
  • (数据库链接池)spring内容复习7月16日笔记

    2023 07 16数据库连接池 数据库连接池是个容器 负责分配 管理数据库连接对象 Connection 它允许应用程序重复使用一个现有的数据库链接 而不是在重新建立一个 而且释放空闲时间超过最大空闲时间的链接 来避免因为没有释放链接而引
  • unity 设置image透明度_Unity透明效果-透明度测试

    在之前的记录中已经知道了透明度测试的原理 本节主要就在Unity中通过透明度测试实现透明效果进行实践 原理回顾 透明度测试采用一种 非舍即留 的机制 即 若某片元的透明度不满足条件 通常小于某个阈值 则舍弃 否则就按照不透明物体去处理 也就
  • unity 多人同屏处理

    一 把fbx的Optimize GameObject勾选上 会优化你模块的面数 不过好像有可能会引起别的问题 优化后和代码上的mesh数据对不上造成bug 二 由于每个sinnedmesh会产生一个drawcall 所以多人同屏时就会卡 针
  • SED系列教程

    1 易百 Sed教程 http www yiibai com sed sed branches html
  • vi指令的基本使用

    一 vi的基本概念 基本上vi可以分为三种状态 分别是命令模式 command mode 插入模式 Insert mode 和底行模式 last line mode 各模式的功能区分如下 1 命令行模式command mode 控制屏幕光标
  • unexpected EOF while parsing是什么意思

    unexpected EOF while parsing 意思是在解析的过程中遇到了意外的文件结束符 这通常表示程序的代码有语法错误 导致程序无法正常运行 这个错误的具体原因可能有很多 比如 在字符串中使用了单引号或双引号 但没有正确地将它
  • Linux 搭建 JumpServer 堡垒机

    跳板机概述 跳板机就是一台服务器 开发或运维人员在维护过程中首先要统一登录到这台服务器 然后再登录到目标设备进行维护和操作 跳板机缺点 没有实现对运维人员操作行为的控制和审计 使用跳板机的过程中还是会出现误操作 违规操作导致的事故 一旦出现