JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。
JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web
Terminal 方案,交互界面美观、用户体验好。
JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。
改变世界,从一点点开始。
开源: 零门槛,线上快速获取和安装;
分布式: 轻松支持大规模并发访问;
无插件: 仅需浏览器,极致的 Web Terminal 使用体验;
多云支持: 一套系统,同时管理不同云上面的资产;
云端存储: 审计录像云端存储,永不丢失;
多租户: 一套系统,多个子公司和部门同时使用;
多应用支持: 数据库,Windows远程应用,Kubernetes。
身份认证 | 登录认证 | 资源统一登录与认证 |
---|---|---|
Authentication | LDAP/AD认证 | |
RADIUS 认证 | ||
OpenID 认证(实现单点登录) | ||
CAS 认证 (实现单点登录) | ||
钉钉认证(扫码登录) | ||
企业微信认证 (扫码登录) | ||
MFA认证 | MFA 二次认证(Google Authenticator) | |
RADIUS 二次认证 | ||
登录复核 | 用户登录行为受管理员的监管与控制 | |
登录限制 | 用户登录来源 IP 受管理员控制(支持黑/白名单) | |
账号管理Account | 集中账号 | 管理用户管理 |
系统用户管理 | ||
统一密码 | 资产密码托管 | |
自动生成密码 | ||
自动推送密码 | ||
密码过期设置 | ||
批量改密 | 定期批量改密 | |
多种密码策略 | ||
多云纳管 | 对私有云、公有云资产自动统一纳管 | |
收集用户 | 自定义任务定期收集主机用户 | |
密码匣子 | 统一对资产主机的用户密码进行查看、更新、测试操作 | |
授权控制Authorization | 多维授权 | 对用户、用户组、资产、资产节点、应用以及系统用户进行授权 |
资产授权 | 资产以树状结构进行展示 | |
资产和节点均可灵活授权 | ||
节点内资产自动继承授权 | ||
子节点自动继承父节点授权 | ||
应用授权 | 实现更细粒度的应用级授权 | |
MySQL 数据库应用、RemoteApp 远程应用 | ||
动作授权 | 实现对授权资产的文件上传、下载以及连接动作的控制 | |
时间授权 | 实现对授权资源使用时间段的限制 | |
特权指令 | 实现对特权指令的使用(支持黑白名单) | |
命令过滤 | 实现对授权系统用户所执行的命令进行控制 | |
文件传输 | SFTP 文件上传/下载 | |
文件管理 | 实现 Web SFTP 文件管理 | |
工单管理 | 支持对用户登录请求行为进行控制 | |
访问控制 | 登录资产复核(通过 SSH/Telnet 协议登录资产) | |
命令执行复核 | ||
组织管理 | 实现多租户管理与权限隔离 | |
安全审计Audit | 操作审计 | 用户操作行为审计 |
会话审计 | ||
在线会话内容监控 | ||
在线会话内容审计 | ||
历史会话内容审计 | ||
录像审计 | 支持对 Linux、Windows 等资产操作的录像进行回放审计 | |
支持对 RemoteApp、MySQL 等应用操作的录像进行回放审计 | ||
指令审计 | 支持对资产和应用等操作的命令进行审计 | |
文件传输 | 可对文件的上传、下载记录进行审计 | |
数据库审计Database | 连接方式 | 命令方式 |
Web UI方式 | ||
支持的数据库 | MySQL | |
Oracle | ||
Mariadb | ||
PostgreSQL | ||
功能亮点 | 语法亮点 | |
SQL格式化 | ||
支持快捷键 | ||
支持选中执行 | ||
SQL历史查询 | ||
支持页面创建 DB, TABLE | ||
会话审计 | 命令记录 | |
录像回放 |
说明:全新安装的Linux,需要连接互联网,使用root用户执行
外置环境要求
JumpServer 所在机器的 CPU 需要至少 2核
JumpServer 所在机器的 内存 需要至少 4G
推荐使用外置 数据库 和 Redis, 方便日后扩展升级
关闭防火墙和SELinux
推荐使用外置数据库和Redis.
DB | Version | Cache | Version |
---|---|---|---|
MySQL | >=5.7 | Redis | >=6.0 |
MariaDB | >=10.2 |
systemctl stop frewalld 关闭防火墙
setenforce 0 关闭selinux
容器镜像服务
区域 | 镜像仓库地址 | 配置文件 /opt/jumpserver/config/config.txt |
---|---|---|
华北-北京一 | swr.cn-north-1.myhuaweicloud.com | DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com |
华北-北京四 | swr.cn-north-4.myhuaweicloud.com | DOCKER_IMAGE_PREFIX=swr.cn-north-4.myhuaweicloud.com |
华南-广州 | swr.cn-south-1.myhuaweicloud.com | DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com |
华东-上海 | swr.cn-east-3.myhuaweicloud.com | DOCKER_IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com |
这个命令是由官方文档提供,对于网络等各方面要求比较高,还有对GitHub的访问限制等,可能无法成功,笔者多次尝试后无法成功,因此不推荐使用此命令。
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.10.2/quick_start.sh | bash
配置文件/opt/jumpserver/config/config.txt
安装
cd /opt/jumpserver-installer-v2.10.2
./jmsctl.sh install
官方提供的命令由于网络等各方面的限制可能执行不成功,因此我采用先将shell脚本下载到本地在上传到服务器的方式进行部署。
shell脚本
#!/bin/bash
function prepare_check() {
isRoot=`id -u -n | grep root | wc -l`
if [ "x$isRoot" != "x1" ]; then
echo -e "[\033[31m ERROR \033[0m] Please use root to execute the installation script (请用 root 用户执行安>装脚本)"
exit 1
fi
processor=`cat /proc/cpuinfo| grep "processor"| wc -l`
if [ $processor -lt 2 ]; then
echo -e "[\033[31m ERROR \033[0m] The CPU is less than 2 cores (CPU 小于 2核,JumpServer 所在机器的 CPU 需>要至少 2核)"
exit 1
fi
memTotal=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
if [ $memTotal -lt 3750000 ]; then
echo -e "[\033[31m ERROR \033[0m] Memory less than 4G (内存小于 4G,JumpServer 所在机器的内存需要至少 4G)"
exit 1
fi
}
function install_soft() {
if command -v dnf > /dev/null; then
if [ "$1" == "python" ]; then
dnf -q -y install python2
ln -s /usr/bin/python2 /usr/bin/python
else
dnf -q -y install $1
fi
elif command -v yum > /dev/null; then
elif command -v yum > /dev/null; then
yum -q -y install $1
elif command -v apt > /dev/null; then
apt-get -qqy install $1
elif command -v zypper > /dev/null; then
zypper -q -n install $1
elif command -v apk > /dev/null; then
apk add -q $1
else
echo -e "[\033[31m ERROR \033[0m] Please install it first (请先安装) $1 "
exit 1
fi
}
function prepare_install() {
for i in curl wget zip python; do
command -v $i &>/dev/null || install_soft $i
done
}
function get_installer() {
echo "download install script to /opt/jumpserver-installe (开始下载安装脚本到 /opt/jumpserver-installe)"
Version=$(curl -s 'https://api.github.com/repos/jumpserver/installer/releases/latest' | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
if [ ! "$Version" ]; then
echo -e "[\033[31m ERROR \033[0m] Network Failed (请检查网络是否正常或尝试重新执行脚本)"
fi
cd /opt
if [ ! -d "/opt/jumpserver-installer-$Version" ]; then
wget -qO jumpserver-installer-$Version.tar.gz https://github.com/jumpserver/installer/releases/download/$Version/jumpserver-installer-$Version.tar.gz || {
rm -rf /opt/jumpserver-installer-$Version.tar.gz
echo -e "[\033[31m ERROR \033[0m] Failed to download jumpserver-installer (下载 jumpserver-installer 失败, 请检查网络是否正常或尝试重新执行脚本)"
exit 1
}
tar -xf /opt/jumpserver-installer-$Version.tar.gz -C /opt || {
rm -rf /opt/jumpserver-installer-$Version
echo -e "[\033[31m ERROR \033[0m] Failed to unzip jumpserver-installe (解压 jumpserver-installer 失败, 请检查网络是否正常或尝试重新执行脚本)"
exit 1
}
rm -rf /opt/jumpserver-installer-$Version.tar.gz
fi
}
function config_installer() {
cd /opt/jumpserver-installer-$Version
JMS_Version=$(curl -s 'https://api.github.com/repos/jumpserver/jumpserver/releases/latest' | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
if [ ! "$JMS_Version" ]; then
echo -e "[\033[31m ERROR \033[0m] Network Failed (请检查网络是否正常或尝试重新执行脚本)"
exit 1
fi
sed -i "s/VERSION=.*/VERSION=$JMS_Version/g" /opt/jumpserver-installer-$Version/static.env
./jmsctl.sh install
}
function main(){
prepare_check
prepare_install
get_installer
config_installer
}
main
安装
cd /opt/jumpserver-installer-v2.10.2
./jmsctl.sh install
安装完成后,可以使用如下命令启动,然后访问
./jmsctl.sh start
其它一些管理命令
./jmsctl.sh stop 停止
./jmsctl.sh restart 重启
./jmsctl.sh backup 支持
./jmsctl.sh upgrade 升级
./jmsctl.sh --help 更多帮助
web访问
http://192.168.17.167:8080
https://192.168.17.167:8443
默认用户: admin 默认密码: admin
SSH/SFTP访问
ssh [email protected] -p2222
sftp -P2222 [email protected]
更多信息
官网: https://www.jumpserver.org/
官方文档: https://docs.jumpserver.org/
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.10.2/jumpserver-installer-v2.10.2.tar.gz
tar -xf jumpserver-installer-v2.10.2.tar.gz
cd jumpserver-installer-v2.10.2
cat config-example.txt
由于官网下载tar包过慢,这里提供百度网盘的下载链接地址
链接:https://pan.baidu.com/s/1PE-Cm_NkM4E2ILgQaoySxA
提取码:9u2m
配置文件说明
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 安装配置
DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
VOLUME_DIR=/opt/jumpserver
DOCKER_DIR=/var/lib/docker
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR
## 使用外置 MySQL 配置
USE_EXTERNAL_MYSQL=0
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver
## 使用外置 Redis 配置
USE_EXTERNAL_REDIS=0
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
## Compose 项目设置
COMPOSE_PROJECT_NAME=jms
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=192.168.250.0/24
## IPV6
DOCKER_SUBNET_IPV6=2001:db8:10::/64
USE_IPV6=0
## Nginx 配置,这个 Nginx 是用来分发路径到不同的服务
HTTP_PORT=80
HTTPS_PORT=443
SSH_PORT=2222
## LB 配置, 这个 Nginx 是 HA 时可以启动负载均衡到不同的主机
USE_LB=0
LB_HTTP_PORT=80
LB_HTTPS_PORT=443
LB_SSH_PORT=2222
## Task 配置
USE_TASK=1
## XPack
USE_XPACK=0
# Mysql 容器配置
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=jumpserver
# Core 配置
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true
# KoKo Lion 配置
CORE_HOST=http://core:8080
安装并启动
./jmsctl.sh install 安装
./jmsctl.sh start 启动
除使用系统的组件外,还可以使用外部组件经行负载均衡部署,详情请参考官方文档:https://jumpserver.readthedocs.io/zh/master/install/setup_by_lb/
必须设置才能使用与邮件相关的功能
不可以同时勾选 使用SSL 和 使用TLS
更多使用方法请参考官方文档