• Dokcer搭建Apache Guacamole堡垒机


    一、什么是堡垒机

    “堡垒机” 这个词通常指的是 “堡垒机器”(Bastion Host)的简称。堡垒机是一种计算机系统或网络设备,用于增强计算机网络的安全性。它在网络中充当一个重要的安全关口,通过限制对内部网络的访问,帮助保护敏感数据和资源免受未经授权的访问和攻击。

    堡垒机的主要功能

    1. 访问控制:堡垒机允许管理员配置哪些用户或系统可以通过它访问内部网络资源。只有经过身份验证的用户或系统才能通过堡垒机连接到内部网络。

    2. 审计和监控:堡垒机通常会记录所有访问和操作,以便管理员可以审查和监控谁访问了内部资源以及他们执行了什么操作。

    3. 隔离:堡垒机可以隔离来自外部网络的连接,减少内部网络受到攻击的风险。它可以充当防火墙,限制来自外部网络的流量。

    4. 跳板:堡垒机还可以用作跳板,允许管理员从外部网络安全地连接到内部服务器或设备,而不必直接将这些服务器暴露在外部网络中。

    二、主流堡垒机有哪些

    例如:Apache Guacamole、JumpServer等

    三、Apache Guacamole介绍

    Apache Guacamole(简称Guacamole)是一个开源的远程桌面网关,它提供了一种跨平台、跨协议的方式来访问远程计算机。它的主要目标是简化远程访问管理,允许用户通过一个单一的 Web 界面连接到远程计算机,而不必安装客户端应用程序或插件。

    Apache Guacamole 的一些关键特点和功能

    1. 协议支持:Guacamole 支持多种远程桌面协议,包括VNC(Virtual Network Computing)、RDP(Remote Desktop Protocol)、SSH(Secure Shell)等,这意味着您可以使用单一的界面连接到不同类型的远程计算机。

    2. Web界面:Guacamole 提供了一个直观的 Web 用户界面,允许用户通过常见的Web浏览器访问远程计算机,而无需安装任何额外的客户端软件。

    3. 多用户支持:它支持多用户管理和身份验证,允许管理员创建用户帐户,并配置不同用户的访问权限。这对于企业环境中的团队协作和远程支持非常有用。

    4. 集成性:Guacamole 可以与现有的身份验证和访问控制系统(如LDAP、Active Directory等)集成,以便更好地管理用户身份验证和访问控制。

    5. 录像和回放:它可以记录远程会话,以便管理员回顾和分析用户的活动。这在故障排除和安全审计方面非常有用。

    6. 插件架构:Guacamole 的插件架构使得用户可以根据需要扩展其功能。您可以编写自定义插件来添加新的协议支持或其他功能。

    7. 开源:Guacamole 是一个开源项目,基于Apache许可证发布,这意味着您可以免费使用、修改和分发它。

    Guacamole 的主要优势在于其易用性和多协议支持,使得远程访问管理变得更加灵活和便捷。它常常被用于企业内部的IT支持、远程办公、虚拟桌面访问等应用场景,以简化远程连接和管理的任务。

    四、Apache Guacamole搭建

    Apache Guacamole部署方式有多种,这里是Docker的方式来进行展开的

    4.1 环境信息

    操作系统版本:CentOS 7.9
    映射端口:29980(根据实际情况可以自行修改)
    数据库:guacamole(根据实际情况可以自行修改)
    数据库用户:guacamole(根据实际情况可以自行修改)
    数据库密码:自行设置

    4.2 安装docker环境

    下载docker repo文件,安装docker-ce,启动docker服务,设置docker服务开机自启动。

    cd /etc/yum.repos.d
    wget https://download.docker.com/linux/centos/docker-ce.repo
    yum install docker-ce -y
    systemctl start docker
    systemctl enable docker
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.3 拉取guacamole和mysql镜像

    这里直接拉取的最新guac镜像(1.5.3),数据库版本这里使用了5.7版本。

    docker pull guacamole/guacamole
    docker pull guacamole/guacd
    docker pull mysql/mysql-server:5.7
    
    • 1
    • 2
    • 3

    4.4 建立初始化脚本

    从容器中将初始化SQL文件导出,用于还原到guacamole库里。

    docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
    
    • 1

    4.5 创建mysql用户

    这里启动MySQL 5.7容器,并设置了超管密码。

    docker run --name mysql --restart=always  -e MYSQL_ROOT_PASSWORD=Replace_it_with_your_password -d mysql/mysql-server:5.7
    
    • 1

    4.6 拷贝初始sql文件到容器

    将4.4中导出的初始化SQL文件传入到MySQL容器中。

    docker cp initdb.sql mysql:/initdb.sql
    
    • 1

    4.7 进入数据库还原初始化文件

    开始还原初始数据,并设置访问权限。

    # 进入MySQL容器:
    docker exec -it mysql bash
     
    # 在容器内运行,进入数据库
     mysql -uroot -pReplace_it_with_your_password
     
    # 创建一个数据库:
    CREATE DATABASE guacamole;
    CREATE USER 'guacamole'@'%' IDENTIFIED BY 'Replace_it_with_your_password';
    GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'%';
    FLUSH PRIVILEGES; 
    
    # 选择数据库:
    mysql > use guacamole;
     
    # 导入数据:
    mysql > source /initdb.sql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.8 新建文件服务器目录

    日常堡垒机使用,难免会有上传下载文件的需求,这里需要提前新建一个数据目录(自定义)用于存储文件,这个是后续配置的前提条件。

    mkdir -p /mnt/data/guacamole/tmp/drive
    chmod 777 /mnt/data/guacamole/tmp/drive
    
    • 1
    • 2

    4.9 启动容器

    docker run --name guacd --restart=always -e 'export $LANG=en_US.UTF-8' -v /mnt/data/guacamole/tmp/drive:/mnt/data/guacamole/tmp/drive -d guacamole/guacd
    
    docker run --name guacamole --restart=always  --link guacd:guacd --link mysql:mysql -e MYSQL_DATABASE='guacamole' -e MYSQL_USER='guacamole' -e MYSQL_PASSWORD='Replace_it_with_your_password' -d -p 29980:8080 guacamole/guacamole
    
    • 1
    • 2
    • 3

    4.10 浏览器访问

    http://Replace_it_with_your_IP:29980/guacamole
    
    • 1

    在这里插入图片描述

    4.11 登录

    为了使用安全请及时修改超管密码!

    默认用户名:guacadmin
    默认密码:guacadmin
    
    • 1
    • 2

    4.12 资产录入

    登录之后点击右上角用户名-设置,转到以下界面:在这里插入图片描述
    点击新建连接开始录入资产:

    Windows Server RDP

    常用于Windows Server的 RemoteDesktop的资产录入。

    • 名称:常常填入机器的主机名
    • 位置:保持默认
    • 协议:选择RDP
    • 最大连接数:自定义设置
    • 每个用户的最大连接数:自定义设置
    • 主机名:一般填写内网地址,尽量不要填写公网地址
    • 端口:Windows Server RDP一般默认为3389
    • 用户名:Administrator或其他用户的名称
    • 密码:对应的密码
    • 安全模式:选择TLS加密
    • 忽略服务器的证书:勾选
      在这里插入图片描述
    • 启用虚拟盘:这个地方是上传下载设置的虚拟磁盘
    • 虚拟盘路径:/mnt/data/guacamole/tmp/drive/${GUAC_USERNAME} 最后追加一个占位符,保证不同用户文件内容。
    • 自动建立虚拟盘:勾选

    在这里插入图片描述
    其他设置根据个人需求设置,点击保存即可。

    除此之外Windows Server还要对远程桌面设置进行调整:参考如下
    在这里插入图片描述

    Linux SSH

    • 名称:常常填入机器的主机名
    • 位置:保持默认
    • 协议:选择SSH
    • 主机名:一般填写内网地址,尽量不要填写公网地址
    • 端口:SSH默认一般是22
    • 私钥:如果不采用密码认证,可以直接将私钥文件内容粘贴到框框
      在这里插入图片描述
      与Windows Server不同的是Linux机器的文件上传下载需要对这个地方进行设置:
      文件浏览器根目录:/mnt/data/guacamole/tmp/drive/

    在这里插入图片描述
    点击保存完成资产录入。

  • 相关阅读:
    操作系统知识点总结——第四章文件管理
    页面交互(js与HTML,css的使用)
    CopyOnWriteArrayList
    c++-vector
    vivo 手机云服务建设之路-平台产品系列04
    如何把MapGIS的区文件转为ArcGIS的SHAPE面文件
    大学生个人网站作业 超简单DIV CSS个人网页成品 简单个人网站作业模板 HTML个人网页设计下载 简约黑白色个人主页
    el-tabs(标签栏)的入门学习
    Python ElementTree 导出 xml 缺少 开头声明&【Pymssql】使用cursor.fetchall()获取执行结果时中文乱码
    iOS——【Blocks】
  • 原文地址:https://blog.csdn.net/qq_32014795/article/details/132876242