OpenStack:建立虚拟的渗透测试实验环境 – 安装篇

0x00 概述

对从业渗透测试的人员来说,保持技能更新是非常重要的,而更新技能的过程中,需要大量的去学习、实践和总结,比较传统的学习方式是通过虚拟机安装靶机来练习,这种方式往往缺少一种真实渗透中的网络环境,而拿真实的网络来搞事往往会面临很对未知的风险,比如被查水表什么的。在工作中,有时候测试一个内网转发脚本、恶意程序或避免影响业务需要一个沙箱环境,目前比较常见的是使用GNS3(网络设备模拟器)+虚拟机来模拟网络环境,随着云计算技术的兴起,无疑给建立虚拟环境多了一种选择,通过虚拟技术,可以建立更加复杂的测试环境,甚至仿真一个企业网络以便测试各种攻击场景。

0x01 环境准备

1.1 OpenStack

OpenStack是一个快源的云计算管理平台项目,由组件组合完成具体工作,详细介绍见OpenStack官网。OpenStack的部署方式分为手动部署和自动化部署,自动化部署工具主要有packstackdevstackFuel等,这里使用packstack在单机+单网卡的环境进行一键部署。

1.2 服务器环境

  • 磁盘容量: >= 500GB
  • 内存容量: >= 32GB
  • 操作系统: CentOS-7-x86_64-Minimal-1611
  • 网卡数量: 1

1.3 网络配置

系统安装完后,先给服务器配置一个静态IP:

这里我使用192.168.20.7作为服务器IP,保存重启网络:

1.4 部署OpenStack

通过yum源进行安装packstack

使用packstack部署OpenStack:

安装时间大概15~30分钟左右。

1.5 桥接网卡

使用packstack安装后,如果重启系统,虚拟网络会无法连接外部网络,这时需要创建一个虚拟网卡:

默认安装缺省IP段是172.24.4.225/28,这里修改为192.168.20.7/24,保存,同时修改em1网卡配置为:

保存,重启网络服务,不成功直接重启服务器。

0x02 实例与映像

OpenStack默认使用VirtIO来管理实例映像,默认直接上传ISO文件会识别不了磁盘,这时需要使用含VirtIO驱动的映像,镜像说明文档见:

这里统一制作qcow2格式的映像文件。

2.1 Linux qcow2映像

  • 手动制作

以制作Kali Linux为例,下载ISO文件kali-linux-light-2017.1-amd64.iso:

然后就像正常一样安装系统,安装完直接关掉。

  • 官方的映像文件

有些Linux发行版官方提供现成映像文件,下载过来就可以直接使用:

由于官方的云镜像是没有提供密码的,这时需要修改root密码,password:冒号后边为密码:

2.2 Windows qcow2映像

以Windows 2008 R2为例子,其他Win系统制作过程类似,由于Windows系统默认不带VirtIO驱动,先下载驱动程序:

  • https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  • https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_amd64.vfd

生成映像文件:

  • 安装系统

命令行启动安装:

手动加载驱动:【自定义(高级)】-【加载驱动程序】-【浏览】-【软盘驱动器】,选择对应操作系统版本选项,然后确定:

安装完后关机。

  • 安装网卡驱动

重新命令启动虚拟机:

找到【设备管理器】-【其他设备】-【以太网控制器】,右键更新驱动程序软件:

【浏览】-【CD驱动器】,确定:

安装完毕:

注:不能关闭的情况下直接kill掉进程。

0x03 Horizon

Horizon是一个用于管理、控制OpenStack服务的Web控制面板,可以通过http://192.168.20.7/dashboard/进行登录,管理帐号是admin密码保存在/root/keystonerc_admin

3.1 上传映像

从http://192.168.20.7/dashboard/登录后,【项目】-【计算】-【映像】-【创建映像】:

Horizon控制面板添加映像支持2种方式,一种是通过HTTP/HTTPS直接下载,另一种是通过本地上传,在【映像源】选【映像文件】,将制作好的虚拟机上传到OpenStack:

3.2 创建实例

在【映像】列表的Windows_2008_R2_x64后面点击【启动】,其中【详细信息】、【源】、【flavor】、【网络】这四项为必选项:

创建完实例,在【实例】点击实例名称进入该实例的详细信息页面,切换到【控制台】即可对虚拟机进行操作:

3.3 开机恢复实例状态

默认情况下,如果重启OpenStack的机器,实例是不会自动恢复之前的状态的,这时需要修改一下配置文件:

0x04 卸载

配置的过程中难免有时出错需要重新再来,保存以下脚本为unpackstack.sh

卸载操作:

# sh unpackstack.sh

卸载后就可以使用packstack重新部署,需要注意的是,该脚本并不是100%的清除,只是删除基本的文件,比如安装时加入的iptables规则是不会清除的,有强迫症的建议重装系统或在虚拟机里部署。

至此,部署OpenStack和制作映像文件基本完成了。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『高级篇』docker之DockerSwarm的集群环境搭建(28)

PS:以上就完成高可用的docker swarm的集群环境,其实真心比其他的简单。

1232
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Anaconda Python发行版

Anaconda专为数据科学和机器学习工作流程而设计,是一个开源包管理器,环境管理器,以及Python和R编程语言的分发。它通常用于大规模数据处理,科学计算和预...

1.3K7
来自专栏日常工作总结

Kubernetes中Consul重启自动加入集群实践

近期频繁的容器母机调整导致我们的业务需要多次重启,不得不寻找一种自动重建Consul集群的方式。在网上搜索和学习一番后发现,基本没有针对Kubernetes容器...

3093
来自专栏Hadoop实操

如何编译安装Azkaban服务

Azkaban是一套简单的任务调度服务,是Hadoop工作流引擎调度器之一,整体包括三部分Web Server、DB Server、Executor Serve...

2.2K12
来自专栏葡萄城控件技术团队

ActiveReports 报表应用教程 (4)---分栏报表

在葡萄城ActiveReports报表中可以实现分栏报表布局样式,可以设置横向分栏、纵向分栏,同时进行分栏和分组设置,统计分栏分组的小计、合计等。在商业报表系统...

2418

6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)

在最后一篇文章中,我们用各种模板进行了设置。现在我们需要让他们工作起来了。

2318
来自专栏写写代码吃吃瓜

Ubuntu环境下Tornado环境部署

1817
来自专栏散尽浮华

[原创]CI持续集成系统环境---部署Jenkins完整记录

Jenkins通过脚本任务触发,实现代码的自动化分发,是CI持续化集成环境中不可缺少的一个环节。 下面对Jenkins环境的部署做一记录。 ---------...

3136
来自专栏一只程序汪的自我修养

手把手教你用Jenkins自动发布Docker

首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/

4686
来自专栏Rainbond开源「容器云平台」

Docker 网络构造:Docker如何使用Linux iptables和Interfaces

2232

扫码关注云+社区

领取腾讯云代金券