2026 盘古石预赛 — PVE 集群服务器取证完整解题报告(最终版)
环境: 3 台 Proxmox VE 节点 + Ceph 存储 + VM 100 (CentOS 7, Laravel 理财平台)
工具: Hermes Agent + MCP SSH + MySQL 直接查询
模型: Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-Q4_K_P.gguf (本地运行)
完成时间: 2026-06-04
作者: yagami
工具与模型
| 项目 |
内容 |
| 工具 |
Hermes Agent + MCP SSH + MySQL |
| 模型 |
Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-Q4_K_P.gguf |
| 运行方式 |
本地 |
任务信息
- 题目范围: Q1-Q30(PVE集群分析 Q1-Q10 + VM服务器分析 Q11-Q20 + VM应用取证 Q21-Q30)
- 状态文件:
/mnt/d/文档/hermes-work/e01-q1-to-q20/state.md, answers.md, final-answers.md, findings.md, verification.md, errors.md
- 验证策略: 统计类题目需 L2/L3 多源交叉验证(API+DB+源码/日志);配置类题目 L1 即可
一、环境概览
服务器信息
| 节点 |
IP |
Hostname |
OS |
内核 |
| server01 |
192.168.100.119:22 |
pve-node1 |
Debian 13 (trixie) |
6.17.2-1-pve |
| server02 |
192.168.100.126:22 |
pve-node2 |
Debian 13 (trixie) |
6.17.2-1-pve |
| server03 |
192.168.100.138:22 |
pve-node3 |
Debian 13 (trixie) |
6.17.2-1-pve |
SSH: root/123456(需用 sshpass 传递密码)
集群名: pgscup2026
Ceph 资源池: Ceph_pgscup_pool (RBD 类型)
VM 100 "web"
| 项目 |
值 |
| VMID |
100 |
| 位置 |
pve-node1 |
| OS |
CentOS 7 |
| 内核 |
3.10.0-957.el7.x86_64 |
| 独立 IP |
192.168.100.106:22 (root/123456) |
| 内部 IP |
192.168.0.70 |
| MySQL |
root/pgscup@o26, 数据库 jinqin |
| 网站 |
http://192.168.100.106/dist/ (金鳞资本) |
| 后台 |
http://192.168.100.106/admin/login (admin/admin123) |
二、PVE 集群恢复与 VM 取证过程
2.1 PVE 网络修复(三台服务器)
前置条件: 在 VMware 中给每台 PVE 虚拟机增加一块 NAT 网卡用来互通,该网卡在系统内识别为 ens36。
问题: /etc/network/interfaces 中 bridge-ports nic0/nic1 但实际物理网卡为 ens36(VMware 新增的 NAT 网卡)。ens36 不能同时属于 vmbr0 和 vmbr1。
修复步骤:
# 1. 确认物理网卡
ls /sys/class/net/
# 输出: bonding_masters, ens33, ens36, lo, vmbr0, vmbr1
# 2. 备份原配置
cp /etc/network/interfaces /etc/network/interfaces.bak
# 3. 修改配置:ens36 → vmbr0,vmbr1 改为纯软件桥
cat > /etc/network/interfaces << 'EOF'
auto ens36
iface ens36 inet manual
auto vmbr0
iface vmbr0 inet static
address ${NODE_IP}/24
gateway 192.168.0.1
bridge-ports ens36
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 192.168.1.${X}/24
bridge-ports none
bridge-stp off
bridge-fd 0
EOF
# 4. 重启网络
ifdown vmbr0 2>/dev/null; ifdown vmbr1 2>/dev/null; sleep 1
ifup ens36 && ifup vmbr0 && ifup vmbr1
# 5. 验证集群通信
ping -c 2 -W 2 192.168.0.51 && ping -c 2 -W 2 192.168.0.52
corosync-cfgtool -s
# nodeid 1/2/3: 全部 connected
2.2 Ceph 集群恢复
问题: 网络修复后 ceph.conf 中 mon_host、cluster_network、public_network 仍使用旧网段 192.168.170.x,导致 Ceph pool inactive。
根因分析: Ceph monitor 绑定 IP 来自 mon map(存储在 /var/lib/ceph/mon/ 数据目录),而非仅 ceph.conf。即使修改了 ceph.conf,mon 进程仍尝试绑定到旧 IP。
修复方案(在 vmbr0 上添加旧 IP 作为辅助地址):
# 三台节点添加旧 IP
ip addr add 192.168.170.50/24 dev vmbr0 # pve-node1
ip addr add 192.168.170.51/24 dev vmbr0 # pve-node2
ip addr add 192.168.170.52/24 dev vmbr0 # pve-node3
# 重启 Ceph monitor(三台节点)
systemctl restart ceph-mon@$(hostname)
# 启动 OSD(三台节点)
systemctl start ceph-osd@<id>
# 验证集群状态
ceph -s
# mon: 3 daemons, quorum pve-node1,pve-node2,pve-node3 ✓
# osd: 3 osds: 3 up, 3 in ✓
# pgs: 33 active+clean ✓
2.3 VM 100 启动(TCG 软件模拟)
问题: pve-node1 无 /dev/kvm,CPU flags 无 vmx/svm(嵌套虚拟化未启用)。
关键: vm100 启动的关键是把内存调小、CPU核心数调少,然后去掉 KVM 硬件虚拟化勾选。TCG 软件模拟下资源消耗极大,默认 8192MB 内存 + 多核会导致宿主机卡顿甚至 OOM。
修复:
# 1. 调整 VM 配置:内存调小、CPU核心数调少、禁用KVM硬件虚拟化
qm set 100 --memory 1024 --cores 1 --kvm 0
# update VM 100: memory=1024, cores=1, kvm=0
# 2. 启动 VM(TCG 慢但实际已启动)
qm start 100
# got timeout(TCG慢但实际已启动)
# 3. 验证
qm list
# VMID 100 NAME web STATUS running MEM(MB) 1024 BOOTDISK(GB) 60.00 PID 8803
注意事项:
--memory 1024: 将内存从默认的 8192MB 降至 1024MB,减少宿主机压力
--cores 1: 将 CPU 核心数降为 1,TCG 模拟多核会指数级增加计算量
--kvm 0: 禁用 KVM 硬件加速,使用 TCG 软件模拟(PVE Web UI 中即去掉"KVM hardware virtualization"勾选)
- TCG 模式下 CentOS 7 完全启动可能需要 2-5 分钟,
qm start 报告 timeout 但 VM 实际已启动
2.4 VM 磁盘导出与挂载(RBD export + qemu-nbd)
当 VM 网络不可达或需要离线取证时,通过 RBD export 导出磁盘镜像:
# 1. 导出 RBD 镜像为本地文件(后台执行,60G 约需 15-30 分钟)
rbd --id admin -k /etc/pve/priv/ceph/Ceph_pgscup_pool.keyring \
export Ceph_pgscup_pool/vm-100-disk-0 /tmp/vm100.img
# 2. 连接 nbd 设备
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 -f raw /tmp/vm100.img
# 3. 查看分区并挂载
fdisk -l /dev/nbd0 # 查看分区表
partprobe /dev/nbd0 # 刷新分区信息
mount /dev/nbd0p1 /mnt/vm100boot # /boot 分区(ext4,非 LVM)
# CentOS 7 使用 LVM
pvscan && vgscan && lvscan
vgchange -ay centos
mount /dev/centos/root /mnt/vm100root # root 分区(LVM 逻辑卷)
# 4. 读取数据
ls /mnt/vm100boot/ # vmlinuz-3.10.0-957.el7.x86_64, config-3.10.0-957.el7.x86_64
cat /mnt/vm100root/etc/ssh/sshd_config # SSH 配置
cat /mnt/vm100root/etc/sysconfig/network-scripts/ifcfg-eth0 # 网络配置
# 5. 清理
qemu-nbd --disconnect /dev/nbd0
2.5 VM 内环境配置(MySQL 导入 + 网站启动)
# 1. 导入 1.sql 到 jinqin 数据库
mysql -uroot -p'pgscup@o26' -e "CREATE DATABASE IF NOT EXISTS jinqin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -uroot -p'pgscup@o26' --default-character-set=utf8mb4 jinqin < /var/www/html/1.sql
# 结果: IMPORT_OK, 52张表
# 2. 解密 jinqin_backup.sql.gz.enc (CentOS 7 OpenSSL 1.0.2k)
cd /home && openssl aes-256-cbc -d -salt -pass pass:'JDSJ2026@Backup' -in jinqin_backup.sql.gz.enc -out jinqin_backup.sql.gz
cp jinqin_backup.sql.gz jinqin_backup.sql.gz.bak && gunzip jinqin_backup.sql.gz
# 结果: /home/jinqin_backup.sql (170MB)
# 3. 导入完整备份
mysql -uroot -p'pgscup@o26' --default-character-set=utf8mb4 jinqin < /home/jinqin_backup.sql
# 结果: IMPORT_COMPLETE, users=21679, user_chat=11494, wallet_log=325289, c2c_deal=119194, lever_transaction=326086
# 4. 开启 general_log
mysql -uroot -p'pgscup@o26' jinqin -e "SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/lib/mysql/general.log'; SET GLOBAL log_output = 'FILE';"
# 5. 启动网站服务
systemctl start php-fpm
# Nginx 已在运行
# 6. 解密 .env.obf → .env (Python 4层解密)
python3 -c "import base64; ... XOR_KEY=0x5A ..."
# 结果: APP_KEY, DB_HOST=127.0.0.1, DB_DATABASE=jinqin, DB_PASSWORD=pgscup@o26
# 7. 验证网站
curl -sL -H "Host: jlzb.vip" http://127.0.0.1:80/dist/
# HTTP 200, 页面标题"金鳞资本|change"
# 8. 后台登录
curl -s -X POST http://127.0.0.1:80/admin/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=admin123"
# 输出: {"type":"ok","message":"登陆成功"}
三、题目列表与答案汇总
答案汇总总表
| 题号 |
答案 |
答案状态 |
验证等级 |
关键证据摘要 |
| Q1 |
9.1.1 |
已验证 |
L2 |
pveversion 三节点一致输出 pve-manager/9.1.1 |
| Q2 |
6.17.2-1-pve |
已验证 |
L3 |
uname -r 三节点一致 + pveversion running kernel确认 |
| Q3 |
pgscup2026 |
已验证 |
L2 |
corosync.conf cluster_name 三节点一致 |
| Q4 |
FD:11:CE |
已验证 |
L1 |
pve-node1 pve-ssl.pem SHA256指纹前6位 |
| Q5 |
ntp.aliyun.com |
已验证 |
L3 |
timesyncd.conf + chrony.conf 双配置三节点一致 |
| Q6 |
Ceph_pgscup_pool |
已验证 |
L2 |
VM配置 scsi0 三节点一致确认 |
| Q7 |
RBD |
已验证 |
L3 |
pvesm status + storage.cfg rbd: Ceph_pgscup_pool 三节点一致 |
| Q8 |
3f28d8bb |
已验证 |
L2 |
ceph.conf fsid 三节点一致 |
| Q9 |
2 |
已验证 |
L2 |
ceph.conf osd_pool_default_min_size=2 |