Docker搭建一款开源的堡垒机系统

文摘   2024-12-18 08:00   广东  
系统介绍
JumpServer是一款广受欢迎的开源堡垒机,也是符合4A(认证Authentication、授权Authorization、账号Account、审计Auditing)规范的专业运维安全审计系统。

| 主要功能

集中管理:所有的远程连接都通过JumpServer来进行,方便集中管理和审计。

安全性:通过双因素认证、加密传输、访问控制等技术,增强远程访问的安全性。

日志审计:所有用户的操作都可以被记录下来,便于审计和追溯。

权限管理:根据用户角色进行精细化的权限控制,确保只有授权用户才能访问特定资源。

统一访问管理:堡垒机作为一个统一的访问管理平台,可以控制多个服务器的访问,避免直接暴露各个服务器的登录入口。

身份验证:支持LDAP/AD认证、CAS认证、Passkey认证、RADIUS认证、单点系统对接(OpenID、OAuth认证、SAML2认证)、SSO对接、扫码登录(企业微信、钉钉和飞书)等多种认证方式。

资产管理:支持管理SSH Linux/Unix/网络设备、Windows、数据库(MySQL/Oracle/SQLServer/PostgreSQL等)、Kubernetes等各种类型的资产。

组织管理:实现多组织管理与权限隔离。

工单管理:支持对用户登录行为进行控制,支持资产授权工单申请,支持二级审批流程。

    | 核心组件

        Core:JumpServer的核心组件,其他组件依赖此组件启动。

        Lina:JumpServer的web页面组件。

        Luna:web终端组件,相当于网页版的xshell。

        Koko:服务于类Unix资产平台的组件,通过SSH、Telnet协议提供字符型连接。

        Lion:服务于Windows资产平台的组件,用于Web端访问Windows资产。

        XRDP:服务于RDP协议组件,通过JumpServer Client方式访问如Windows 2000、XP等系统的资产。

        Razor:也是服务于RDP协议组件,JumpServer Client默认使用Razor组件访问Windows资产。

        Magnus:服务于数据库的组件,用于通过客户端代理访问数据库资产。

        Kael:服务于GPT资产平台的组件,用于纳管ChatGPT资产。

        Chen:服务于数据库的组件,用于通过Web GUI方式访问数据库资产。

        Celery:处理异步任务的组件,用于执行JumpServer相关的自动化任务。

        Video:专门处理Razor组件和Lion组件产生的录像的格式转换工作,将产生的会话录像转化为MP4格式。

        如需了解更多信息,可以访问其官方网站或查阅相关的技术文档。

        官方文档

        https://docs.jumpserver.org/zh/v4/
        Docker镜像
        https://hub.docker.com/r/jumpserver/jms_all
        GitHub地址
        https://github.com/jumpserver/jumpserver

        安装&使用

        ———

        Docker部署操作步骤:安装Docker、编写配置文件、启动容器。操作系统为腾讯云服务器Ubuntu。

        | 安装docker

        sudo apt updatesudo apt install -y docker.io docker-compose

        编写配置文件docker-compose.yml

        version: '3'services:  mysql:    image: mysql:5.7    container_name: jms_mysql    hostname: jms_mysql    restart: always    environment:      MYSQL_ROOT_PASSWORD'123456'      MYSQL_USER'jumpserver'      MYSQL_PASSWORD'123456'      MYSQL_DATABASE'jumpserver'      MYSQL_CHARSET'utf8mb4'      MYSQL_COLLATION'utf8mb4_unicode_ci'      TZ'Asia/Shanghai'      LANG'en_us.UTF-8'    command: ["mysqld""--character-set-server=utf8mb4""--collation-server=utf8mb4_unicode_ci"]    volumes:      - /data/docker/jumpserver/mysql/data:/var/lib/mysql      - /data/docker/jumpserver/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf    ports:      - "3306:3306"    networks:      - jumpserver  redis:    image: redis:6.2.6    container_name: jms_redis    hostname: jms_redis    ports:      - "6379:6379"    volumes:      - /data/docker/jumpserver/redis/data:/data      - /data/docker/jumpserver/redis/conf/redis.conf:/etc/redis/redis.conf    command: redis-server /etc/redis/redis.conf    networks:      - jumpserver  jms_all:    image: jumpserver/jms_all    container_name: jms_all    ports:      - "80:80"      - "2222:2222"    environment:      SECRET_KEY${SECRET_KEY}      BOOTSTRAP_TOKEN${BOOTSTRAP_TOKEN}      LOG_LEVELERROR      DB_HOST: jms_mysql      DB_PORT3306      DB_USER: jumpserver      DB_PASSWORD123456      DB_NAME: jumpserver      REDIS_HOST: jms_redis      REDIS_PORT6379      REDIS_PASSWORD123456    privileged: true    depends_on:      - mysql      - redis    volumes:      - /data/docker/jumpserver/core/data:/opt/jumpserver/data      - /data/docker/jumpserver/koko/data:/opt/koko/data      - /data/docker/jumpserver/lion/data:/opt/lion/data      - /data/docker/jumpserver/kael/data:/opt/kael/data      - /data/docker/jumpserver/chen/data:/opt/chen/data      - /data/docker/jumpserver/web/log:/var/log/nginx    networks:      - jumpservernetworks:  jumpserver:    driver: bridge

        启动容器

        sudo docker-compose up -d
        服务启动后,在浏览器访问 http://IP即可。用户名和密码分别是admin与ChangeMe
        关注公众号,为你推荐更多原创干货!

        更多内容也可看笔者出版图书

        —————————

        幼稚猿
        分享各类技术资讯和教程,出版多本IT图书《Django+Vue系统架构设计与实现》、《Golang+Vue.js商城项目实战》等
         最新文章