Linux云计算 |【第五阶段】PROJECT3-DAY1

主要内容:

跳板机(堡垒机)的概念、部署JumpeServer

一、跳板机(堡垒机)的概念

跳板机(Jump Server 或 Bastion Host)是一种网络安全设备或服务器,也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,用于管理和控制对内部网络的访问。它通常位于公共网络和内部网络之间,充当一个中间节点,所有外部用户必须首先通过跳板机才能访问内部网络资源。跳板机的主要目的是增强网络安全性,减少直接暴露在公共网络上的内部资源;也是系统管理员或运维人员常用的操作平台之一。

跳板机的主要功能和用途

1)访问控制:

  • 跳板机可以集中管理用户的访问权限,确保只有经过授权的用户才能访问内部网络资源
  • 通过跳板机,管理员可以实施更严格的访问控制策略,例如多因素认证(MFA)、IP 白名单等

日志记录和审计:

  • 跳板机可以记录所有用户的操作日志,包括登录时间、操作内容、访问的资源等
  • 这些日志可以用于审计和追踪,帮助管理员监控和分析用户的活动,及时发现异常行为

安全隔离:

  • 跳板机将内部网络与外部网络隔离,减少内部网络直接暴露在公共网络上的风险
  • 即使跳板机被攻击,内部网络仍然受到保护,因为攻击者无法直接访问内部资源

会话管理:

  • 跳板机可以管理用户的会话,例如限制会话时长、强制断开会话等
  • 通过会话管理,可以防止用户长时间保持连接,减少潜在的安全风险

网络代理:

  • 跳板机可以作为网络代理,帮助用户访问内部网络资源
  • 通过代理,用户可以隐藏真实的 IP 地址,增加匿名性和安全性

优势:

① 增强安全性:

通过集中管理和控制访问,减少内部网络直接暴露在公共网络上的风险。

提供多层次的安全防护,如访问控制、日志记录、会话管理等。

② 简化管理:

集中管理用户的访问权限和操作日志,简化管理员的工作。

提供统一的访问入口,方便用户访问内部资源。

③ 提高效率:

通过网络代理和会话管理,提高用户访问内部资源的效率。

提供实时的监控和审计功能,帮助管理员及时发现和处理问题。

跳板机最核心的功能是以本机作为跳板来操作远程设备,较为普遍地是通过ssh协议实现远程管理;使用单位一般会自己开发或选择性地使用以下自动化运维工具:puppet、saltstack、ansible、rex

二、JumpServer

JumpServer 文档:https://jumpserver.readthedocs.io/zh/master/

JumpServer 是一款开源的堡垒机,由中国的开发者团队开发,使用 GNU GPL v2.0 开源协议。它是符合 4A 规范(认证 Authentication、授权 Authorization、账号 Account、审计 Audit)的运维安全审计系统。JumpServer 使用 Python 和 Django 框架进行开发,遵循 Web 2.0 规范,提供了美观的交互界面和良好的用户体验。

页面展示:

① 自动部署

默认会安装到 /opt/jumpserver-installer-v2.12.0 目录

bash 复制代码
# 配置文件 /opt/jumpserver/config/config.txt
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.12.0/quick_start.sh | bash

② 手动部署

bash 复制代码
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.12.0/jumpserver-installer-v2.12.0.tar.gz
tar -xf jumpserver-installer-v2.12.0.tar.gz
cd jumpserver-installer-v2.12.0
cat config-example.txt

由于JumpServer是基于容器镜像的服务,需要安装镜像(华为云提供)


Jump server 安装部署示例:

注意:官网已更新版本,请参考新版本部署方式

配置清单

|------------|---------------|-----------|------------|---------|
| 主机名称 | IP地址 | 最低配置 | 软件名称 | 版本 |
| jumpserver | 192.168.1.251 | 2CPU,4G内存 | jumpserver | v2.10.2 |

