☰
Infection Monkey 部署完全指南:从 AppImage、Docker、Windows 到云市场的 Monkey Island 搭建手册
2026/10/8 19:14:00 网站建设 项目流程
  • 网络安全
  • 应用安全

【免费下载链接】monkey

Infection Monkey - An open-source adversary emulation platform

项目地址:https://gitcode.com/gh_mirrors/mo/monkey
点击查看免费下载

本篇指南以 Infection Monkey 官方文档的 Setup 章节为主体,系统梳理 Monkey Island 在 Linux(AppImage)、Docker、Windows、AWS 与 Azure 五大场景下的部署步骤、server_config.json配置细节、服务化、证书与升级等实战问题。读完本文,你将能够从零搭建一套可用的对抗模拟(Adversary Emulation)控制端,并掌握端口、日志、证书等核心运维配置。

部署概览:选择适合你的安装方式

Infection Monkey 的部署形态是"控制端(Monkey Island Server)+ 攻击 Agent(Monkey Agent)"的双组件架构。控制端是整个平台的中枢,负责下发配置、接收 Agent 回传的扫描与利用结果、生成感染地图与安全报告,而 Agent 则由控制端通过网络传播释放到目标机器上执行探测与模拟攻击。

官方提供了四种部署路径,对应不同的使用场景:

部署方式适用场景核心形态
Linux AppImage自托管、单机演示、企业内部安全评估可执行的单文件包,自包含运行时
Docker快速验证、CI 环境、需要隔离部署MongoDB + Monkey Island 双容器
Windows 安装程序Windows 环境的实验室与生产评估图形化安装向导 + 桌面快捷方式
AWS / Azure 云市场云上快速开通、公网可达的控制端云市场镜像(底层为 AppImage 部署)

无论选择哪种方式,部署完成后都会得到一个运行于https://localhost(默认 HTTPS 443 端口)的 Monkey Island Web UI。接下来按平台逐一展开。

Linux:使用 AppImage 部署

支持的操作系统与前置条件

AppImage 是一种"发行版无关"的、自包含运行时的打包格式——包内已经包含应用程序及其运行所需的全部依赖。因此 Infection Monkey 的 AppImage 包可以在大多数安装了 FUSE 的现代 Linux 发行版上运行。官方实测过的发行版包括 BlackArch 2023.04.01、CentOS/Rocky/RHEL 8+、Debian 11、Kali 2023.1、Parrot 5.2、openSUSE Leap 15.4、Ubuntu 18.04/20.04/22.04 以及 WSL 2,详见 系统需求参考。

在开始之前需要明确两点:

  1. 运行 AppImage 需要 root 权限:默认情况下 Monkey Island 服务器监听 443 端口,这是 Linux 的保留端口(<1024),需要为 AppImage 包设置CAP_NET_BIND_SERVICE能力才能绑定成功;
  2. 需要 FUSE 2.x:AppImage 挂载需要 FUSE 2 版本,安装 Ubuntu 等系统时若报 FUSE 相关错误,可先安装libfuse2。

下载与校验安装包

从官方发布页下载InfectionMonkey-v2.3.0.AppImage后,建议先校验 SHA-256 哈希以确保安装包完整性和来源可信。在 Linux 上使用:

$ sha256sum InfectionMonkey-v2.3.0.AppImage

得到的哈希值应与 发布产物哈希表 中 2.3.0 版本对应条目一致(8fc613a02c18c45d136753224b86a24740e18c0e3226786c92b93ca6be7d345d)。

启动 Monkey Island

# 1. 赋予执行权限 chmod u+x InfectionMonkey-v2.3.0.AppImage # 2. 启动 Monkey Island ./InfectionMonkey-v2.3.0.AppImage

如果启动时出现与 FUSE 相关的错误,说明系统缺少 FUSE 2:

sudo apt update sudo apt install libfuse2

启动成功后,在浏览器中访问https://localhost即可进入 Monkey Island Web UI,随后可参考 快速上手 完成首次配置。

提示:若安装新版后被要求删除数据目录,说明旧版本数据与新版本不兼容,可先备份再清理,相关说明见 FAQ。

注册为开机自启服务

AppImage 包内置了service子命令,可将 Infection Monkey 安装为 systemd 服务并随开机启动。这需要 root 权限,执行前先运行sudo -v并输入密码:

./InfectionMonkey-v2.3.0.AppImage service --install --user <USERNAME>

卸载服务:

./InfectionMonkey-v2.3.0.AppImage service --uninstall

从仓库中 服务安装脚本 可以看到底层实现:脚本会将 AppImage 复制到/opt/infection-monkey/bin/InfectionMonkey.AppImage,生成名为infection-monkey.service的 systemd unit(以User=<USERNAME>运行、携带AmbientCapabilities=CAP_NET_BIND_SERVICE能力、After=network.target),然后执行systemctl enable实现开机自启。卸载时会停止并禁用服务、删除 unit 文件,并提示清理$HOME/.monkey_island数据目录。

