如果你正在学习网络安全,或者需要测试自己的安全工具,一个本地化的漏洞靶场绝对是刚需。Vulfocus作为国内知名的漏洞演练平台,集成了上百种常见漏洞环境,从SQL注入到远程代码执行应有尽有。而Kali Linux作为渗透测试的瑞士军刀,天生就是运行这类安全工具的最佳载体。
我最初也是在虚拟机里直接安装各种漏洞环境,直到磁盘被塞爆三次后才醒悟——用Docker容器化部署才是正道。容器不仅隔离性好、资源占用低,最关键是能像乐高积木一样随时拆装不同漏洞环境。实测下来,同样的漏洞环境用Docker部署比传统方式节省60%以上的磁盘空间,这对经常需要切换测试场景的安全人员简直是救命稻草。
首先确认你的Kali是最新版本(2023.x以上),老版本可能会遇到内核兼容性问题。打开终端输入以下命令更新系统:
bash复制sudo apt update && sudo apt full-upgrade -y
这里有个隐藏坑点:默认安装的Kali可能没有启用docker服务。用这个命令检查docker状态:
bash复制systemctl status docker
如果看到"inactive"字样,需要先启动服务:
bash复制sudo systemctl enable --now docker
我遇到最多的问题就是新手在20GB的默认虚拟机配置下部署失败。用这个命令查看磁盘使用情况:
bash复制df -h
如果可用空间不足10GB,强烈建议通过虚拟机管理工具扩容到至少30GB。扩容后还需要用gparted工具调整分区大小,具体操作:
sudo apt install gparted -ysudo gparted官方镜像托管在Docker Hub,直接执行:
bash复制docker pull vulfocus/vulfocus:latest
如果遇到网络超时,可以尝试配置国内镜像源。创建或修改/etc/docker/daemon.json文件:
json复制{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
然后重启docker服务:
bash复制sudo systemctl restart docker
基础运行命令如下:
bash复制docker run -d --name vulfocus -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=你的IP vulfocus/vulfocus
这里有几个关键参数需要特别注意:
-v /var/run/docker.sock:这个挂载让Vulfocus能创建嵌套容器VUL_IP:必须设置为宿主机的Docker网络IP,用ifconfig docker0查看--restart=always让容器自动重启我推荐的生产级启动命令:
bash复制docker run -d \
--name vulfocus \
--restart=always \
-p 8080:80 \
-v /opt/vulfocus:/tmp \
-v /var/run/docker.sock:/var/run/docker.sock \
-e VUL_IP=172.17.0.1 \
-e VUL_DB_DEBUG=false \
vulfocus/vulfocus
容器启动后,浏览器访问http://localhost:80(如果改了映射端口则替换为对应端口)。首次登录使用默认账号:
强烈建议第一时间修改密码!在"个人中心"-"修改密码"处操作。我见过太多人因为使用默认密码导致测试环境被入侵的案例。
在"镜像管理"页面可以看到官方提供的上百个漏洞环境。点击"一键同步"会开始下载所有镜像,但这会消耗大量带宽和时间。我的经验是:
先同步最常用的10个环境:
使用docker pull命令预先下载大体积镜像:
bash复制docker pull vulfocus/struts2-cve-2017-5638:latest
docker save导出镜像后拷贝到内网机器查看容器日志:
bash复制docker logs -f vulfocus
备份数据库:
bash复制docker exec vulfocus sh -c 'mongodump --out /tmp/backup'
资源监控:
bash复制docker stats vulfocus
问题1:访问管理界面报502错误
docker psdocker logs vulfocus问题2:漏洞环境启动失败
bash复制docker exec -it vulfocus bash
docker ps
对于资源有限的机器,可以添加这些启动参数:
bash复制docker update \
--cpus 1 \
--memory 2GB \
--memory-swap 3GB \
vulfocus
同时建议配置日志轮转,防止日志文件撑爆磁盘:
bash复制docker run --log-opt max-size=10m --log-opt max-file=3 ...
不建议直接暴露80端口到公网。可以通过以下方式增强安全性:
使用Nginx反向代理并添加基础认证:
nginx复制location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
}
或者改用SSH隧道访问:
bash复制ssh -L 8080:localhost:80 your_user@kali_ip
创建专用Docker网络:
bash复制docker network create --driver bridge vulfocus_net
然后使用--network vulfocus_net参数启动容器。同时建议定期更新镜像:
bash复制docker pull vulfocus/vulfocus:latest
docker stop vulfocus
docker rm vulfocus
# 用新镜像重新启动容器
在安全测试领域,Vulfocus确实是个不可多得的好工具。记得去年复现某个OA系统漏洞时,我花了三天时间搭建环境,而用Vulfocus只需要点击三下鼠标。不过要提醒的是,任何漏洞靶场都不能替代真实环境测试,建议把这里当作练功房,掌握原理后再到真实场景中验证。