【Docker项目实战】使用Docker部署OneTerm堡垒机

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【8月更文挑战第6天】使用Docker部署OneTerm堡垒机

一、OneTerm介绍

1.1 OneTerm 堡垒机简介

OneTerm堡垒机是一款高度集成的安全管理平台,专为企业提供全面的IT运维安全管理解决方案。它基于4A(认证、授权、账号、审计)理念设计,旨在通过严格的访问控制和详尽的操作审计,确保企业内部网络环境的安全性与合规性。OneTerm 不仅能够有效防止内部人员的误操作或恶意行为,还能对外部攻击进行有效的防御,是企业IT内控和安全合规的重要工具。

1.2 OneTerm 堡垒机特点

  • 统一身份认证:支持多种认证方式,如用户名/密码、双因素认证、生物识别等,确保每个用户的身份真实可靠。

  • 精细权限控制:基于角色的访问控制(RBAC),可以为不同岗位的人员分配不同的权限,实现最小权限原则,降低风险。

  • 实时会话监控:提供实时的会话监控和录像功能,可以即时查看和回放用户操作过程,便于事后追溯和分析。

  • 操作审计与报告:记录所有用户的登录、操作和退出信息,生成详细的审计日志和报告,满足合规性要求。

  • 资源访问控制:对服务器、数据库、应用系统等资源的访问进行严格控制,防止未授权访问和数据泄露。

  • 智能告警机制:当检测到异常操作或潜在威胁时,系统自动触发告警,及时通知管理员采取措施。

1.3 OneTerm 堡垒机使用场景

  1. 金融行业:金融机构需要严格遵守各种法规,OneTerm 堡垒机可以帮助其实现对敏感数据和系统的严格访问控制,满足合规要求。

  2. 政府机构:政府信息系统存储大量公民个人信息,使用OneTerm 可以有效保护这些数据免受内部和外部威胁。

  3. 医疗保健:医疗行业涉及患者隐私,OneTerm 的细粒度权限管理和操作审计功能有助于保护患者数据的安全。

  4. 大型企业:对于拥有复杂IT环境和众多员工的大公司,OneTerm 提供了统一的平台来管理多样的IT资产,减少安全漏洞。

  5. 教育机构:学校和研究机构可以通过OneTerm 来控制对学术资源的访问,保护研究成果不被非法获取。

  6. 云服务提供商:云服务商需要向客户提供高安全性的服务,OneTerm 能够帮助他们实现这一目标,增强客户信任。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
jeven 192.168.3.166 centos 7.6 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.使用Docker部署OneTerm堡垒机。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-07-03 21:07:37 CST; 1 day 21h ago
     Docs: https://docs.docker.com
 Main PID: 11950 (dockerd)
    Tasks: 10
   Memory: 138.3M
   CGroup: /system.slice/docker.service
           └─11950 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载OneTerm镜像

  • 拉取oneterm相关容器镜像
docker pull registry.cn-hangzhou.aliyuncs.com/veops/oneterm-api:24.3
docker pull  registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ssh:24.3.1
docker pull registry.cn-hangzhou.aliyuncs.com/veops/oneterm-guacd:24.3
docker pull  registry.cn-hangzhou.aliyuncs.com/veops/mysql:latest
docker pull registry.cn-hangzhou.aliyuncs.com/veops/redis:latest
docker pull  registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ui:24.3
docker pull registry.cn-hangzhou.aliyuncs.com/veops/acl-api:1.1

五、部署OneTerm应用

5.1 拉取OneTerm项目

执行以下命令,拉取OneTerm项目。

 git clone https://github.com/veops/oneterm.git

在这里插入图片描述

5.2 查看部署文件

进入OneTerm项目,查看docker-compose.yml部署文件。

[root@jeven ~]# cd oneterm/
[root@jeven oneterm]# ls
backend  docker-compose.yaml  docs  LICENSE  oneterm-ui  README_cn.md  README.md

默认的部署文件内容如下,可自行修改宿主机映射端口。

version: "3.0"