注意:服务安装功能目前仅在 Ubuntu 上实测过,其他发行版上可能无法正常工作。

Docker:双容器部署

Docker 方式将 Monkey Island 拆成 MongoDB 与 Monkey Island 两个容器。目前 Docker 容器仅支持 Linux,不兼容 Docker for Windows / Docker for Mac。

拉取镜像并启动 MongoDB

# 1. 拉取 MongoDB v6.0 镜像 sudo docker pull mongo:6.0 # 2. 拉取 Monkey Island 镜像 sudo docker pull infectionmonkey/monkey-island:latest # 3. 启动 MongoDB(使用命名卷持久化数据) sudo docker run \ --name monkey-mongo \ --network=host \ --volume monkey-db:/data/db \ --detach \ mongo:6.0

升级提示:如果是从旧版本升级,务必先移除与旧版本关联的 MongoDB 容器和卷,避免新旧数据混用。

启动 Monkey Island(默认证书)

sudo docker run \ --tty \ --interactive \ --name monkey-island \ --network=host \ infectionmonkey/monkey-island:latest

容器启动后,浏览器访问https://localhost即可进入 Web UI。两个容器均使用--network=host,因此 Monkey Island 可以直接通过localhost:27017访问宿主机网络中的 MongoDB。

使用数据卷与配置文件启动

如果希望把数据与配置持久化到宿主机,官方推荐以下流程(这也是配置server_config.json的标准姿势):

# 1. 创建配置目录(权限 0700) mkdir -m=0700 ./monkey_island_data # 2. 先以 --setup-only 模式运行一次,完成初始化 sudo docker run \ --rm \ --name monkey-island \ --network=host \ --user "$(id -u ${USER}):$(id -g ${USER})" \ --volume "$(realpath ./monkey_island_data)":/monkey_island_data \ infectionmonkey/monkey-island:latest --setup-only

然后将server_config.json放入./monkey_island_data目录,内容至少包含:

{ "data_dir": "/monkey_island_data", "mongodb": { "start_mongodb": false } }

最后以挂载卷 + 配置文件路径的方式正式启动:

sudo docker run \ --rm \ --name monkey-island \ --network=host \ --user "$(id -u ${USER}):$(id -g ${USER})" \ --volume "$(realpath ./monkey_island_data)":/monkey_island_data \ infectionmonkey/monkey-island:latest --server-config="/monkey_island_data/server_config.json"

从 仓库的 Docker 配置 可以看出这正是官方预置的容器配置:data_dir指向容器内的/monkey_island_data,同时关闭容器内启动 MongoDB(start_mongodb: false),复用宿主网络中的外部 MongoDB。--user "$(id -u ${USER}):$(id -g ${USER})"让容器进程以当前用户身份运行,保证挂载目录的文件权限与宿主机一致。

--server-config与--setup-only两个命令行参数在 arg_parser.py 中有明确定义:--setup-only让 Island 完成初始化后直接退出而不真正启动服务,适合首次部署或打包场景;--server-config则指定服务器配置文件的路径。Docker 镜像的 entrypoint.sh 会把所有参数透传给monkey_island.py。

排查:UnicodeDecodeError 崩溃

如果monkey-island容器启动时崩溃并报:

UnicodeDecodeError: 'utf-8' codec cannot decode byte 0xee in position 0: invalid continuation byte

根本原因是加密密钥不匹配:Monkey Island 用密钥加密敏感数据后存入 MongoDB,而从infectionmonkey/monkey-island:VERSION镜像新建容器会生成新的密钥,当用新密钥解密旧容器中已加密的数据时就会失败。三种修复方式:

  1. 复用旧容器:执行docker container start -a monkey-island重启现有容器(它保留了正确的密钥材料);
  2. 重建数据库:删除旧的 MongoDB 容器并启动新容器(会丢失全部旧数据),再启动新的 Monkey Island 容器;
  3. 持久化运行产物:启动 Monkey Island 时挂载命名卷--volume monkey_island_data:/monkey_island_data,将加密密钥文件等运行时产物存入卷中,供后续容器复用。

Windows:图形化安装

在 Windows 上部署最直接的方式是运行安装程序InfectionMonkey-v2.3.0.exe。

提示:安装过程中杀毒软件可能将 Infection Monkey 标记为恶意软件——这是正常现象,它本质上是一个攻击模拟工具,详见 FAQ 说明。

安装完成后,屏幕上会出现 Windows 安装向导界面,按步骤完成安装即可。随后通过桌面快捷方式启动 Infection Monkey。注意:如果希望 Agent 在当前机器上采集更多数据,建议以 Administrator 身份运行。

提示:若升级后提示删除数据目录而你不确定如何处理,参考 FAQ 相关条目。

Windows 特有的注意事项

  • 系统区域设置:仅支持英文系统区域设置;如果命令行输出为其他语言,Infection Monkey 无法保证正常工作;
  • Windows 更新:安装程序依赖 Windows 更新 KB2999226(通用 C 运行时更新)。如果安装失败,请先通过 Windows Update 或手动安装该补丁;
  • 浏览器支持:Monkey Island 支持 Chrome(及 Chromium 内核浏览器)。若服务器只有 Internet Explorer,请先安装 Chrome 或同类现代浏览器。

AWS / Azure:云市场一键部署

AWS Marketplace 部署

在 AWS Marketplace 的 Infection Monkey 页面点击Continue to Subscribe,然后:

  1. 选择目标区域(Region);
  2. 选择 EC2 实例类型——官方建议至少 1GB 内存以获得最佳性能,也可使用默认推荐机型;
  3. 为实例选择 VPC 与子网;
  4. 在安全组(Security Group)中放行入站 TCP 5000 端口(底层 AppImage 服务将 HTTPS 443 转发/映射至 5000 供平台访问);
  5. 选择用于登录的 EC2 密钥对(Key Pair);
  6. 点击Launch with 1-click。

实例就绪后,通过https://{public-ip}访问 Monkey Island,使用ubuntu用户名登录实例。

Azure Marketplace 部署

在 Azure Marketplace 的 Infection Monkey 页面点击GET IT NOW,按向导分四步完成:

  • Basics:为实例命名(如InfectionMonkey),选择用户名/密码或 SSH 公钥认证方式,选择资源组与区域;
  • Size:选择至少 1GB 内存的机型;
  • Settings:选择网络,并在**网络安全组(Network Security Group)**中放行入站 TCP 5000 端口;
  • Summary:确认订单信息后点击Create。

实例开通后,通过https://{public-ip-address}访问。

云上实例的配置方式

AWS 与 Azure 云市场镜像本质上都是AppImage 部署,因此进入 VM 后,其配置方法与 Linux AppImage 的配置章节 完全一致:SSH 登录后编辑server_config.json、传参启动即可。此外,Infection Monkey 还内置了 AWS 集成,可以在 EC2 实例上直接运行 Agent,详见 使用 -> 集成。

配置服务器:server_config.json 详解

Monkey Island 服务器的全部关键配置都集中在server_config.json文件中。仓库自带的 默认配置 为:

{ "island_port": 443, "log_level": "DEBUG", "mongodb": { "start_mongodb": true } }

一个包含全部可选项的完整示例:

{ "island_port": 443, "log_level": "DEBUG", "ssl_certificate": { "ssl_certificate_file": "<PATH_TO_CRT_FILE>", "ssl_certificate_key_file": "<PATH_TO_KEY_FILE>" }, "mongodb": { "start_mongodb": true }, "data_dir": "/monkey_island_data" }

配置文件支持"只写需要的选项",例如仅覆盖证书:

{ "ssl_certificate": { "ssl_certificate_file": "<PATH_TO_CRT_FILE>", "ssl_certificate_key_file": "<PATH_TO_KEY_FILE>" } }

各配置项含义如下:

配置项说明默认值/取值范围
island_portIsland C&C 服务器监听端口默认443(HTTPS)
log_level日志级别"DEBUG"(最详细)/"INFO"(精简)/"ERROR"(仅错误)
ssl_certificate自定义证书的.crt与.key文件路径默认使用内置自签名证书
data_dirIsland 存储数据库及其他文件的可写目录无默认,Docker 场景须显式指定
mongodbMongoDB 相关选项(start_mongodb控制是否由 Island 自启 MongoDB)除非自建 MongoDB 实例,否则不建议修改

修改监听端口

默认 HTTPS 端口为 443。修改server_config.json并添加island_port:

{ ... "island_port": 8080, ... }

重启 Monkey Island 后,Web UI 将变为https://localhost:8080。

使用企业私有 CA 签发的证书

