堡垒机jumpserver

堡垒机能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范,从而不断提升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.资产的批量导出和导入

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

相关推荐
EverydayJoy^v^6 分钟前
Linux Shell 高级编程(3)——awk
linux·运维·shell
Eine .23 分钟前
LVS负载均衡
运维·负载均衡·lvs
2401_8589368824 分钟前
【Linux 编程】深入理解 POSIX 线程(pthread)核心接口与分离属性
运维·服务器
山岚的运维笔记28 分钟前
SQL Server笔记 -- 第86章:查询存储
笔记·python·sql·microsoft·sqlserver·flask
小贺儿开发29 分钟前
Unity3D 自动化物流分拣模拟
运维·科技·unity·自动化·人机交互·传送带·物流分拣
纤纡.37 分钟前
从 WHERE 到 OFFSET:SQL 基本查询的核心逻辑
linux·数据库·sql
果壳~1 小时前
Docker镜像离线迁移:从下载到本地部署完整实战指南
运维·docker·容器
feng68_1 小时前
Web服务基础理论
linux·运维·服务器·web服务
打码人的日常分享1 小时前
双碳智慧园区建设方案(PPT)
大数据·运维·网络·云计算·制造
许愿OvO1 小时前
Tomcat部署与Nginx整合实战
运维·nginx·tomcat