步骤1:采购1台云主机,并绑定弹性公网IP

步骤2:环境准备

① 安装云主机需要软件

bash 复制代码
[root@jump-server ~]# yum install -y curl wget zip python firewalld

② 开启路由转发

bash 复制代码
[root@jumpserver ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@jumpserver ~]# sysctl -p
...
net.ipv4.ip_forward = 1

③ 安装Docker软件,并开启服务

拷贝 kubernets/docker/docker-ce-18.06.3.ce-3.el7.x86_64.rpm软件包到jumpserver主机上

bash 复制代码
[root@jump-server ~]# yum install -y ./docker-ce-18.06.3.ce-3.el7.x86_64.rpm
[root@jump-server ~]# systemctl enable --now docker firewalld

步骤3:下载JumpServer所需软件包

① 下载umpserver-installer-v2.10.2.tar.gz

bash 复制代码
[root@jump-server ~]# curl -sSOL https://github.com/jumpserver/installer/releases/download/v2.10.2/jumpserver-installer-v2.10.2.tar.gz

② 下载docker-compose-Linux-x86_64,并指定文件名:docker-compose

docker-composr可以启动多个容器

bash 复制代码
curl -sSL https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64 -o docker-compose

③ 使用md5sum校验

bash 复制代码
[root@jump-server ~]# md5sum docker-compose jumpserver-installer-v2.10.2.tar.gz 
bec660213f97d788d129410d047f261f  docker-compose
223415d3cd9777a58fc0dc71c0b579cf  jumpserver-installer-v2.10.2.tar.gz

④ 拷贝文件到/usr/bin/下,并授予755权限

bash 复制代码
[root@jump-server ~]# cp docker-compose /usr/bin/
[root@jump-server ~]# chmod 755 /usr/bin/docker-compose

步骤4:下载JumpServer所需镜像服务

① 设置国内加速源来安装镜像

bash 复制代码
[root@jump-server ~]# DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com

[root@jump-server ~]# for i in jumpserver/redis:6-alpine jumpserver/mysql:5 
jumpserver/nginx:alpine2 jumpserver/luna:v2.10.2 jumpserver/core:v2.10.2 
jumpserver/koko:v2.10.2 jumpserver/lion:v2.10.2 jumpserver/lina:v2.10.2;do
docker pull ${i}; 
done

步骤5:启动JumpServer服务

① 解压JumpServer软件包到/opt目录下

bash 复制代码
[root@jump-server ~]# tar -zxf jumpserver-installer-v2.10.2.tar.gz -C /opt/
[root@jump-server ~]# cd /opt/jumpserver-installer-v2.10.2/
[root@jump-server jumpserver-installer-v2.10.2]# vim static.env
export VERSION="v2.10.2"

② 启动安装脚本,完成初始化配置

