AgentSRE 是一个面向运维工程师的 Linux 故障排查竞赛平台,模拟真实生产环境中的运维故障场景,考察选手在 Docker、LAMP、Systemd、权限控制等方面的综合排障能力。
prepare.sh)与自动验证(check.sh)| 项目 | 推荐 |
|---|---|
| 操作系统 | Debian 12 / Ubuntu 22.04+ |
| CPU | 4 核 |
| 内存 | 8 GB |
| 磁盘 | 50 GB SSD |
AgentSRE/
├── readme.md # 项目说明(本文件)
├── 裁判/ # 裁判端资源
│ ├── readme.md # 裁判规则与操作指南
│ ├── bootstrap.sh # 基础环境初始化脚本
│ ├── deploy-all.sh # 一键部署全部题目
│ ├── login.pem # 服务器 SSH 密钥
│ ├── common/
│ │ ├── flags.sh # Flag 动态生成工具
│ │ ├── mirrors.sh # 国内镜像源与软件安装
│ │ └── utils.sh # 通用日志工具
│ └── challenges/ # 10 道故障题目
│ ├── 01-docker-daemon/
│ │ ├── prepare.sh # 故障注入脚本
│ │ └── check.sh # 修复验证脚本
│ ├── 02-lamp-fpm/
│ ├── 03-php-extension/
│ ├── 04-mariadb-auth/
│ ├── 05-apt-chaos/
│ ├── 06-acl-share/
│ ├── 07-hidden-immutable/
│ ├── 08-systemd-service/
│ ├── 09-cron-broken/
│ └── 10-docker-volume/
└── 选手/ # 选手端资源
├── readme.md # 选手比赛指南
├── login.pem # 服务器 SSH 密钥
├── 01-docker-daemon/
│ └── readme.md # 题目说明(不含答案)
├── 02-lamp-fpm/
├── 03-php-extension/
├── 04-mariadb-auth/
├── 05-apt-chaos/
├── 06-acl-share/
├── 07-hidden-immutable/
├── 08-systemd-service/
├── 09-cron-broken/
└── 10-docker-volume/
| 编号 | 题目名称 | 难度 | 分值 | Flag | 验证方式 |
|---|---|---|---|---|---|
| 01 | Docker Daemon 故障 | ⭐ | 100 | ✅ 有 | Flag 在 flag01 容器环境变量中 |
| 02 | Apache + PHP-FPM Socket 错误 | ⭐⭐ | 150 | ✅ 有 | Flag 在 phpinfo 页面环境变量中 |
| 03 | PHP 扩展缺失 | ⭐ | 100 | ✅ 有 | Flag 在数据库 ops03db.flags 表中 |
| 04 | MariaDB 授权错误 | ⭐⭐ | 150 | ✅ 有 | Flag 在数据库 appdb.flag_table 表中 |
| 05 | APT 混乱 | ⭐⭐ | 150 | ❌ 无 | 裁判运行 check.sh 验证 |
| 06 | ACL 共享权限 | ⭐⭐ | 150 | ❌ 无 | 裁判运行 check.sh 验证 |
| 07 | 隐藏 immutable 属性 | ⭐⭐⭐ | 200 | ❌ 无 | 裁判运行 check.sh 验证 |
| 08 | Systemd 服务异常 | ⭐⭐ | 150 | ❌ 无 | 裁判运行 check.sh 验证 |
| 09 | Cron 任务失效 | ⭐ | 100 | ❌ 无 | 裁判运行 check.sh 验证 |
| 10 | Docker Volume 权限错误 | ⭐⭐ | 150 | ✅ 有 | Flag 在容器内 flag_db.flags 表中 |
总分:1400 分
# 1. 进入裁判目录
cd 裁判/
# 2. 一键部署全部题目(自动安装依赖 + 注入故障)
bash deploy-all.sh
deploy-all.sh 会依次执行:
bootstrap.sh — 配置镜像源、安装 Docker / LAMP / MariaDB 等基础环境prepare.sh — 注入故障、生成 Flag注意:部署完成后,请删除选手服务器上的裁判目录并清空 bash history。
bash 裁判/challenges/01-docker-daemon/prepare.sh
重新执行对应题目的 prepare.sh 即可重新注入故障。
for d in 裁判/challenges/*/check.sh; do bash "$d" && echo "$d: PASS" || echo "$d: FAIL"; done
裁判部署环境 ──▶ 选手登录服务器 ──▶ 排查故障 ──▶ 修复故障
│
┌─────────┴──────────┐
│ │
有 Flag 题目 无 Flag 题目
获取并提交 Flag 通知裁判验证
│ │
└─────────┬──────────┘
▼
裁判核验评分
│
WebHook 汇报
基础环境初始化,负责:
Flag 动态生成工具,格式为 flag{<sha256-hash>},基于题目名称 + 时间戳 + 随机数生成,确保每次部署 Flag 不同。
国内镜像源配置,自动检测 Debian 版本代号,配置清华 TUNA 镜像,支持 Docker CE 和系统软件源。
通用日志工具,提供 log_info() 和 log_error() 函数。
| 类别 | 技术 |
|---|---|
| 操作系统 | Debian 12 |
| 容器 | Docker CE |
| Web 服务 | Apache2 + PHP-FPM |
| 数据库 | MariaDB |
| 缓存 | Redis |
| 权限管理 | ACL / chattr / chmod |
| 进程管理 | Systemd / Cron |
| 包管理 | APT |
本项目仅供内部培训与竞赛使用。