JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。
JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。
JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。
改变世界,从一点点开始。
特色优势
- 开源: 零门槛,线上快速获取和安装;
- 分布式: 轻松支持大规模并发访问;
- 无插件: 仅需浏览器,极致的 Web Terminal 使用体验;
- 多云支持: 一套系统,同时管理不同云上面的资产;
- 云端存储: 审计录像云端存储,永不丢失;
- 多租户: 一套系统,多个子公司和部门同时使用;
- 多应用支持: 数据库,Windows远程应用,Kubernetes。
功能列表
1.身份验证Authentication
- 登录认证:资源统一登录和认证、LDAP 认证、支持 OpenID,实现单点登录
- 多因子认证:MFA( GoogleAuthenticator)
2.账号管理Account
- 集中账号管理:管理用户管理、系统用户管理
- 统一密码管理:资产密码托管、自动生成密码、密码自动推送、密码过期设置
- 批量密码变更(X-PACK):定期批量修改密码、生成随机密码
- 多云环境的资产纳管(XPACK):对私有云、公有云资产统一纳管
3.授权控制Authorization
- 资产授权管理:资产树、资产或资产组灵活授权、节点内资产自动继承授权
- RemoteApp(X-PACK): 实现更细粒度的应用级授权
- 组织管理(X-PACK): 实现多租户管理,权限隔离
- 多维度授权: 可对用户、用户组或系统角色授权
- 指令限制: 限制特权指令使用,支持黑白名单
- 统一文件传输: SFTP 文件上传/下载
- 文件管理: Web SFTP 文件管理
4.安全审计 Audit
- 会话管理:在线会话管理、历史会话管理
- 录像管理:Linux 录像支持、Windows 录像支持
- 指令审计:指令记录
- 文件传输审计:上传/下载记录审计
页面展示
安装配置
在官网有安装文档,有兴趣的朋友可以直接根据官网文档进行操作:
- 极速部署
- 负载均衡
- 升级文档
- 迁移文档
- 使用 IPv6
- 安全建议
极速部署是最快捷的。
文档地址:
代码语言:txt复制https://docs.jumpserver.org/zh/master/
下面根据网上一个写的特别详细的帖子给大家分享一下部署的步骤,文末有参考链接。
部署环境:
官方环境要求:
- 硬件配置: 2 个 CPU 核心, 4G 内存, 50G 硬盘(最低)
- 操作系统: Linux 发行版 x86_64
- Python = 3.6.x
- Mysql Server ≥ 5.6
- Mariadb Server ≥ 5.5.56
- Redis
服务器准备:
代码语言:txt复制192.168.99.101 jumpserver 2c-4G
192.168.99.102 数据库/Redis 2C-2G
192.168.99.103 web 服务器 A 1C-1G
192.168.99.104 web 服务器 B 1C-1G
部署 MySQL 服务:
1.外置数据库要求:
- mysql 版本需要大于等于 5.6
- mariadb 版本需要大于等于 5.5.6
- 数据库编码要求 uft8
2.导入 MySQL 镜像:
代码语言:txt复制docker load -i mysql-5.6.44.tar.gz
3.mysqld.cnf 配置文件
将容器中的 MySQL 配置文件在宿主机通过-v 挂载到容器中
代码语言:txt复制mkdir -p /etc/mysql/mysql.conf.d
vim /etc/mysql/mysql.conf.d/mysqld.cnf
代码语言:txt复制# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
## This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
4.mysql.cnf 配置文件:
代码语言:txt复制mkdir -p /etc/mysql/conf.d/
vim /etc/mysql/conf.d/mysql.cnf
代码语言:txt复制[mysql]
default-character-set=utf8
5.创建数据目录:
数据保存在宿主机, 实现数据与容器分离,当容器运行异常时也可以在启动一个新的容器直接使用宿主机的数据,从而保证业务的正产运行。
代码语言:txt复制mkdir /data/mysql -p
6.运行 MySQL 容器:
代码语言:txt复制docker run -it -d -p 3306:3306
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
-v /data/mysql:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD="123"
mysql:5.6.44
7.验证数据库
代码语言:txt复制apt install mysql-client
mysql -uroot -p123 -h192.168.99.22
8.验证数据库编码
代码语言:txt复制mysql> show variables like "%character%";
mysql> show variables like "%collation%";
9.创建 jumpserver 数据库
代码语言:txt复制mysql> create database jumpserver default charset 'utf8';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'abc123';
启动数据库授权密码不能为纯数字, 负责报错如下
10.确认 jumpserver 用户有权限访问数据库
代码语言:txt复制mysql -ujumpserver -pabc123 -h192.168.99.22
部署 Redis 服务
1.下载镜像并安装
代码语言:txt复制docker pull redis:4.0.14
docker run -it -d -p 6379:6379 redis:4.0.14
2.验证 Redis 访问
代码语言:txt复制apt install redis
redis-cli -h 192.168.99.22
部署 jumpserver
1.下载镜像
代码语言:txt复制docker pull jumpserver/jms_all:1.4.8
#或已经下载镜像后导入
docker load -i jumpserver-jms_all_1.4.8.tar.gz
2.生成随机加密秘钥和初始化 token。
代码语言:txt复制# 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
cZPi5K3utSGiwpK786wbrdZl7UqP0KzfszPBF3NqoATelylqzJ
# 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
yaOz6fQzY0R8vIta
3.建 Jumpserver 容器
代码语言:txt复制docker run --name jms_all
-v /opt/jumpserver:/opt/jumpserver/data/media
-p 80:80
-p 2222:2222
-e SECRET_KEY=cZPi5K3utSGiwpK786wbrdZl7UqP0KzfszPBF3NqoATelylqzJ
-e BOOTSTRAP_TOKEN=yaOz6fQzY0R8vIta
-e DB_HOST=192.168.99.22
-e DB_PORT=3306
-e DB_USER='jumpserver'
-e DB_PASSWORD="abc123"
-e DB_NAME=jumpserver
-e REDIS_HOST=192.168.99.22
-e REDIS_PORT=6379
-e REDIS_PASSWORD=
jumpserver/jms_all:1.4.8
4.容器启动完成
5.验证数据库内容
jumpserver 使用
登录 web。默认账户 admin,密码 admin
用户和组管理
用户管理–用户列表界面,管理创建用户,用户相当于是公司的运维人员
1.创建用户 xiaoming
Multi-Factor Authentication (MFA) 遵循基于时间的一次性密码
2.设置用户密码,创建是时候无法设置密码,创建完后再来设置密码
3.组管理
4.验证普通用户的登录
资产管理
1.创建系统用户
资产管理–管理用户界面,创建系统用户, 此用户用于推送到后端服务器自动创建, 如果此账户已经存在于后端服务器则不会再重新创建, 而是直接使用, 后期jumpserver 的普通账户(zhangxiaoming)会使用此账户登陆并管理资产信息(服务器),推荐的账户名称: mysql nginx tomcat www
2.创建管理用户
资产管理–系统用户界面, 创建管理用户, 该管理用户用于 jumpserver 登陆服务器统计资产信息以及推送系统用户的时候使用, 所以此用户一定是一个可以登录的具备超级权限的用户(如后端服务器的 root 账户或者具有 root 权限的其他用户)。
3.创建资产:
资产就是物理机 虚拟机等
4.资产状态:
点击主机名进入,测试资产可连接性
授权管理
1.创建授权规则,将资产授权给某个 jumpserver 的登陆账户,即第一步创建的账户:
2.授权给用户
查看被授权的用户
1.登录普通用户xiaoming
2.进入web终端
资产分组
1.新建节点
2.添加主机到节点
会话管理
会话管理-命令记录、历史会话里面可以看到用户操作过并且已经退出的录像记录。
使用 jumpserver 普通账户登录,并测试后端服务器的连接与使用