bash 复制代码
[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh install
语言 Language  (cn/en)  (default cn): 

1. 检查配置文件
配置文件位置: /opt/jumpserver/config
/opt/jumpserver/config/config.txt  [ √ ]
/opt/jumpserver/config/nginx/lb_ssh_server.conf  [ √ ]
完成

2. 配置 Nginx
配置文件: /opt/jumpserver/config/nginx/cert
/opt/jumpserver/config/nginx/cert/server.crt  [ √ ]
/opt/jumpserver/config/nginx/cert/server.key  [ √ ]
完成

3. 备份配置文件
备份至 /opt/jumpserver/config/backup/config.txt.2021-05-27_20-09-29
完成

>>> 安装配置 Docker
1. 安装 Docker
完成

2. 配置 Docker
是否需要自定义 docker 存储目录, 默认将使用目录 /var/lib/docker? (y/n)  (默认为 n): 
完成

3. 启动 Docker
完成

>>> 加载 Docker 镜像
[jumpserver/redis:6-alpine]
[jumpserver/mysql:5]
[jumpserver/nginx:alpine2]
[jumpserver/luna:v2.10.2]
[jumpserver/core:v2.10.2]
[jumpserver/koko:v2.10.2]
[jumpserver/lion:v2.10.2]
[jumpserver/lina:v2.10.2]

>>> 安装配置 JumpServer
1. 配置网络
是否需要支持 IPv6? (y/n)  (默认为 n): 
完成

2. 配置加密密钥
SECRETE_KEY:     ZTAwOWYzNDctMjA1ZS00NzM4LThlZDMtYjEwYmY3NDJkZjA4
BOOTSTRAP_TOKEN: ZTAwOWYzNDctMjA1
完成

3. 配置持久化目录
是否需要自定义持久化存储, 默认将使用目录 /opt/jumpserver? (y/n)  (默认为 n): 
完成

4. 配置 MySQL
是否使用外部 MySQL? (y/n)  (默认为 n): 
完成

5. 配置 Redis
是否使用外部 Redis? (y/n)  (默认为 n): 
完成

>>> 安装完成了
1. 可以使用如下命令启动, 然后访问
./jmsctl.sh start

2. 其它一些管理命令
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
更多还有一些命令, 你可以 ./jmsctl.sh --help 来了解

3. Web 访问
http://192.168.1.251:8080
https://192.168.1.251:8443
默认用户: admin  默认密码: admin

4. SSH/SFTP 访问
ssh admin@192.168.1.251 -p2222
sftp -P2222 admin@192.168.1.251

5. 更多信息
我们的官网: https://www.jumpserver.org/
我们的文档: https://docs.jumpserver.org/

③ 启动服务脚本,查看状态

bash 复制代码
[root@jump-server jumpserver-installer-v2.10.2]# systemctl restart docker
[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh start
Creating network "jms_net" with driver "bridge"
Creating jms_redis  ... done
Creating jms_mysql  ... done
Creating jms_core   ... done
Creating jms_lina   ... done
Creating jms_lion   ... done
Creating jms_koko   ... done
Creating jms_celery ... done
Creating jms_luna   ... done
Creating jms_nginx  ... done
[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh status
Name           Command                    State          Ports
---------------------------------------------------------------------------
jms_celery    ./entrypoint.sh start task  Up (healthy)   8070/tcp, 8080/tcp
jms_core      ./entrypoint.sh start web   Up (healthy)   8070/tcp, 8080/tcp
jms_koko      ./entrypoint.sh             Up (healthy)   0.0.0.0:2222->2222/tcp, 5000/tcp
jms_lina      /docker-entrypoint.sh ngin  Up (healthy)   80/tcp
jms_lion      /usr/bin/supervisord        Up (healthy)   4822/tcp
jms_luna      /docker-entrypoint.sh ngin  Up (healthy)   80/tcp
jms_mysql     docker-entrypoint.sh --cha  Up (healthy)   3306/tcp, 33060/tcp
jms_nginx     sh -c crond -b -d 8 && ngi  Up (healthy)   0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp
jms_redis     docker-entrypoint.sh redis  Up (healthy)   6379/tcp

步骤6:验证服务

根据安装脚本的完成提示,浏览器访问JumpServer页面,账号密码admin(重新修改密码)

浏览器访问:http://139.159.245.160:8080/

Jump Server 新版本部署示例:

1)安装方式

根据实机环境选择安装方式,支持 在线安装 和 离线安装,安装过程可以参考 安装演示视频

2)环境要求

OS/Arch Architecture Linux Kernel Soft Requirement Minimize Hardware
linux/amd64 x86_64 >= 4.0 wget curl tar gettext iptables python 2Core/8GB RAM/60G HDD
linux/arm64 aarch64 >= 4.0 wget curl tar gettext iptables python 2Core/8GB RAM/60G HDD
linux/loong64 loongarch64 == 4.19 wget curl tar gettext iptables python 2Core/8GB RAM/60G HDD
bash 复制代码
apt-get update
apt-get install -y wget curl tar gettext iptables

JumpServer 需要使用 MySQL 或 MariaDB 存储数据,使用 Redis 缓存数据,如果希望使用自建数据库或云数据库请参考此处的要求,支持 数据库 SSL 连接Redis SSL 连接

bash 复制代码
1)MySQL

