• Jumpserver堡垒机部署(完整过程)


    文章目录

    一、跳板机、堡垒机

    1.跳板机

    跳板机就是一台服务器,运维人员在维护过程中需要统一登陆到这台服务器,然后登录到目标设备进行维护和操作。
    跳板机的优缺点
    优点
    集中式对服务器进行管理
    缺点
    没有实现对于运维人员的行为操作监控和审计,使用跳板机的过程中,还有可能在服务器上进行错误操作,一旦出现错误的操作,很难定位到实施人

    仅仅实现了服务器登录安全,但是没有实现对于运维人员的行为操控和审计

    2.堡垒机(为什么需要堡垒机)

    请添加图片描述
    堡垒机是从跳板机的概念演变过来的,跳板及没有实现对运维人员操作行为的控制和审计,使用跳板机过程中还是会有误操作、违规操作导致的此操作事故、一旦出现操作事故很难快速定位原因和责任人。人们逐渐认识到跳板机的不足,进而需要更新、更好的安全技术理念来实现运维操作管理。需要一种能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范来不断提升IT内控的合规性产品

    2.1堡垒机的作用

    1.核心系统运维和安全审计管理

    2.过滤和拦截非法请求访问,恶意攻击,拒绝不合法命令,进行审计和监控,报警和责任追踪

    3.报警、记录、分析、处理

    2.2堡垒机的运维思想

    • 审计也只是时候的行为,审计能够发现问题以及责任人,但是无法防止问题的发生
    • 只是实现了实现严格监控,才能够源头上解决服务器误操作的事故
    • 堡垒机能够创建系统账号,该系统账号功能是属于角色区分的作用,但是也无法确认该账号的执行人

    2.3堡垒机的核心功能

    1.单点登录功能(比如我们有很多服务器,我们可以通过一个账号进行登录管理)

    2.账号管理功能(堡垒机可以创建账号和密码,支持统一的账号管理策略,能够对所有的账号进行集中式管理,还可以对帐号进行监控)

    3.身份认证(堡垒机提供一个统一的认证接口,对用户进行认证设置)

    4.资源授权(用户登录了某台服务器之后,具体做了哪些操作,什么时间,这台机器的信息是什么)

    5.访问控制(对不同用户进行不同策略的绑定,比如某一个账号是专门管理什么服务器)

    6.操作审计(用户通过堡垒机登录了某一台服务器之后,堡垒机可以记录该用户在这台服务器上做了那些操作)

    2.4堡垒机应用的场景

    1.多个用户使用同一个账号(多用户同时登陆)

    2.一个用户使用多个账号

    3.缺少统一的权限管理平台,难以实现高力度的命令权限控制(对于账号权限有更细致的管控)

    4.对于传统的网络设备无法对运维人员的远程连接命令进行加密审计

    2.5企业角度看堡垒机

    通过更加细致的力度对企业IT资产设备进行管理,保证企业的IT设备资产安全,可靠运行,降低人为操作的风险,避免风险性,保证企业的资源资金安全

    2.6管理角度来看堡垒机

    运维人员只需要记录堡垒机的账号密码,一次登录,即可快捷访问多个管理设备,无须记忆多个账号密码,提升工作效率,且能够对服务器最大化的安全性操作。

    2.7堡垒机核心架构

    请添加图片描述
    总结
    堡垒机能有效的降低运维操作的风险,使得运维操作的管理更为简单,更加安全,就是解决运维权限混乱,操作无审计

    二、Jumpserver服务的部署

    Jumpserver采用组件式开发的一种形式
    请添加图片描述
    LINA:就是页面的展现

    Luna:通过网页的形式进入命令行,对资产进行管理

    CORE:核心,在一个网页可以提供的功能

    CoCo/KoKo:提供网页的命令行操作

    Guacamole:让Jumpserver支持额外的插件功能
    Jumpserver官网https://docs.jumpserver.org/zh/master/

    1.在线安装

    仅需两步快速安装 Jumpserver

    1. 准备一台 2核4G (最低)且可以访问互联网的 64 位 Linux 主机;
    2. 以 root 用户执行如下命令一键安装 JumpServer
    curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.25.2/quick_start.sh | bash
    
    • 1

    2.手动部署安装

    Linux服务器准备
    硬件配置:2cpu、4G内存,50G以上硬盘
    需要软件如下
    Jumpserver是由phthon语言开发的,旧的jumpserver是由python2开发的,新版本是python3开发的,因此想要运行Jumpserver需要
    python=3.6
    mysql server 必须大于5.6
    redis 缓存型数据库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.环境准备,关闭防火墙及核心防护

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    vim /etc/selinux/config
    
    • 1
    • 2
    • 3
    • 4

    请添加图片描述

    2.配置yum源,准备好阿里云的yum源

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    • 1
    • 2

    请添加图片描述

    yum clean all    #清空原有的yum缓存
    yum makecache    #生成新的yum缓存,便于加速软件下载
    
    • 1
    • 2

    3.安装系统初始化所需的软件

    yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
    
    • 1

    4.安装jumpserver运行所需的依赖环境

    yum -y install git python-pip gcc automake autoconf python-devel vim sshpass lrzsz readline-devel zlib zlib-devel openssl openssl-devel
    
    • 1

    5.部署数据库MySQL5.6

    5.1获取数据库MySQL5.6
    wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.49-1.el7.x86_64.rpm-bundle.tar
    tar xvf MySQL-5.6.49-1.el7.x86_64.rpm-bundle.tar -C ./mysql
    
    • 1
    • 2
    5.2解压数据包

    请添加图片描述

    5.3使用yum工具安装一系列的rpm包
    yum localinstall ./*     #使用yum工具在当前目录下找到所有rpm包进行自动安装,并且自动搜索依赖关系
    
    • 1
    5.4修改mysql的配置文件
    vim /etc/my.cnf
    
    • 1

    请添加图片描述
    启动MySQL

    systemctl start mysql     #启动mysql数据库
    
    • 1
    5.5对mysql进行初始化

    mysql5.6版本在安装完毕后会默认生成一个root的随机密码

    cat ~/.mysql_secret      #查看数据库初始的密码
    
    • 1

    请添加图片描述

    5.6修改原有的密码,登录数据库

    注意!密码不能为全数字,后面python程序进行数据库迁移时,会出现TypeError: connect() argument 3 must be str, not int报错,需要重新修改数据库密码为字母和数字就可以解决

    mysqladmin -uroot -pxQ6cdEbXVVbbnZ_N password ngs123    #修改密码
    
    • 1

    请添加图片描述

    mysql -uroot -pngs123     #登录数据库
    
    • 1

    请添加图片描述

    5.7登录数据库后创建运行jumpserver用户信息

    创建jumpserver数据库,让此数据库支持中文

    create database jumpserver default charset 'utf8' collate 'utf8_bin';
    
    • 1

    创建用户(@表示占位符,%允许用户在任何地方登录,指定密码为ngs123)

    create user 'jumpserver'@'%'IDENTIFIED BY 'ngs123';
    
    • 1

    请添加图片描述

    5.8给该用户授予访问数据库的权限

    给jumpserver数据库授予所有权限给jumpserver用户

    grant all privileges on jumpserver.* to 'jumpserver'@'%' identified by 'ngs123';
    
    • 1

    请添加图片描述
    刷新配置

    flush privileges;
    
    • 1

    请添加图片描述
    至此,mysql部署完成

    6.部署python3.6

    jumpserver这个服务在启动的时候有一个后台程序,这个程序是python开发的,所以准备好python环境,然后才能运行代码

    由于新版jumpserver是python3.6开发的,因此我们需要准备好python3.6的环境

    6.1下载python3.6的源代码
    wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
    
    • 1

    请添加图片描述

    6.2解压python3.6安装包,并编译安装

    解压

    tar -xvf Python-3.6.10.tar
    
    • 1

    请添加图片描述
    进行编译安装

    指定工作目录

    ./configure --prefix=/usr/local/python3
    
    • 1

    请添加图片描述

    make && make install
    
    • 1

    请添加图片描述

    6.3配置python3的环境变量,可以直接使用python
    echo "PATH="/usr/local/python3/bin:$PATH"" >> /etc/profile      #添加环境
    source /etc/profile       #刷新环境
    echo $PATH
    
    • 1
    • 2
    • 3

    请添加图片描述

    python3.6     #输入python3.6就可以直接进入
    
    • 1

    请添加图片描述

    6.4创建python3的虚拟环境

    为什么需要创建虚拟环境?

    虚拟环境存在的意义只是为了将项目独立,使用虚拟环境的优势就是,该项目使用的第三方工具都需要在虚拟环境中使用pip命令安装,并且安装好的工具不影响系统已有的工具,同时系统中的其他项目也无法调用虚拟环境中安装的工具

    假如一个项目需要使用python2运行,而另一个项目使用python3运行,就会导致两个项目无法同时使用,虚拟环境就可以为这两个项目配置不同的运行环境,这样两个项目就可以同时运行

    解决一个机器运行多个项目的问题,创建多个python3解释器就可以

    1.安装虚拟环境工具

    python是一个解释器,还有一个工具叫做pip3,这是给python安装模块的

    python3程序代码在运行的时候必须也下载一些软件模块才能运行,使用pip3安装

    pip3 install virtualenv
    
    • 1

    请添加图片描述
    请添加图片描述
    2使用虚拟环境工具再创建一个python3解释器,用来允许代码

    cd /usr/local
    virtualenv --python=python3 jmp_venvl  #指定python版本创建一个虚拟环境命名为jmp_venvl
    
    • 1
    • 2

    此时你的服务器上就有两个python3解释器

    本体就是:/jumpserver/python3/bin/python3

    虚拟解释器就是:/usr/local/jmp_venvl/bin/python3

    6.5激活虚拟python3.6

    默认修改了环境变量

    source /usr/local/jmp_venel/bin/activate
    
    • 1

    请添加图片描述
    在虚拟环境中,将路径放到前面,环境变量查找顺序是从前往后的
    请添加图片描述
    可以使用which命令查看当前环境
    请添加图片描述

    deactivate    #可以退出当前虚拟环境
    
    • 1

    退出虚拟环境变成当前环境请添加图片描述

    7.部署redis数据库

    mysql关系型数据库,磁盘型数据库,数据是以文件形式,存储在磁盘上,可以持久化长期存储

    redis内存型数据库,缓存型数据库,读取速度快,加速用户速度。

    7.1安装redis数据库

    可以直接yum安装

    yum -y install redis
    
    • 1

    请添加图片描述

    7.2启动redis数据库
    systemctl start redis          #启动
    netstat -natp |grep redis      #查看redis服务状态 
    
    • 1
    • 2

    请添加图片描述

    redis -cli    #进入数据库,默认连接本地地址和6379端口,IP和端口就定位了一台服务器的服务
    
    • 1

    验证数据库是否正常可以输入ping,回复为PONG就表示正常
    请添加图片描述

    8.部署jumpserver服务

    一个后台程序,基本上都是需要依赖于数据库才能运行,后台程序在启动的时候,代码就会去连接数据库,保证数据库正确启动,且可以正确连接,否则后台程序是起不来的

    8.1获取jumpserver程序的代码
    wget https://github.com/jumpserver/jumpserver/releases/download/v2.1.0/jumpserver-v2.1.0.tar.gz
    
    • 1
    8.2解压,安装运行jumpserver系统必须的依赖组件
    tar -zxvf jumpserver-v2.1.0.tar.gz     #解压
    ln -s /opt/jumpserver/jumpserver-v2.1.0 /opt/jumpserver/jumpserver      #创建软连接便于使用
    
    • 1
    • 2

    请添加图片描述
    安装依赖关系

    yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop  iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel       #防止遗漏,我们再安装一次
    
    • 1
    8.3安装运行jumpserver所需要的模块

    由python开发的程序,必须安装该程序使用到的一些模块才能正确运行

    cd /opt/jumpserver/jumpserver/requirements
    cat requirements.txt     #该文件中的内容就是所需要的模块名及版本号
    
    
    • 1
    • 2
    • 3

    请添加图片描述
    请添加图片描述
    注意!!!

    安装jumpserver模块,先激活虚拟环境,然后再安装
    激活虚拟环境

    source /usr/local/jmp_venvl/bin/activate    #激活虚拟环境
    
    • 1

    请添加图片描述
    安装模块

    pip3 install -r /opt/jumpserver/jumpserver/requirements/requirements.txt
    
    • 1

    因为这里需要安装的模块比较多,下载速度较慢,我们可以更改pip3的下载源

    mkdir ~/.pip
    touch ~/.pip/pip.conf
    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    
    • 1
    • 2
    • 3
    • 4

    更改完下载源之后就发现下载速度有了质的提升,下载地址也变成了阿里云
    请添加图片描述

    8.4修改jumpserver程序运行的配置文件
    cd /opt/jumpserver/jumpserver/
    config_example.yml    #就是jumpserver的配置文件
    cp config_example.yml config.yml    #复制一份配置文件
    
    • 1
    • 2
    • 3

    请添加图片描述
    请添加图片描述

    grep -E -v "^#|^$" config.yml    #过滤出文件中有利的信息
    
    • 1

    请添加图片描述
    生成密钥

    SECRET_KEY:     
    BOOTSTRAP_TOKEN:
    
    • 1
    • 2
    if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` ; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
    
    
    • 1
    • 2

    请添加图片描述

    if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
    
    • 1

    请添加图片描述

    vim config.yml    #将生成的两个密钥输入到配置文件中
    
    • 1

    请添加图片描述
    填写数据库的密码

    请添加图片描述
    请添加图片描述
    这样配置文件就修改完成了

    9.对python程序进行数据库迁移

    jump这个程序是由python的框架django开发而来的,必须得先进行数据库迁移,生成库表得信息,才能运行程序

    注意!!!所有操作必须在虚拟环境中进行

    9.1查看数据库
    mysql -uroot -p       #进入到数据库
    
    • 1

    请添加图片描述

    9.2jumpserver后台程序,数据库迁移命令
    cd /opt/jumpserver/jumpserver/apps/
    文件中有一个manage.py
    
    
    • 1
    • 2
    • 3

    请添加图片描述

    这个manage.py是python的脚本文件,是python程序后台设置的入口,我们用python3执行这个脚本文件,并加上参数makemigrations
    python3 /opt/jumpserver/jumpserver/apps/manage.py makemigrations
    
    • 1
    • 2

    请添加图片描述

    9.3数据库迁移命令
    python3 /opt/jumpserver/jumpserver/apps/manage.py migrate
    
    • 1

    请添加图片描述

    9.4进入mysql数据库验证数据库中的数据
    mysql -uroot -pngs123
    
    • 1

    请添加图片描述
    数据库迁移完成

    9.5启动jumpserver服务
    cd /opt/jumpserver/jumpserver/
    ls
    找到jms执行文件,这个就是jumpserver的启动文件
    
    • 1
    • 2
    • 3

    请添加图片描述
    启动jumpserver

    /opt/jumpserver/jumpserver/jms start -d
    -d表示后台运行这个程序
    
    • 1
    • 2

    请添加图片描述
    程序正常启动

    ps -ef |grep 14599    查看进程
    -e显示所有进程
    -f做一个更为完整的输出
    
    • 1
    • 2
    • 3

    请添加图片描述
    去浏览器验证

    浏览器输入堡垒机IP加端口

    192.168.226.140:8080即可请添加图片描述
    这个页面看着很不美观

    10.部署koko组件

    实现了SSH Server 和Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口,使用 Paramiko 和 Flask 开发

    koko是用golang变成语言开发的一个组件,和之前的coco组件相比(python开发的)相比而言,性能,效率,系统资源利用率都更高

    10.1下载koko源代码
    wget https://github.com/jumpserver/koko/releases/download/v2.1.0/koko-v2.1.0-linux-amd64.tar.gz
    
    • 1

    请添加图片描述

    10.2解压缩,配置koko软件
    tar zxvf koko-v2.1.0-linux-amd64.tar.gz    #解压 
    chown -R root:root koko-v2.1.0-linux-amd64    #更改权限,使权限最大化
    ln -s /opt/jumpserver/koko-v2.1.0-linux-amd64 /opt/jumpserver/koko    #创建软连接
    
    • 1
    • 2
    • 3

    请添加图片描述

    10.3修改koko配置文件
    cd koko
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2PIA5V9P-1662028752655)(C:\Users\NA\AppData\Roaming\Typora\typora-user-images\1661666764132.png)]

    cp config_example.yml config.yml
    vim config.yml
    
    • 1
    • 2

    请添加图片描述
    将redis相关的注释去掉请添加图片描述
    过滤有用信息

    grep -E -v "^#|^$" /opt/jumpserver/koko/config.yml
    
    • 1

    请添加图片描述

    10.4启动koko程序
    ./koko -d     #后台运行koko
    netstat -natp |grep koko    #查看
    
    • 1
    • 2

    请添加图片描述

    tail /opt/jumpserver/koko/data/logs/koko.log
    #查看日志信息
    
    • 1
    • 2

    请添加图片描述

    11.Guacamole部署

    Apache 跳板机项目,jumpserver使用其组件实现RDP(Remote Desktops)功能,jumpserver 并没有修改其代码而是添加了额外的插件,支持jumpserver调用(RDP就是通过浏览器操控机器,提供远程桌面的功能)

    11.1部署Guacamole组件
    tar zxvf guacamole-v2.1.0.tar.gz
    
    • 1

    请添加图片描述

    cd docker-guacamole-2.1.0/
    
    • 1

    请添加图片描述
    会发现这里面还有很多压缩包,继续进行解压

    tar -zxf guacamole-server-1.2.0.tar.gz
    tar -zxf ssh-forward.tar.gz
    
    • 1
    • 2

    请添加图片描述

    11.2安装依赖环境
    cd guacamole-server-1.2.0/
    
    • 1

    请添加图片描述
    编译安装软件之前,基本上都要把编译环境准备好
    以下网址有说明需要安装哪些依赖环境软件包https://guacamole.apache.org/doc/gug/installing-guacamole.html

    yum -y install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool uuid-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaydio-libs-devel openssl-devel libvorbis-devel libwebp-devel    #安装依赖环境
    
    • 1

    请添加图片描述

    11.3安装FFmpeg工具

    一个在不同格式的多媒体文件之间转换的命令行工具,视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。就是在linux平台用来处理媒体文件,比如音频、视频

    1.先安装epel环境

     yum -y install epel-release
    
    • 1

    请添加图片描述
    2.在线安装ffmpeg一些软件包

    rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
    rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
    
    • 1
    • 2

    请添加图片描述
    请添加图片描述

    yum -y install ffmpeg ffmpeg-devell
    
    • 1

    安装完成请添加图片描述

    ffmpeg -version    #输出安装的信息
    
    • 1

    请添加图片描述

    11.4编译安装guacamole-server
    cd /opt/jumpserver/docker-guacamole-2.1.0/guacamole-server-1.2.0
    ./configure --with-init-dir=/etc/init.d   #编译
    
    • 1
    • 2

    请添加图片描述

    make && make install    #进行编译安装
    
    • 1

    请添加图片描述
    完成编译安装

    11.5部署java开发环境

    因为guacamole是用java开发的,想运行就需要Java开发环境

    yum -y install java-1.8.0-openjdk   #安装Java开发环境
    
    • 1

    请添加图片描述

    11.6创建运行guacamole所需的文件夹
    mkdir -p /config/guacamole /config/guacamole/extensions /config/guacamole/record /config/guacamole/drive && \
    chown daemon:daemon /config/guacamole/record /config/guacamole/drive && \
    cd /config
    
    • 1
    • 2
    • 3
    11.7下载tomcat工具用于运行java项目

    java的程序必须用tomcat工具才能运行

    cd /opt/jumpserver
    
    • 1

    我这里有tomcat的软件包,直接拖进去就可以
    请添加图片描述

    tar zxf apache-tomcat-9.0.65.tar.gz && \
     mv apache-tomcat-9.0.65 tomcat9 && \
     rm -rf /opt/jumpserver/tomcat9/webapps/* && \
     sed -i 's/Connector port="8080"/Connector port="8081"/g' /opt/jumpserver/tomcat9/conf/server.xml && \
     echo "java.util.logging.ConsoleHandler.encoding = UTF-8" >> /opt/jumpserver/tomcat9/conf/logging.properties && \
     ln -sf /opt/jumpserver/docker-guacamole-2.1.0/guacamole-1.0.0.war  /opt/jumpserver/tomcat9/webapps/ROOT.war && \
     ln -sf /opt/jumpserver/docker-guacamole-2.1.0/guacamole-auth-jumpserver-1.0.0.jar  /config/guacamole/extensions/guacamole-auth-jumpserver-1.0.0.jar &&\
     ln -sf /opt/jumpserver/docker-guacamole-2.1.0/root/app/guacamole/guacamole.properties  /config/guacamole/guacamole.properties
    #解压
    
    #改名
    
    #删除tomcat中webapps下动态资源
    
    #更改tomcat默认端口为8081
    
    #添加中文字符集
    
    #创建软连接
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    11.8设置guacamole的运行环境变量
    export JUMPSERVER_SERVER=http://127.0.0.1:8080    
    echo "export JUMPSERVER_SERVER=http://127.0.0.1:8080" >> ~/.bashrc
    export BOOTSTRAP_TOKEN=Y74mVo5GERS3duMv
    echo "export B00TSTRAP_TOKEN=Y74mVo5GERS3duMv" >> ~/.bashrc
    export JUMPSERVER_KEY_DIR=/config/guacamole/keys
    echo "export JUMPSERVER_KEY_DIR=/config/guacamole/keys" >> ~/.bashrc
    export GUACAMOLE_HOME=/config/guacamole
    echo "export GUACAMOLE_HOME=/config/guacamole" >> ~/.bashrc
    export GUACAMOLE_LOG_LEVEL=ERROR
    echo "export GUACAMOLE_LOG_LEVEL=ERROR" >> ~/.bashrc
    export JUMPSERVER_ENABLE_DRIVE=true
    echo "export JUMPSERVER_ENABLE_DRIVE=true" >> ~/.bashrc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    JUMPSERVER_SERVER 指core访问的地址(后台的运行地址)

    BOOTSTARAP_TOKEN一定要改为自己的随机生成的TOKEN密钥

    JUMPSERVER_KEY_DIR 认证成功后key存放目录

    GUACAMOLE_HOME 为guacamole.properties配置文件所在目录

    GUACAMOLE_LOG_LEVEL 为生成日志等级

    JUMPSERVER_ENABLE_DRIVE 为RDP协议挂载共享盘

    11.9启动guacamole服务
    /etc/init.d/guacd start   #启动服务
    
    • 1

    请添加图片描述

    11.10启动tomcat服务
    /opt/jumpserver/tomcat9/bin/startup.sh   #启动tomcat
    
    • 1

    请添加图片描述

    12.LINA组件部署

    LINA属于前端模块,负责页面的展现

    12.1下载lina组件
    wget https://github.com/jumpserver/lina/releases/download/v2.1.0/lina-v2.1.0.tar.gz
    
    • 1

    请添加图片描述

    12.2解压缩
    tar zxvf lina-v2.1.0.tar.gz
    
    • 1

    请添加图片描述

    mv lina-v2.1.0 lina     #改名字方便使用
    useradd -M -s /sbin/nologin nginx   #没有nginx用户,创建一个
    chown -R nginx:nginx lina    #改变属主属组,归nginx管理
    
    • 1
    • 2
    • 3

    请添加图片描述

    13.Luna组件部署

    Luna是Web Terminal 前端,计划前端页面都是由该项目提供,jumpserver 只提供API,不负责后台渲染html等,与CORE协同工作,能够实现浏览器形式的命令行终端

    13.1下载Luna组件
    wget https://github.com/jumpserver/luna/releases/download/v2.1.1/luna-v2.1.1.tar.gz
    
    • 1

    请添加图片描述

    13.2解压缩
    tar -zxvf luna-v2.1.1.tar.gz      #进行解压
    
    • 1

    请添加图片描述

    mv luna-v2.1.1 luna       #改名
    chown -R root:root luna    #给与权限
    
    • 1
    • 2

    请添加图片描述

    14.部署Nginx

    Nginx作用在处理静态文件,以及用于对jumpserver后台程序的反向代理

    14.1进行手动编译安装

    Nginx监控模块_眼下一颗柠檬的博客-CSDN博客

    14.2修改nginx配置文件
    vim /usr/local/nginx/conf/nginx.conf    #编辑配置文件
    
    • 1

    我们只在server块中进行修改

    server {
            listen       80;
            client_max_body_size 100m;  #通过前端上传数据大小的限制
            #以ui开头的URL就去/opt/jumpserver/lina去找index.html文件
            location /ui/ {
                try_files $uri / /index.html;
                alias /opt/jumpserver/lina/;
            }
            
            location /status {
                vhost_traffic_status_display;
                vhost_traffic_status_display_format html;
            }
            #请求luna开头的URL就去/opt/jumpserver/luna下寻找index.html
            location /luna/ {
                try_files $uri / /index.html;
                alias /opt/jumpserver/luna/;   #luna路径,如果修改安装目录,此处需要修改
            }
            
            location /media/ {    #静态文件处理
            add_header Content-Encoding gzip;
            root /opt/jumpserver/jumpserver/data/; #录像位置,如果修改安装目录,此处需要修改
            }
            
            location /static/ {     #静态资源
            root /opt/jumpserver/jumpserver/data/;
            }
            #当我们请求koko程序的时候,会向本地的5000端口发出请求,通过proxy_pass进行反向代理
            location /koko/ {  
            proxy_pass http://localhost:5000;
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;#客户端的IP地址
            proxy_set_header Host $host;#访问服务器的server_name值
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
            }
            #如果要用guacamole功能,就会向本地的8081端口发出请求
            location /guacamole/{
            proxy_pass http://localhost:8081/ ;
            proxy_buffering off;#关闭了方向代理服务器的响应数据的缓存
            proxy_http_version 1.1;
            proxy_set_header upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
            }
            
            location /ws/{
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8070;
            proxy_http_version 1.1;
            proxy_buffering off;
            proxy_set_header upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            }
            
            location /api/{
            proxy_pass http://localhost:8080;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            
            location /core/ {
            proxy_pass http://localhost:8080;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
           #匹配到/重定向到匹配所有URL、/ui起始的URL,last就是再次匹配
            location / {
            rewrite ^/(.*)$ /ui/$1 last;
            }
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    systemctl restart nginx    #重启nginx,使配置文件生效
    
    • 1

    15.访问jumpserver,进行验证

    请添加图片描述
    默认用户名和密码都是admin,进行登录请添加图片描述
    这样,我们堡垒机的部署就完成了
    整个部署过程比较繁琐,需要保证安装软件的依赖环境,保证网络通畅,下载软件包速度较慢,需耐心等待

  • 相关阅读:
    15个增加您的网站流量的Google Search Console(Google搜索控制台)专家技巧
    前端程序员的职业规格
    这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试都可)
    指针进阶---指针数组,数组指针
    Springcloud之Rocketmq发送消息
    1031 Hello World for U
    现有模型的保存与加载(PyTorch版)
    bgp链路聚合配置与详解
    手机桌面待办事项APP推荐
    C#连接到SQL Server数据库
  • 原文地址:https://blog.csdn.net/S314118142/article/details/126646411