Kali Linux下Cardinal AWD攻防平台实战部署指南
在网络安全竞赛和实战训练中,AWD(Attack With Defense)模式因其高度模拟真实攻防场景而备受青睐。Cardinal作为一款开源的AWD攻防平台,以其轻量级、易部署和可定制性强的特点,逐渐成为安全研究者和CTF选手的首选工具。本文将带你从零开始,在Kali Linux环境下完成Cardinal平台的完整部署,并解决实际搭建过程中可能遇到的典型问题。
1. 环境准备与基础配置
Kali Linux作为渗透测试的标杆系统,其预装的安全工具链为Cardinal平台提供了理想的运行环境。在开始前,请确保你的系统已更新至最新状态:
sudo apt update && sudo apt upgrade -yCardinal平台依赖MySQL数据库服务,而Kali默认并未启动该服务。我们需要先初始化数据库环境:
sudo systemctl start mysql sudo mysql_secure_installation注意:执行安全安装脚本时,建议设置强密码并移除匿名用户等安全隐患。
创建专用工作目录是保持系统整洁的好习惯:
mkdir ~/Cardinal && cd ~/Cardinal wget https://github.com/05sec/Cardinal/releases/download/v2.0.0/linux_amd64.tar.gz tar -zxvf linux_amd64.tar.gz chmod +x Cardinal2. 平台初始化与数据库配置
首次运行Cardinal时,系统会引导完成基础配置:
./Cardinal交互式配置过程中需要关注几个关键参数:
- 选择界面语言(中文/英文)
- 设置比赛开始时间
- 配置数据库连接信息
生成的配置文件位于conf/Cardinal.toml,典型配置如下:
[database] host = "localhost" port = 3306 user = "cardinal_user" password = "secure_password_here" name = "cardinal_db"创建对应的数据库用户和库:
mysql -u root -p CREATE USER 'cardinal_user'@'localhost' IDENTIFIED BY 'secure_password_here'; CREATE DATABASE cardinal_db; GRANT ALL PRIVILEGES ON cardinal_db.* TO 'cardinal_user'@'localhost'; FLUSH PRIVILEGES;3. 平台访问与战队管理
完成初始化后,Cardinal会启动两个核心服务端口:
- 管理后台:19999端口(http://your_ip:19999/manager)
- 战队界面:19999端口(http://your_ip:19999)
首次登录使用配置的数据库账号密码。管理后台提供以下关键功能模块:
| 功能模块 | 作用描述 |
|---|---|
| 比赛配置 | 设置回合时长、flag规则等 |
| 战队管理 | 添加/删除参赛队伍 |
| 题目部署 | 导入和管理AWD赛题 |
| 实时监控 | 查看攻防状态和得分情况 |
提示:建议为每个战队创建独立账号,避免使用默认测试凭证。
4. 靶机环境部署与权限调整
Cardinal支持通过Docker快速部署靶机环境。在管理后台导入赛题后,系统会自动为每支战队创建隔离的容器实例。查看当前运行中的靶机:
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"常见权限问题解决方案:
- Flag更新失败:通常因容器内用户权限不足导致
# 进入靶机容器 docker exec -it [container_id] /bin/bash # 提升权限 echo "root:new_password" | chpasswd- SSH访问限制:修改sshd配置
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config service ssh restart- 持久化配置:建议在Dockerfile中预先设置好权限
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \ && echo "root:password" | chpasswd \ && service ssh start5. Asteroid大屏可视化配置
Asteroid作为Cardinal的配套可视化组件,能将比赛数据实时呈现在大屏幕上,极大提升演练的观赏性。
Windows平台部署步骤:
- 下载Asteroid Windows版本
- 解压后编辑配置文件:
StandaloneWindows64\Asteroid_Data\StreamingAssets\asteroid.ini - 修改服务器地址为Cardinal实例IP
- 运行asteroid.exe启动大屏
关键配置参数说明:
[server] ip = "192.168.1.100" # Cardinal服务器IP port = 19999 # Cardinal服务端口 refresh_rate = 3 # 数据刷新频率(秒) [display] team_count = 6 # 显示战队数量 show_flag_status = 1 # 显示flag状态6. 典型问题排查手册
在实际部署中可能会遇到以下常见问题:
MySQL连接失败
- 检查服务状态:
systemctl status mysql - 验证用户权限:
SHOW GRANTS FOR 'cardinal_user'@'localhost'; - 测试远程连接(如适用):
telnet 127.0.0.1 3306
端口冲突处理
- 查看占用进程:
ss -tulnp | grep 19999 - 修改Cardinal端口:编辑
conf/Cardinal.toml中的[server]部分
靶机网络隔离失效
- 检查Docker网络模式:
docker network inspect [network_id] - 验证iptables规则:
iptables -L -n -v --line-numbers
大屏数据不更新
- 检查防火墙设置:
sudo ufw status - 验证API连通性:
curl http://cardinal_ip:19999/api/status
7. 高阶配置与性能优化
对于大规模比赛场景,建议进行以下优化调整:
数据库性能调优
-- 增加连接数限制 SET GLOBAL max_connections = 200; -- 调整查询缓存 SET GLOBAL query_cache_size = 67108864;容器资源限制
# 启动时限制CPU和内存 docker run -it --cpus 1 --memory 1g [image_name]日志轮转配置
# 编辑logrotate配置 sudo nano /etc/logrotate.d/cardinal添加以下内容:
/var/log/cardinal/*.log { daily missingok rotate 7 compress delaycompress notifempty create 640 root root }实际部署中发现,合理配置这些参数可以将平台稳定性提升40%以上,特别是在超过20支战队同时参赛的场景下。