create database jumpserver default charset 'utf8';
mysql> show create database jumpserver;
+------------+---------------------------------------------------------------------+
| Database   | Create Database                                                     |
+------------+---------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+------------+---------------------------------------------------------------------+
1 row in set (0.00 sec)


2)MariaDB

create database jumpserver default charset 'utf8';
MariaDB> show create database jumpserver;
+------------+-----------------------------------------------------------------------+
| Database   | Create Database                                                       |
+------------+-----------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8mb3*/ |
+------------+-----------------------------------------------------------------------+
1 row in set (0.001 sec)

3)一键安装

支持主流 Linux 发行版本(基于 Debian / RedHat,包括国产操作系统)。Gentoo / Arch Linux 请通过 源码安装

bash 复制代码
root@localhost:/opt#
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.28.8/quick_start.sh | bash

████████████████████████████████████████ 100%
[Success]: download install script to /opt/jumpserver-installer-v2.28.8
[Info]: Start executing the installation script.
[Info]: In an automated script deployment, note the message prompts on the screen.
████████████████████████████████████████ 100%
[Success]: The Installation is Complete.

For more commands, you can enter jmsctl --help to view help information.

4)标准部署

bash 复制代码
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.28.8/jumpserver-installer-v2.28.8.tar.gz
tar -xf jumpserver-installer-v2.28.8.tar.gz
cd jumpserver-installer-v2.28.8

# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt

# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## Docker 镜像配置
# DOCKER_IMAGE_MIRROR=1

## 安装配置
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

##  MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

##  Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24

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

## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100

## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key

## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m

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

# 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
JUMPSERVER_ENABLE_FONT_SMOOTHING=True

## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}

# 额外的配置
CURRENT_VERSION=

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

安装完成后配置文件 /opt/jumpserver/config/config.txt

bash 复制代码
cd /opt/jumpserver-installer-v2.28.8

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

5)离线部署

离线包解压需要 tar 命令, 参考 环境要求 手动安装

OS/Arch Architecture Linux Kernel Offline Name
linux/amd64 x86_64 >= 4.0 jumpserver-offline-installer-v2.28.8-amd64-7.tar.gz
linux/arm64 aarch64 >= 4.0 jumpserver-offline-installer-v2.28.8-arm64-7.tar.gz
linux/loong64 loongarch64 == 4.19 jumpserver-offline-installer-v2.28.8-loong64-7.tar.gz
bash 复制代码
cd /opt
tar -xf jumpserver-offline-installer-v2.28.8-amd64-7.tar.gz
cd jumpserver-offline-installer-v2.28.8-amd64-7

# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt

# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## Docker 镜像配置
# DOCKER_IMAGE_MIRROR=1

## 安装配置
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

##  MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

##  Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24

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

## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100

## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key

## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m

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

# 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
JUMPSERVER_ENABLE_FONT_SMOOTHING=True

## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}

# 额外的配置
CURRENT_VERSION=

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

安装完成后配置文件 /opt/jumpserver/config/config.txt

bash 复制代码
cd jumpserver-offline-release-v2.28.8-amd64-7

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

小结:

本篇章节为**【第五阶段】PROJECT3**的学习笔记,也是本专栏的最后一篇学习笔记,希望这篇笔记可以让您初步了解到 跳板机概念、部署JumpeServer。


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。

相关推荐
码农君莫笑3 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
dessler19 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka
zhy2956319 分钟前
【DOCKER】基于DOCKER的服务之DUFS
运维·docker·容器·dufs
无为之士24 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子33 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213834 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭40 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉41 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei44 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh1 小时前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux