JoseArgento/wow-classic-secure-lab

GitHub: JoseArgento/wow-classic-secure-lab

该项目在 AWS EC2 上部署并加固了一个多层 WoW Classic 游戏服务器,作为涵盖云安全加固、攻击面分析和蓝队防御实践的完整教学实验。

Stars: 0 | Forks: 0

# 🛡️ 安全的多层游戏服务器实验室 (AWS EC2 + Docker) **English** | [Español](README.es.md) ![状态](https://img.shields.io/badge/status-active-success) ![AWS](https://img.shields.io/badge/AWS-EC2-orange) ![Docker](https://img.shields.io/badge/Docker-Compose-blue) ![Linux](https://img.shields.io/badge/OS-Ubuntu-lightgrey) ![实时服务器 —— 游戏内角色](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3d1a506166093723.png) *最终结果:一个完全部署、经过强化且可游玩的服务器。客户端已连接至实时 realm。* ## 🎯 目标 在云中构建一个真实的、多层架构的应用程序,并将其作为一个完整的 安全演练:部署、映射其攻击面、进行强化, 并记录安全控制措施和威胁模型——就像我评估真实系统一样。 这是对我的 [pentest-lab](https://github.com/JoseArgento/pentest-lab) 仓库的补充:那个 项目侧重于攻击方,而这个项目侧重于**基础设施 / 蓝队**。 ## 🧩 架构 ``` flowchart LR Players([Players / Internet]) -->|TCP 3724 auth| RD[realmd
login server] Players -->|TCP 8085 world| MD[mangosd
world server] RD --> DB[(MariaDB)] MD --> DB subgraph EC2["AWS EC2 — Ubuntu 24.04 — Docker"] RD MD DB end Admin([Admin / me]) -.->|TCP 22 SSH — IP-restricted| EC2 ``` | 层级 | 组件 | 角色 | 暴露程度 | |---|---|---|---| | 认证 | `realmd` | 身份验证与 realm 列表 | 公开 (TCP 3724) | | 应用 | `mangosd` | 游戏世界逻辑 | 公开 (TCP 8085) | | 数据 | `MariaDB` | 账户、角色、世界数据 | **仅限内部访问** | ## 🧰 技术栈 `AWS EC2` · `Ubuntu Server 24.04 LTS` · `Docker` · `Docker Compose` · `MariaDB` · `ufw` · `fail2ban` · `OpenSSH` ## 🚀 部署概述 高级流程(完整分步指南:[`docs/deploy-guide.md`](./docs/deploy-guide.md)): 1. 配置一个 EC2 实例(Ubuntu 24.04, `t3.medium`),使用严格限制的 Security Group 和静态 Elastic IP。 2. 强化操作系统:仅密钥 SSH,主机防火墙 (`ufw`),`fail2ban`。 3. 安装 Docker + Compose。 4. 通过 Docker Compose 部署多层堆栈(预构建镜像)。 5. 验证服务健康状况并检查连通性。 **服务器已启动并运行** —— 世界已初始化,加载了正确的内容补丁和客户端版本: ![世界已初始化](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/db1a4a10e8093727.png) ## 🔒 安全强化 这是本项目的核心。已实施的控制措施及其目的: | 控制措施 | 实现方式 | 缓解对象 | |---|---|---| | **攻击面最小化** | Security Group 仅暴露 3 个端口;默认拒绝所有其他流量 | 不必要的暴露 | | **SSH 强化** | 仅限密钥认证,禁用 root 登录,禁用密码认证,访问受 IP 限制 | 凭证攻击,未经授权的访问 | | **纵深防御** | 云防火墙 (Security Group) + 主机防火墙 (`ufw`) | 单层故障 | | **暴力破解缓解** | `fail2ban` 监控 SSH | 自动化登录攻击 | | **数据库隔离** | MariaDB 从不暴露于互联网;仅能通过 SSH 隧道进行管理 | 数据泄露,数据库攻击 | | **不受信任软件验证** | 客户端二进制文件在执行前进行版本检查、哈希校验和扫描 | 供应链 / 恶意软件风险 | **SSH 强化 —— 通过实际运行配置 (`sshd -T`) 进行验证:** ![SSH 强化](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/663fc4ec2c093732.png) **主机防火墙 (`ufw`) —— 默认拒绝,仅打开 3 个所需端口 (IPv4 + IPv6):** ![ufw 防火墙](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f4540179a0093737.png) **暴力破解缓解 —— `fail2ban` 监狱在 SSH 上处于活动状态:** ![fail2ban](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/aa821d79fa093742.png) **数据库隔离 —— `MariaDB` (3306) 仅绑定到内部 Docker 网络;请注意,与公开的游戏端口不同,它没有 `0.0.0.0` 主机映射:** ![数据库隔离](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1a0819870f093747.png) ## 🎯 威胁模型与攻击面分析 **暴露面:** - TCP 3724 / 8085 —— 合法客户端所需。应用层暴露。 - TCP 22 —— 管理;仅限于单一源 IP。 **考虑的关键风险及缓解措施:** | 风险 | 缓解措施 | |---|---| | SSH 暴力破解 | 仅限密钥认证 + `fail2ban` + IP 白名单 | | 数据库入侵 | 无公开的数据库端口;默认数据库用户无法通过互联网访问 | | 恶意游戏客户端 (供应链) | 执行前分析:版本检查、哈希校验、VirusTotal 扫描、行为分析、跨来源完整性校验 | | 横向移动 | 容器相互隔离;最少的主机软件包 | ## 🔍 不受信任的客户端分析 (恶意软件分类) 游戏客户端来自非官方来源,因此在执行前**以及**分发给其他玩家之前,每个二进制文件都经过了分类处理。完整报告: [`evidence/binary-verification.md`](./evidence/binary-verification.md)。 **完整的二进制清单 —— 对每个 `.exe` / `.dll` 进行递归 SHA-256 哈希校验:** ![二进制哈希清单](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4753f9daa1093752.png) **VirusTotal 上的静态分析(代表性样本):** | `WoW.exe` (0/71) | `Repair.exe` (0/71) | `BackgroundDownloader.exe` (0/71) | |---|---|---| | ![VT WoW.exe](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0009560b63093757.png) | ![VT Repair.exe](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e4089a9cb9093802.png) | ![VT BackgroundDownloader](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6b7ff591e5093808.png) | **值得关注的案例 —— `Scan.dll` (2/70):** 针对 UPX 加壳组件的启发式/行为检测。已升级至动态分析(无 C2 流量,无 持久化,无释放的 payload),并通过 跨来源哈希验证确认为合理的误报。 ![VT Scan.dll 检测](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0083a660dd093813.png) **版本确认** —— 客户端版本 `1.12.1 (5875)`,与服务器镜像匹配: ![客户端版本](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/787674836a093820.png) ## 💡 经验教训 将一个业余爱好项目视为真实系统,可以总结出远远超出游戏领域的经验教训: - **凭证存在于多个地方。** 数据库密码必须在 Docker Compose 文件*和*应用程序的 `.conf` 文件中保持一致。密码中的 `#` 字符悄无声息地破坏了解析器——这提醒我们,密钥管理失败往往发生在组件之间的间隙,而不是组件内部。 - **验证实际生效的状态,而不是配置文件。** 检查 `sshd -T`(合并后的运行配置)而不是盲目相信单个文件,这正是*假设*控制措施已启用与*证明*其已启用之间的区别。 - **根据资源匹配合适的任务。** 在本地而不是云实例上提取客户端数据,避免了消耗 CPU 额度——这是一个具有实际成本影响的小型架构决策。 - **不要默认信任——也不要凭感觉拒绝。** 杀毒软件的检测需要人为判断:通过动态分析和跨来源哈希验证,区分启发式误报和真实威胁,而不是仅仅被可怕的标签吓倒。 - **这是应用于安全的 QA。** 在信任之前进行验证,在暴露之前映射攻击面,并证明控制措施有效,这与我从测试自动化中带来的思维方式相同——现在正应用于基础设施。 ## 🔭 可能的扩展 - 启用服务器端的 **Warden** 反作弊系统,并从内部研究客户端完整性检测。 - 使用 **Wireshark** 捕获并分析身份验证协议。 - 添加自动化配置审计(例如,CIS 风格的检查清单脚本)。 - ✅ **集中式日志记录和检测** —— 参见 [`docs/blue-team-logging.md`](./docs/blue-team-logging.md):包含安全的主机外架构、纵深防御分析和实时检测验证的 Loki + Grafana + Promtail pipeline。 ## 👤 关于 由 **José** 构建 —— 一名正向网络安全领域转型的 QA 自动化工程师。 这个实验室反映了我对安全的态度:将 QA 的**测试与验证思维**带入基础设施和蓝队工作中——在信任不受信任的软件之前对其进行验证,在暴露之前映射攻击面,并证明控制措施确实有效,而不是主观假设。 🔗 [ LinkedIn](https://www.linkedin.com/in/jos%C3%A9-angel-argento-victoria/) · [🔐 pentest-lab](https://github.com/JoseArgento/pentest-lab) ## ⚖️ 免责声明 这是一个运行在私有基础设施上的个人、非商业性实验室,旨在 用于云安全、Linux 管理和容器编排的教育目的。 ## 📄 许可证 在 MIT 许可证下发布。参见 [`LICENSE`](./LICENSE)。
标签:AWS EC2, Docker Compose, 游戏服务器, 版权保护, 系统加固, 网络安全实验, 请求拦截