基于Kali Linux宿主机docker部署靶机环境【精华帖】

基于Kali Linux宿主机docker部署靶机环境【Pentester更要请进】

  • 环境介绍

    • 本机操作系统为MacOS 10.15.7(后文中简称"本机")【windows请各位大佬自行测试】

    • 本机安装VMware Fusion 12.1.0 【自己想办法下载,也可以使用其他虚拟环境】

    • 部署kali linux(2020.03版image)虚机环境(后文中简称"虚机")【kali的安装请移步至kali官网https://www.kali.org

    • 虚机上部署docker环境,Engine版本: 20.10.3+dfsg1【详见下文教程】

    • docker网络环境部署【详见下文教程】

    • 容器搜索、下载、部署、启动【详见下文教程】

      • 容器1:sqli(下文中简称c1
      • 容器2:dvwa(下文中简称c2
    • 结构图

  • 需求实现

    • 所有容器之间可以互通
    • 所有容器可以上internet
    • 所有容器与本机之间可以互通
    • 所有容器与虚机之间可以互通
    • 本教程不包含容器应用internet发布【后续如需求再更新此博文】
  • 小遗憾

    • 容器和虚机如果仅使用vmnet8网卡下的macvlan,这两者无法互相通信,具体原因暂时未知【vmnet8网卡于安装vm环境后自动生成】
    • 目前解决方案是通过给容器第二个桥接的网网络,让容器可以与虚机之间相互通信
    • 后续若研究出来了再来补更

第一步:环境检查
  1. 确保本机可以进行internet冲浪
  2. 确保本机vmware虚机环境安装正确
  3. 确保虚机正常运行【本环境中 kali linux虚机的IP地址为172.16.106.129
    各位客官老爷自己搞定,如遇到问题可以留言沟通

第二步:虚机部署docker环境
  1. 打开虚机,点开terminal $ apt-get update 更新apt源。
  2. 安装必要组件
    • ssl、https组件安装$ apt-get install -y apt-transport-https ca-certificates
    • dirmngr组件安装$ apt-get install dirmngr
  3. apt换源[清华教育] curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -【可以选择阿里、中科大等其他源,自己决定】
  4. 检查换源成果$ echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
  5. 安装最新版本docker 以及docker文件管理项目$ apt-get install docker docker-compose
  6. docker安装完成后,在terminal中测试下$ docker version ,可以检查当前安装的docker版本

第三步:部署docker网络环境
  • 本步骤和下载镜像不分先后,个人习惯先把环境部署好
  1. 新建macvlan $ docker network create -d macvlan --subnet=172.16.106.0/24 --ip-range=172.16.106.0/24 --gateway=172.16.106.2 -o macvlan_mode=bridge -o parent=eth0 macvlan , 用于容器上网、与本机通信使用【macvlan这个名字可以换,但是指定模式的时候就别自定义哦,至于网段的话,按照你的实际情况而定哦】
    • -d 指定容器网络驱动模式
    • --subnet 指定容器使用的网段
    • --ip 指定容器使用的IP地址
    • -o 指定驱动特定选项, 用于指定网卡为虚机的eth0【网卡名根据你实际情况而定】
    • 最后一个macvlan 可以自己定义名称【我图方便,就和网络模式保持一致了】
  2. 新建dnet1$ docker network create -d bridge dnet1, 用于容器与虚机之间通信使用
    • dnet1 是自己新建的自定义网络,名字可以自定义
  3. 查看docker网络$ docker network ls, 确认docker网络列表

第四步:安装并启动容器
  1. 搜索需要的容器 $ docker search sqli, 我选择了安装acgpiano公开的镜像,那就下载镜像呗 $ docker pull acgpiano/sqli-labs

  2. 按照上面的套路,下载dvwa镜像 $ docker pull citizenstig/dvwa

  3. 激动人心的时刻到了,咱可以启动容器了,先启一台呗 $ docker run -d --network=dnet1 --name=sqli -p 9000:80 acgpiano/sqli-labs 【这些参数不做赘述了,详情可以看--help】

  4. 本机访问http://172.16.106.129:9000测试下第一台容器, 应该可以看到页面了吧~~同时kali虚机中可以使用浏览器访问http://172.18.0.2 ,嘿嘿嘿,是不是有点小激动??【sqli容器自动分配到的地址为172.18.0.2】

  5. 虚机docker跳登容器的控制台 $ docker exec -it sqli bash , 来测试下连通性咯,不难发现本机连上sqli容器【为了便于本机直接ssh管理容器,所以这个问题还是得解决】

  6. 那来吧,解决这个问题!一条命令搞定 $ docker network connect --ip=172.16.106.200 macvlan sqli 【macvlan这个网络是在第三步:部署网络环境的时候就已经创建好了,为了便于管理指定一个IP地址】

  7. 至此,放心大胆的在本机 $ ping 172.16.106.200 来测试连通性吧!

  8. 独白: 在这里我手把手教各位如何部署,至于一些喜欢性的查询操作我可能都省略了,因为经过反复测试查看,按照我的版本部署应该是没啥大问题的,至于深入的操作,各位自己--help领悟,有疑问可以留言交流。

  9. dvwa的部署参考上面的详细步骤,无非就是将端口映射 【9000:90】改为其他你喜欢的端口,比如【9001:80】 ,还有就是替换镜像 和 设定的自定义名称, 各位客官老爷,自己动手来一发?


第五步:镜像上传(用于备份、多地快速部署)
  • 操作之前请各位自行注册dockerhub, 并且在docker的主机上使用$ docker login 来登录您的docker仓库。
  • 后面的操作,请各位客官老爷移步至我另一篇博文 https://www.cnblogs.com/lich1x/p/14483691.html 详细作为参考,还是比较简单易懂的,所以我也写的比较简单,哈哈哈哈...
原文地址:https://www.cnblogs.com/lich1x/p/14517192.html