堡垒机能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范,从而不断提升IT内控的合规性。

一、 JumpServer 安装
官方说明:https://docs.jumpserver.org/zh/master/install/setup_by_fast/
架构

(一)基于 Docker 部署
官方文档:
https://github.com/jumpserver/Dockerfile/tree/master/allinone
https://docs.jumpserver.org/zh/master/install/docker_install/
1.安装 Docker 环境
bash
apt update && apt -y install docker.io
配置一下源
bash
cat > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
systemctl restart docker
拉取jumpserver的镜像
bash
docker pull jumpserver/jms_all:v4.10.2
创建自定义网络,防止网络地址冲突,同时可以直接使用域名
bash
docker network create --subnet 172.30.0.0/16 jumpserver-net
2.mysql环境
MySQL8.0需要修改验证插件
bash
root@ubuntu11:~ cat > mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
启动MySQL容器
bash
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d -v ./mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf --restart always --network jumpserver-net registry.cn-beijing.aliyuncs.com/wangxiaochun/mysql:8.0.29-oracle
看一下是否成功修改
bash
root@ubuntu11:~ docker exec -it mysql sh
sh-4.4# mysql -uroot -p123456
mysql> select * from mysql.user\G

3.启动redis并修改密码
bash
docker run -d --name redis --restart always --network jumpserver-net registry.cn-beijing.aliyuncs.com/wangxiaochun/redis:7.2.5 redis-server --requirepass 123456
测试
bash
root@ubuntu11:~ docker exec -it redis sh

4.生成相关key和token
bash
cat > key.sh << 'EOF'
#!/bin/bash
# 生成或读取SECRET_KEY(50位大小写字母+数字随机字符串)
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=$SECRET_KEY"
else
echo "SECRET_KEY=$SECRET_KEY"
fi
# 生成或读取BOOTSTRAP_TOKEN(30位大小写字母+数字随机字符串)
if [ ! "$BOOTSTRAP_TOKEN" ]; then
BOOTSTRAP_TOKEN=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 30)
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN"
else
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN"
fi
EOF
root@ubuntu11:~# bash key.sh
SECRET_KEY=PZhMhBCm5JNSDsfYd5DygkbhoRg5GQNwBrkdA5o004kNYFRWQA
BOOTSTRAP_TOKEN=ESXzI07Y3DIskxdD7xAyhP9XEOHdoK
bash
docker run --name jms_all -d \
--network jumpserver-net \
-p 80:80 \
-p 2222:2222 \
-p 30000-30100:30000-30100 \
-e SECRET_KEY=PZhMhBCm5JNSDsfYd5DygkbhoRg5GQNwBrkdA5o004kNYFRWQA \
-e BOOTSTRAP_TOKEN=ESXzI07Y3DIskxdD7xAyhP9XEOHdoK \
-e LOG_LEVEL=ERROR \
-e DB_ENGINE=mysql \ #新版必需要求,默认postgreSQL
-e DB_HOST=mysql \ #官网上是IP地址,我做了自定义网络所以直接用容器名就可以
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=123456 \
-e DB_NAME=jumpserver \
-e REDIS_HOST=redis \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=123456 \
--privileged=true \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-v /opt/jumpserver/kael/data:/opt/kael/data \
-v /opt/jumpserver/chen/data:/opt/chen/data \
-v /opt/jumpserver/web/log:/var/log/nginx \
jumpserver/jms_all:v4.10.2

