Bootstrap

Linux 搭建 JumpServer 堡垒机

  • 跳板机概述

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

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

  • 堡垒机概述:

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

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

  • 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 更新

;