logo
0
0
WeChat Login
refactor: 重写根目录 README,基于项目实际内容重新组织

AgentSRE - Linux 运维故障排查竞赛平台

AgentSRE 是一个面向运维工程师的 Linux 故障排查竞赛平台,模拟真实生产环境中的运维故障场景,考察选手在 Docker、LAMP、Systemd、权限控制等方面的综合排障能力。

项目特点

  • 一键部署全部 10 道故障题目
  • 适配国内网络环境(清华镜像源)
  • 从纯净 Debian 12 开始自动安装 Docker / LAMP / MariaDB 等环境
  • 每道题目独立目录,支持重置(重新执行 prepare.sh)与自动验证(check.sh
  • Flag 动态生成,不以普通文本文件落地,每次部署均不同
  • 裁判/选手双角色分工,支持自动化评分与 WebHook 实时汇报

系统要求

项目推荐
操作系统Debian 12 / Ubuntu 22.04+
CPU4 核
内存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验证方式
01Docker Daemon 故障100✅ 有Flag 在 flag01 容器环境变量中
02Apache + PHP-FPM Socket 错误⭐⭐150✅ 有Flag 在 phpinfo 页面环境变量中
03PHP 扩展缺失100✅ 有Flag 在数据库 ops03db.flags 表中
04MariaDB 授权错误⭐⭐150✅ 有Flag 在数据库 appdb.flag_table 表中
05APT 混乱⭐⭐150❌ 无裁判运行 check.sh 验证
06ACL 共享权限⭐⭐150❌ 无裁判运行 check.sh 验证
07隐藏 immutable 属性⭐⭐⭐200❌ 无裁判运行 check.sh 验证
08Systemd 服务异常⭐⭐150❌ 无裁判运行 check.sh 验证
09Cron 任务失效100❌ 无裁判运行 check.sh 验证
10Docker Volume 权限错误⭐⭐150✅ 有Flag 在容器内 flag_db.flags 表中

总分:1400 分

快速部署

裁判端部署

# 1. 进入裁判目录
cd 裁判/

# 2. 一键部署全部题目(自动安装依赖 + 注入故障)
bash deploy-all.sh

deploy-all.sh 会依次执行:

  1. bootstrap.sh — 配置镜像源、安装 Docker / LAMP / MariaDB 等基础环境
  2. 按顺序执行每道题目的 prepare.sh — 注入故障、生成 Flag
  3. 输出 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 汇报

核心组件说明

bootstrap.sh

基础环境初始化,负责:

  • 配置清华镜像源(自动检测系统版本代号)
  • 安装基础工具(vim, curl, jq, acl 等)
  • 安装 Docker CE(已安装则跳过)
  • 安装 LAMP 栈:Apache2 + MariaDB + PHP-FPM(已安装则跳过)
  • 启用并启动 Docker / MariaDB / Apache2 服务

common/flags.sh

Flag 动态生成工具,格式为 flag{<sha256-hash>},基于题目名称 + 时间戳 + 随机数生成,确保每次部署 Flag 不同。

common/mirrors.sh

国内镜像源配置,自动检测 Debian 版本代号,配置清华 TUNA 镜像,支持 Docker CE 和系统软件源。

common/utils.sh

通用日志工具,提供 log_info()log_error() 函数。

技术栈

类别技术
操作系统Debian 12
容器Docker CE
Web 服务Apache2 + PHP-FPM
数据库MariaDB
缓存Redis
权限管理ACL / chattr / chmod
进程管理Systemd / Cron
包管理APT

许可证

本项目仅供内部培训与竞赛使用。