默认用户名:admin
默认密码:ChangeMe
(二)基于Docker compose
官方的是一下内容,可以根据实际需求改,比如上方做了自定义网络,需要修改一下默认的DB_ENGINE=mysql
bash
# https://github.com/jumpserver/Dockerfile/blob/v4.1.0/allinone/docker-compose.yml
services:
mysql:
image: mariadb:10.6
container_name: jms_mysql
restart: always
environment:
TZ: ${TZ:-Asia/Shanghai}
MARIADB_ROOT_PASSWORD: ${DB_PASSWORD:-Np2qgqtiUayA857GpuVI0Wtg}
MARIADB_DATABASE: ${DB_NAME:-jumpserver}
healthcheck:
test: "mysql -h127.0.0.1 -uroot -p$MARIADB_ROOT_PASSWORD -e 'SHOW DATABASES;'"
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
volumes:
- ${VOLUME_DIR:-./data}/mariadb/data:/var/lib/mysql
networks:
- net
redis:
image: redis:7.0
container_name: jms_redis
restart: always
command: redis-server --requirepass ${REDIS_PASSWORD:-KoJq1TDu1d5HwfxgJ4QTbzQt}
environment:
TZ: ${TZ:-Asia/Shanghai}
REDIS_PASSWORD: ${REDIS_PASSWORD:-KoJq1TDu1d5HwfxgJ4QTbzQt}
healthcheck:
test: "redis-cli -h 127.0.0.1 -a $$REDIS_PASSWORD info Replication"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
volumes:
- ${VOLUME_DIR:-./data}/redis/data:/data
networks:
- net
jumpserver:
image: jumpserver/jms_all:${VERSION:-latest}
build:
context: .
dockerfile: Dockerfile
container_name: jms_all
privileged: true
restart: always
environment:
TIME_ZONE: ${TZ:-Asia/Shanghai}
TZ: ${TZ:-Asia/Shanghai}
SECRET_KEY: ${SECRET_KEY:-vYneAbsXUhe4Bghneednl7nfwLwatTmhNQmvjYOIG25Ofzghk}
BOOTSTRAP_TOKEN: ${BOOTSTRAP_TOKEN:-K1ffdfLSIK8SV2Pj6Vaxoiv8kuaw1JK}
LOG_LEVEL: ${LOG_LEVEL:-ERROR}
DB_HOST: ${DB_HOST:-mysql}
DB_PORT: ${DB_PORT:-3306}
DB_USER: ${DB_USER:-root}
DB_PASSWORD: ${DB_PASSWORD:-Np2qgqtiUayA857GpuVI0Wtg}
DB_NAME: ${DB_NAME:-jumpserver}
REDIS_HOST: ${REDIS_HOST:-redis}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-KoJq1TDu1d5HwfxgJ4QTbzQt}
DOMAINS: ${DOMAINS:-}
ports:
- ${HTTP_PORT:-80}:80/tcp
- ${SSH_PORT:-2222}:2222/tcp
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: "curl -fsl http://localhost/api/health/ > /dev/null"
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
volumes:
- ${VOLUME_DIR:-./data}/core/data:/opt/jumpserver/data
- ${VOLUME_DIR:-./data}/koko/data:/opt/koko/data
- ${VOLUME_DIR:-./data}/lion/data:/opt/lion/data
- ${VOLUME_DIR:-./data}/chen/data:/opt/chen/data
- ${VOLUME_DIR:-./data}/web/data/logs:/var/log/nginx
- ${VOLUME_DIR:-./data}/web/data/download:/opt/download
networks:
- net
networks:
net:
(三)官方脚本一键安装
官方脚本实现基于docker安装umpserver:
https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/online_install/
二、 JumpServer 常见功能
(一)创建JumpServer用户和组
JumpServer 支持三种登录用户角色
系统管理员
普通用户
系统审计员
1.创建用户组和用户


创建一下用户组

用户可以开启MFA相当于二次验证手机令牌

(二)创建资产并关联特权用户和普通用户
1. 通过帐号模版创建系统用户中特权用户(管理用户)


2.通过帐号模版创建系统普通用户(系统用户中普通用户)

3.创建资产并关联特权用户和普通用户


jumpserver会调用ansible去自动建立dev和root-dev账号如果没有的话

10.0.0.10主机上查看
bash
root@ubuntu10:~# cat /etc/passwd
......
dev:x:1001:1001::/home/dev:/bin/bash
建立10.0.0.11的资产,直接使用副本功能

bash
root@ubuntu11:~ cat /etc/passwd
......
dev:x:1001:1001::/home/dev:/bin/bash
同理根据架构规划创建测试机的账号

(三)授权用户使用资产
1.开发授权



测试和生产都是一样的

每个组都只能看到自己的主机
(四)数据库授权

1.在10.0.0.17主机上安装docker用容器方式启动MySQL
bash
root@ubuntu17:~ apt update && apt install docker.io -y
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=123456 registry.cn-beijing.aliyuncs.com/wangxiaochun/mysql:8.0.29-oracle
2.创建数据库的系统用户
在账号模版创建,这里的用户名和密码与数据库的一样

创建数据库资产(应用)

授权


(五)会话管理
会话管理可以实现查看当前在线的会话命令记录、历史会话过去的执行过的命令,也可以强制将用户踢出
可以同步看到xiaoming在做什么


离线的历史回放需要下载一个播放器:https://github.com/jumpserver/videoPlayer/releases
1.命令过滤器
先建立一个组

再选择不能使用的成员


2.资产的批量导出和导入

在模版文件中填写相关内容