Vagrant 快速搭建 Kali 安全测试实验室
Vagrant 是什么
Vagrant 是 HashiCorp 开发的虚拟机管理工具,用 Ruby DSL 写一个 Vagrantfile,一行命令就能拉起完整的虚拟机环境。它解决的痛点:
- 可复现:团队所有人用同一份 Vagrantfile,环境完全一致
- 快速销毁重建:测试完
vagrant destroy && vagrant up重置到干净状态 - 脚本化:provision 脚本可以自动配置网络、安装软件、设好共享目录
安装
# 先装 VirtualBox 或 VMware
# 装 Vagrant(官方网站下载或包管理器)
# Kali 自带:
sudo apt install vagrant
基础示例:拉起 Kali + Metasploitable
这是最经典的入门实验:
Vagrantfile
Vagrant.configure("2") do |config|
# Kali 作为攻击机
config.vm.define "kali" do |kali|
kali.vm.box = "kalilinux/rolling"
kali.vm.network "private_network", ip: "192.168.56.100"
kali.vm.hostname = "kali-attacker"
end
# Metasploitable 2 作为靶机
config.vm.define "target" do |target|
target.vm.box = "rapid7/metasploitable3-ub1404"
target.vm.network "private_network", ip: "192.168.56.101"
target.vm.hostname = "target"
end
end
启动和连接
vagrant up # 同时启动两台 VM
vagrant ssh kali # SSH 进入 Kali
vagrant ssh target # SSH 进入靶机
vagrant halt # 关闭所有 VM
vagrant destroy -f # 彻底删除(包括磁盘)
从 Kali 里可以直接 nmap 192.168.56.101 扫描靶机,然后跑 Metasploit 攻击。
预构建 Kali Vagrant 镜像
Kali 官方维护了几种 Vagrant box:
| Box | 说明 |
|---|---|
kalilinux/rolling | 最新 Kali Rolling,GNOME 桌面 |
kalilinux/rolling (headless) | 无桌面,更轻量 |
kalilinux/kali-linux-docker | Docker 镜像 |
# 启动 headless Kali
vagrant init kalilinux/rolling
vagrant up
Provision:自动配置
provision 脚本在 VM 第一次启动时自动执行,可以装软件、改配置:
Vagrant.configure("2") do |config|
config.vm.box = "kalilinux/rolling"
config.vm.network "private_network", ip: "192.168.56.100"
# Shell provision
config.vm.provision "shell", inline: <<-SCRIPT
apt-get update -y
apt-get install -y kali-linux-top10
echo "实验室 Kali 准备就绪"
SCRIPT
# 共享目录(主机 ↔ VM)
config.vm.synced_folder "./shared", "/home/vagrant/shared"
end
搭建更大的实验室
Active Directory 实验环境(最难)
可以用 Vagrant 拉起 Windows Server + Kali:
Vagrant.configure("2") do |config|
config.vm.box = "gusztavvargadr/windows-server-2022-standard"
# domain controller
# member server
# workstation
# kali attacker
# 所有 VM 在同一个 private_network
end
Web 应用靶场(OWASP Juice Shop)
# 直接用 Docker + Vagrant
config.vm.provision "shell", inline: <<-SCRIPT
docker pull bkimminich/juice-shop
docker run -d -p 3000:3000 bkimminich/juice-shop
SCRIPT
常用靶机清单
| 靶机 | 描述 | Vagrant Box / 来源 |
|---|---|---|
| Metasploitable 2/3 | 故意留漏洞的 Linux/Ubuntu | rapid7/metasploitable3 |
| OWASP BWA | OWASP Broken Web Applications | SourceForge 下载 OVA |
| VulnHub | 社区 CTF 靶机全集 | vulnhub.com 下载 OVA |
| HackTheBox | 在线实验室(非 Vagrant) | hackthebox.com |
| TryHackMe | 在线学习平台(非 Vagrant) | tryhackme.com |
Vagrant vs 直接用 VMware
| 维度 | Vagrant | 直接 VMware |
|---|---|---|
| 环境复现 | Vagrantfile 在 git 里,拉下来就能跑 | 要分发 OVA 文件 |
| 团队协作 | 每个人 git pull && vagrant up | 每个人手动配置 |
| 自动化 | provision 脚本 + CI/CD 集成 | 手动操作 |
| 灵活性 | Ruby DSL,编程式 | GUI,所见即所得 |
| 调试 | 命令行 vagrant status/ssh/debug | VMware GUI 管理更直观 |
Vagrant 不是要取代 VMware/VirtualBox——它是在上层把它们封装成可自动化管理的基础设施。