Linux 搭建 JumpServer 堡垒机
Posted 笨小孩@GF 知行合一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 搭建 JumpServer 堡垒机相关的知识,希望对你有一定的参考价值。
- 跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;
- 堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
- 总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
- Jumpserver 概述:
Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为互联网企业提供了认证,授权,审计,自动化运维等功能。JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产 - 官方网址:https://www.jumpserver.org/
- github 项目网址:https://github.com/jumpserver/jumpserver/releases
- JumpServer 2.12.1 环境要求:
-
注意这里的全新安装的 Linux
-
快速开始
仅需两步快速安装 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.1.63,设置完成后,并点击“提交”按钮。
- 邮件设置
- 根据自己的实际情况填写,完成点击提交保存
- 用户管理
添加用户组。
用户名即 Jumpserver 登录账号。用户组是用于资产授权,当某个资产对一个用户组授权后,这个用户组下面的所有用户就都可以使用这个资产了。角色用于区分一个用户是管理员还是普通用户。
点击用户管理 —> 查看用户组 —> 创建
- 添加用户
点击用户管理 —> 用户列表 —> 创建用户
其中,名称是真实姓名,用户名即 Jumpserver 登录账号。
- 登陆邮箱查看
- 勾选我同意 ,提交
- 扩展:
MFA,Multi-FactorAuthentication,即多因子认证,是一种简单有效的安全认证方法。它能够在用户名和密码之外,再增加一层保护。MFA 设备,又叫动态口令卡或 Token 卡,是提供这种安全认证方法的设备。 - MFA 设备如:
硬件 MFA 设备
硬件 MFA 设备如下图所示,正面的 6 位数动态安全码 30 秒更新一次,背面有该硬件 MFA 设备的序列号。
- 编辑资产树添加节点
使用 admin 用户登录 jumpserver,添加系统用户---特权用户
- 资产管理----资产列表---右键 创建节点
- 点击提交后,大约1分钟左右会看到硬件信息,如果看不到请检查管理用户的用户名和密钥是否正确以及该管理用户是否能使用 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 系统用户
-
创建应用
-
应用授权
-
测试
-
手动安装
- 准备工作:
- 安装 mariadb redis
Redis | >= 6.0 |
MariaDB | >= 10.2 |
- 首先安装配置 mariadb
- 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';
flush privileges;
grant all on jumpserver.* to 'jumpserver'@'%' identified by 'PASSWORD'; - systemctl restart mariadb
- 安装 redis
- yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
查看 源文件
yum repolist all
使用 remi repository 源安装 Redis
yum --enablerepo=remi install -y redis - 启动 Redis
- systemctl enable redis.service --now
- 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/
## 安装配置, amd64 默认使用华为云加速下载, arm64 请注释掉 DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
# DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
VOLUME_DIR=/opt/jumpserver
DOCKER_DIR=/var/lib/docker
ECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR
# MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置数据库, 请输入正确的 MySQL 信息
USE_EXTERNAL_MYSQL=1
DB_HOST=192.168.2.19
DB_PORT=3306
DB_USER=jumpserver
DB_PASSWORD=
DB_NAME=jumpserver
# Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置数据库, 请输入正确的 Redis 信息
USE_EXTERNAL_REDIS=1
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
EDIS_PASSWORD=
## Compose 项目设置, 如果 192.168.250.0/24 网段与你现有网段冲突, 请修改然后重启 JumpServer
OMPOSE_PROJECT_NAME=jms
OMPOSE_HTTP_TIMEOUT=3600
OCKER_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
TTPS_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
ESSION_EXPIRE_AT_BROWSER_CLOSE=true
# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080
# 额外的配置
URRENT_VERSION= - ./jmsctl.sh install
./jmsctl.sh start
以上是关于Linux 搭建 JumpServer 堡垒机的主要内容,如果未能解决你的问题,请参考以下文章