资讯动态

从零搭建AWD攻防训练平台:实战部署与避坑指南

发布时间:2026/9/8 17:55:05 来源:尧图企业网站定制
1. 为什么你需要一个AWD训练平台第一次参加AWD比赛时我手忙脚乱地连SSH都输错三次密码。看着队友在公屏疯狂刷flag被偷了自己却连漏洞在哪都找不到——这种无力感让我下定决心搭建自己的训练环境。AWDAttack With Defense攻防赛是CTF比赛中极具实战性的模式选手需要在攻击对手系统的同时防守自己的服务。而一个本地训练平台能让你随时复现比赛场景不用等官方比赛想练就练自由调整难度从基础漏洞到复杂链式攻击逐步提升安全测试攻击手法不用担心被封IP或误伤真实系统团队协作演练模拟真实比赛中的分工配合我见过太多新手在真实比赛中因为缺乏训练连最简单的权限维持都做不好。自己搭建平台后你会发现那些看似神秘的攻击手法其实都有规律可循。2. 环境准备避开Docker的坑2.1 选择适合的宿主系统实测在Ubuntu 22.04 LTS上最稳定CentOS的selinux会莫名拦截Docker网络。如果是Windows用户建议直接用WSL2安装Ubuntu别折腾Docker Desktop——我在Windows上遇到过端口映射随机失效的玄学问题。关键安装命令# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release # 添加官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io2.2 解决镜像下载慢的问题凌晨三点等一个2GB的镜像下载进度条像凝固了一样——这是我最想避免的回忆。国内用户一定要配置镜像加速修改/etc/docker/daemon.json没有就新建{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }重启服务sudo systemctl daemon-reload sudo systemctl restart docker验证加速是否生效docker info | grep -A 1 Registry Mirrors3. 平台部署实战3.1 选择AWD平台框架测试过CTFd、FBCTF等平台后我最终选择了awd-platform这个开源项目。它专为AWD设计自带队伍隔离、flag自动提交、实时积分榜等比赛必需功能。部署步骤# 克隆仓库 git clone https://github.com/example/awd-platform.git cd awd-platform # 构建镜像建议在晚上睡觉前开始 docker-compose build # 启动服务 docker-compose up -d第一次启动可能会遇到MySQL连接问题这是因为数据库还没初始化完成。等2分钟后执行docker-compose exec web python manage.py migrate3.2 网络配置的坑比赛中最怕队伍间网络不通。用这个命令检查各容器是否能互通docker network inspect awd-platform_default | grep IPv4Address如果发现IP冲突比如和其他Docker项目重叠修改docker-compose.yml中的网络配置networks: awd_net: driver: bridge ipam: config: - subnet: 172.20.0.0/244. 比赛管理与题目部署4.1 快速导入漏洞环境不要从头构建镜像我收集了常见漏洞的Dockerfile模板SSH弱密码FROM ubuntu:20.04 RUN apt update apt install -y openssh-server \ echo root:password | chpasswd \ mkdir /var/run/sshd CMD [/usr/sbin/sshd, -D]Web任意文件读取FROM php:5.6-apache COPY vuln.php /var/www/html/ RUN chmod 755 /var/www/html/vuln.php把这些Dockerfile放在./challenges目录下平台会自动识别为可部署题目。4.2 比赛流程自动化手动开比赛太麻烦我用这个脚本实现自动化#!/usr/bin/env python3 import requests API_URL http://localhost:8000/api HEADERS {Authorization: Token your_admin_token} # 创建比赛 r requests.post( f{API_URL}/competitions/, json{ name: 周末训练赛, start_time: 2023-08-19T14:00:00Z, end_time: 2023-08-19T18:00:00Z, team_count: 6 }, headersHEADERS ) comp_id r.json()[id] # 批量添加题目 challenges [ssh_weak_pass, file_read, rce] for i, name in enumerate(challenges, 1): requests.post( f{API_URL}/competitions/{comp_id}/challenges/, json{name: name, image: fchallenge_{name}, points: 100 * i}, headersHEADERS )5. 常见问题排查手册5.1 容器启动失败错误日志查看姿势docker logs container_id --tail 50 -f最常见的是端口冲突用这个命令找出占用端口的进程sudo netstat -tulnp | grep :805.2 Flag提交异常检查三个地方检查平台的check服务是否正常docker-compose exec checker ps aux验证队伍间网络连通性docker exec -it team1 ping team2查看flag提交日志docker-compose exec web tail -f /var/log/flag_submit.log6. 高阶技巧模拟真实比赛环境6.1 流量干扰与延迟真实比赛中网络不会这么稳定。用tc命令给容器添加网络延迟docker exec -it team1 tc qdisc add dev eth0 root netem delay 100ms 20ms查看当前网络规则docker exec -it team1 tc qdisc show6.2 自动化攻击检测在平台管理节点部署简易IDSdocker-compose exec web apt install -y suricata docker-compose exec web suricata -c /etc/suricata/suricata.yaml -i eth0监控报警日志docker-compose exec web tail -f /var/log/suricata/fast.log记得定期清理日志文件否则磁盘很快会满。我写了个每日凌晨执行的cron任务0 3 * * * docker exec awd-platform_web_1 bash -c echo /var/log/suricata/fast.log

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价