堡垒机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.资产的批量导出和导入

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

相关推荐
开开心心就好1 小时前
开源免费高速看图工具,支持漫画大图秒开
linux·运维·服务器·安全·ruby·symfony·1024程序员节
远方16092 小时前
112-Oracle database 26ai下载和安装环境准备
大数据·数据库·sql·oracle·database
小Pawn爷2 小时前
13.virtualbox安装ubuntu
linux·运维·ubuntu
乾元2 小时前
暗网情报:自动化采集与情感分析在威胁狩猎中的应用
运维·网络·人工智能·深度学习·安全·架构·自动化
袁煦丞 cpolar内网穿透实验室2 小时前
Blackbox Exporter告别用户投诉!从外部揪出服务断连问题: cpolar 内网穿透实验室第 701 个成功挑战
运维·服务器·远程工作·内网穿透·cpolar
砚上有墨2 小时前
问题记录:云平台计算节点内存故障,热迁移失败导致系统重启。
linux·运维·云计算
bloglin999992 小时前
ubuntu系使用root用户登录显示密码错误
linux·运维·ubuntu
ccino .2 小时前
【SSRF漏洞及自动化扫描插件】
运维·自动化
70asunflower2 小时前
[特殊字符] Flameshot 完全指南:Ubuntu 下的终极截图工具
linux·运维·ubuntu