services:
  oneterm-api:
    image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-api:24.3
    container_name: oneterm-api
    volumes:
      - file-data:/replay
      - ./docs/api.yaml:/oneterm/config.yaml
    depends_on:
      - mysql
      - redis
      - oneterm-guacd
    restart: always
    networks:
      new:
        aliases:
          - oneterm-api

  oneterm-ssh:
    image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ssh:24.3.1
    container_name: oneterm-ssh
    ports:
      - "12229:12228"
    restart: always
    tty: true
    volumes:
      - ./docs/ssh.yaml:/oneterm/config.yaml
      - ./docs/scripts/entrypoint.sh:/oneterm/entrypoint.sh
      - ssh-data:/root/.ssh
    entrypoint: ./entrypoint.sh
    depends_on:
      - oneterm-api
    networks:
      new:
        aliases:
          - oneterm-ssh

  oneterm-guacd:
    image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-guacd:24.3
    container_name: oneterm-guacd
    user: root
    restart: always
    volumes:
      - file-data:/replay
    networks:
      new:
        aliases:
          - oneterm-guacd

  mysql:
    image: registry.cn-hangzhou.aliyuncs.com/veops/mysql:latest
    #image: mysql:8.0.30
    container_name: oneterm-mysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_DATABASE: 'oneterm'
    volumes:
      - db-data:/var/lib/mysql
      - ./docs/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf
      - ./docs/acl.sql:/docker-entrypoint-initdb.d/2-acl.sql
      - ./docs/api.sql:/docker-entrypoint-initdb.d/3-api.sql
      - ./docs/create-users.sql:/docker-entrypoint-initdb.d/1-create-users.sql
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    networks:
      new:
        aliases:
          - mysql
    ports:
      - '23306:3306'

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/veops/redis:latest
    container_name: oneterm-redis
    #command: redis-server --requirepass tyrj5QVP9rHs
    restart: always
    environment:
      TZ: Asia/Shanghai
    networks:
      new:
        aliases:
          - redis

  oneterm-ui:
    image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ui:24.3
    container_name: oneterm-ui
    depends_on:
      - oneterm-api
    environment:
      TZ: Asia/Shanghai
      ONETERM_API_HOST: oneterm-api:8080
      ACL_API_HOST: acl-api:5000
      NGINX_PORT: 80
    volumes:
      - ./docs/nginx.oneterm.conf.example:/etc/nginx/conf.d/nginx.oneterm.conf.example
    restart: always
    command:
      - /bin/sh
      - -c
      - |
        envsubst '$$ONETERM_API_HOST  $$ACL_API_HOST $$NGINX_PORT' < /etc/nginx/conf.d/nginx.oneterm.conf.example > /etc/nginx/conf.d/oneterm.conf
        nginx -g  'daemon off;'
    networks:
      - new
    ports:
      - "8000:80"

  acl-api:
    image: registry.cn-hangzhou.aliyuncs.com/veops/acl-api:1.1
    container_name: oneterm-acl-api
    environment:
      #TZ: Asia/Shanghai
      WAIT_HOSTS: mysql:3306, redis:6379
    volumes:
      - ./docs/settings.py:/data/app/acl/settings.py
      - ./docs/.env:/data/apps/acl/.env
      - ./docs/nginx.oneterm.conf.example:/etc/nginx/conf.d/nginx.oneterm.conf.example
    restart: always
    command:
      - /bin/sh
      - -c
      - |
        sleep 2
        flask db-setup
        flask init-acl
        flask init-department

        gunicorn --workers=3 autoapp:app -b 0.0.0.0:5000 -D --access-logfile logs/access.log --error-logfile logs/error.log

        celery -A celery_worker.celery worker -E -Q acl_async --logfile=one_acl_async.log --autoscale=2,1
    depends_on:
      - mysql
      - redis
    networks:
      new:
        aliases:
          - acl-api

volumes:
  db-data:
    driver: local
    name: oneterm_db-data
  file-data:
    driver: local
    name: oneterm_file-data
  ssh-data:
    driver: local
    name: oneterm_ssh

networks:
  new:
    driver: bridge
    name: oneterm_network
    ipam:
      config:
        - subnet: 172.30.0.0/24

5.3 创建OneTerm容器

  • 使用docker-compose.yaml文件创建OneTerm容器
    docker compose up -d
    

在这里插入图片描述

5.4 检查OneTerm容器状态

检查OneTerm容器状态,确保OneTerm容器正常启动。

[root@jeven oneterm]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS               PORTS
oneterm-acl-api     "/bin/sh -c 'sleep 2…"   acl-api             running
oneterm-api         "./api run -c ./conf…"   oneterm-api         running
oneterm-guacd       "/bin/sh -c '/opt/gu…"   oneterm-guacd       running (starting)   4822/tcp
oneterm-mysql       "docker-entrypoint.s…"   mysql               running              0.0.0.0:23306->3306/tcp, :::23306->3306/tcp
oneterm-redis       "docker-entrypoint.s…"   redis               running              6379/tcp
oneterm-ssh         "./entrypoint.sh"        oneterm-ssh         running              0.0.0.0:12229->12228/tcp, :::12229->12228/tcp
oneterm-ui          "/docker-entrypoint.…"   oneterm-ui          running              0.0.0.0:8000->80/tcp, :::8000->80/tcp

六、访问OneTerm首页

6.1 进入OneTerm登录页

访问地址:http://192.168.3.166:8000,将IP替换为自己服务器IP地址,进入到OneTerm初始页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

6.2 访问OneTerm首页

默认的登录账号Miami如下:

  • username: admin
  • password: 123456

在这里插入图片描述

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
|
4月前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
520 91
|
2月前
|
Ubuntu 安全 Docker
Ubuntu下部署及操作Docker技巧
以上就是在Ubuntu下部署及操作Docker的具体步骤。但这只是冰山一角,Docker的魅力远不仅如此。你可以将其视为存放各种工具的小箱子,随时随地取用,极大地提升工作效率。你也可以私人订制,适应不同的开发环境,就像一个拥有各种口味冰淇淋的冰箱,满足各种各样的需求。好了,现在你已经掌握了基本的Docker运用技巧,快去尝试使用吧!记住,沉浸在探索中,你会找到无尽的乐趣和满满的收获。
147 23
|
3月前
|
安全 API 算法框架/工具
大模型文件Docker镜像化部署技术详解
大模型文件Docker镜像化部署技术详解
370 2
|
3月前
|
JSON 运维 Ubuntu
在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
通过以上步骤,您可以成功在Docker上部署Ollama和AnythingLLM,实现本地LLM Agent的功能。在部署过程中,确保环境和配置正确,以避免不必要的问题。希望本文能够帮助您顺利完成部署,并在本地环境中高效地使用LLM模型。
1107 8
|
4月前
|
人工智能 文字识别 安全
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
315 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
|
4月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
116 19
|
3月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
322 0
|
2月前
|
存储 SQL 关系型数据库
docker部署n9e开源版本7.4.0
n9e开源版本7.4.0
132 0
|
3月前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
323 1