默认情况下 Infection Monkey 使用自签名 SSL 证书。在企业或安全敏感环境中,官方建议改用私有证书颁发机构(Private CA)签发的证书:

  1. 停止正在运行的 Island 进程(或停止 Docker 容器);

  2. (可选但推荐)将.crt与.key文件移动到$HOME/.monkey_island(Linux)或%AppData%\monkey_island(Windows);

  3. 确保证书文件仅对当前用户可读:

    chmod 600 <PATH_TO_KEY_FILE> chmod 600 <PATH_TO_CRT_FILE>
  4. 在server_config.json中指定证书路径(Linux 示例):

    { "ssl_certificate": { "ssl_certificate_file": "$HOME/.monkey_island/my_cert.crt", "ssl_certificate_key_file": "$HOME/.monkey_island/my_key.key" } }

    Windows 示例(默认配置位于C:\Program Files\Infection Monkey\monkey_island\cc\server_config.json):

    { ... "ssl_certificate": { "ssl_certificate_file": "%AppData%\\monkey_island\\my_cert.crt", "ssl_certificate_key_file": "%AppData%\\monkey_island\\my_key.key" }, ... }

    Docker 场景则需要把证书文件放进挂载的./monkey_island_data目录,并在配置中使用容器内路径:

    { "data_dir": "/monkey_island_data", "mongodb": { "start_mongodb": false }, "ssl_certificate": { "ssl_certificate_file": "/monkey_island_data/my_cert.crt", "ssl_certificate_key_file": "/monkey_island_data/my_key.key" } }
  5. 通过--server-config参数重启服务,然后在浏览器访问https://localhost。

调整日志级别

在server_config.json中加入:

{ "log_level": "INFO" }

重启后生效。DEBUG最详细、INFO适中、ERROR仅在出错时输出。排查 Agent 通信或传播问题时,建议先切到DEBUG再复现。

配置文件的加载方式(各平台一览)

平台配置文件位置加载方式
Linux AppImage任意路径./InfectionMonkey-v2.3.0.AppImage --server-config="/path/to/server_config.json"
Docker挂载卷内,如/monkey_island_data/server_config.jsondocker run ... infectionmonkey/monkey-island:latest --server-config="/monkey_island_data/server_config.json"
WindowsC:\Program Files\Infection Monkey\monkey_island\cc\server_config.json直接编辑文件,点击桌面快捷方式启动
AWS / AzureVM 内的 AppImage 部署SSH 登录后按 Linux 方式配置

升级与配置迁移

Infection Monkey 目前不支持原地升级(upgrade-in-place),升级策略因平台而异:

  • Linux AppImage:下载新版 AppImage 包,按部署章节重新走一遍安装流程;
  • Docker:下载新镜像,停止并移除当前 Monkey Island 与 MongoDB 容器及卷,再用新文件重新执行安装命令;
  • Windows:下载新版安装程序并运行,新版本会覆盖安装到旧版本之上;
  • AWS / Azure:从云市场重新部署一台新机器。

如果你希望保留现有配置,可以在旧版 Monkey Island 的 Web UI 中点击Export config按钮将配置导出为文件,再在新实例中通过Import config导入。官方在升级说明中配了导入导出界面的截图(import-export-configuration.png),该功能位于配置页面中,是跨版本迁移配置的标准做法。

附:系统需求速查

部署前建议对照 系统需求文档 检查环境:

Monkey Island(控制端)

  • 架构:仅支持 x86-64;
  • Linux 硬件基线:Intel Xeon 2.20GHz 或更好,2 核,4GB 内存;
  • Windows 硬件基线:Intel Xeon 2.20GHz 或更好,4 核,6GB 内存;
  • 已测试 Linux 发行版:BlackArch、CentOS/Rocky/RHEL 8+、Debian 11、Kali、Parrot、openSUSE Leap 15.4、Ubuntu 18.04/20.04/22.04、WSL 2(AppImage 需 FUSE 2);
  • 已测试 Windows 版本:Windows Server 2016 / 2019、Windows 10。

Agent(攻击端)

  • 架构:仅支持 x86-64;
  • Linux:要求 GLIBC >= 2.23(Agent 基于 Python 3.11 构建,GLIBC 向前不向后兼容);
  • Windows:Windows Server 2012+、Windows 7/Server 2008_R2(需安装 KB2999226)、Windows 10。

小结

本文覆盖了 Infection Monkey 的全部官方部署路径:Linux 用户优先选择 AppImage 单文件包(支持service子命令注册 systemd 开机自启),需要快速验证时使用 Docker 双容器方案(注意 MongoDB 密钥不匹配的 UnicodeDecodeError 问题),Windows 环境走图形化安装向导,云上环境则利用 AWS / Azure 市场镜像一键开通。无论哪种方式,server_config.json都是控制端口、日志级别、自定义证书与数据目录的枢纽,配合--server-config/--setup-only参数即可完成精细化的运维配置。完成部署后,即可参考 快速上手 开始你的首次对抗模拟演练。

  • 网络安全
  • 应用安全

【免费下载链接】monkey

Infection Monkey - An open-source adversary emulation platform

项目地址:https://gitcode.com/gh_mirrors/mo/monkey
点击查看免费下载
上一篇:实战技巧:高效提升开源大模型下载速度的完整策略
下一篇:告别网络依赖:Chat2DB离线版本全攻略与企业级部署实践

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询