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

2018-03-01 15:23:03 浏览数 (1)

0x00 概述

对一个沙箱环境而言,其中最重要的一点就是网络的隔离,OpenStack网络支持Flat、VLAN、VXLAN等模式,配合路由器和防火墙可轻松虚拟一个简单的企业网络。

0x01 网络环境

1.1 网络拓朴

不同网络区域首先得进行网络划分,主要包含三个区域:

  • 外网服务器区:为互联网提供服务,能访问互联网、内外服务器区,不能访问工作区域;
  • 内网服务器区:为外网服务器、工作区提供服务,不能访问互联网、外网服务器区、工作区;
  • 工作区:办公区域,各个部门间网络互通,可访问互联网、内网服务器区、外网服务器区。

这里使用172.16.x.0/24作为服务器区的IP段,10.0.x.0/24为工作区各部门的IP段,网络拓扑图如下:

注:这里网络、实例、路由器等名称统一使用小写。

1.2 公共网络

使用管理员登录Horizon,【管理员】-【网络】,这里会看见一个为public的网络,其IP段为172.24.4.225/28(有强迫的可以删掉),创建一个名为network_public的外部网络和一个IP地址池为192.168.20.100-200的子网。

有时外部网络和子网有在Web界面会创建失败,使用SSH登录到服务器使用命令创建:

因为只有一张网卡,为了减少去配IP的麻烦,这里将浮动IP地址池(192.168.20.100-200)配到与服务器IP同一个段。

1.3 创建网络

【项目】-【网络】-【网络】,点击【创建网络】,会有三个选项:

  • 网络:配置网络名称;
  • 子网:配置子网IP、掩码、网关等信息;
  • 网络详情:配置IP地支持、DHCP、DNS等信息。

这里服务器区和办公区的网段都使用DHCP进行IP分配,分别创建以下网络:

1.4 创建路由器

【项目】-【网络】-【路由器】,点击【创建路由器】,创建2个路由router_internalrouter_isp,其中router_isp选择外部网络network_public

router_isp

点击router_isp进入该路由器,切换到【接口】项,分别添加2个接口172.16.0.1192.168.0.5

再切换到【静态路由表】项,分别添加办公区和内网服务器区的静态路由:

router_internal

点击router_internal进入该路由器,切换到【接口】项,分别添加以下连接接口:

再切换到【静态路由表】项,添加一条缺省路由:

0x02 创建实例

现在网络已经配置完,回到【项目】-【计算】-【实例】,点击右上角【启动实例】,按照拓朴选择对应网络分别创建以下实例:

这里全部使用CentOS7的映像,创建完后,【项目】-【网络】-【网络拓朴】大概是这样:

这时你会发现,所有实例之间都是能ping得通的,并没有想要之前设定的结果,这时就需要防火墙。

0x03 FwaaS

FwaaS(FireWall-as-a-Service),即防火墙服务,防火墙可以在路由器上做策略。

3.1 安装FwaaS

通过yum安装FwaaS:

代码语言:javascript复制
# yum -y install openstack-neutron-fwaas

加载防火墙

service_plugins后面加上firewall

添加所需驱动程序:

Horizonz中启用防火墙,修改enable_firewallTrue

将修改更新到数据库:

重启Neutron服务:

代码语言:javascript复制
# systemctl restart neutron-server

3.2 配置防火墙

重新登录Horizonz,在【项目】-【网络】下的菜单会添加【防火墙】这一项,切换到【防火墙规则】添加以下规则:

切换到【防火墙策略】,添加一条策略,并加入刚才配置的2条规则:

切换到【防火墙】,添加一条记录,选择刚才创建的策略,并关联router_internal路由器:

3.3 测试防火墙

在外网服务器区使用server_www(172.16.0.5)分别ping互联网、办公区、内网服务器区:

在办公区使用it_pc1(10.0.10.3)分别ping互联网、外网服务器区、内网服务器区、人力资源部:

在内网服务器区使用server_db(172.16.10.4)分别ping互联网、外网服务器区、办公区:

网络隔离效果已经达到了设定要求。

0x04 网络映射

www_server(172.16.0.5)上启动httpd服务,监听80端口,现在要将该服务器的HTTP服务映射到“互联网”(192.168.20.100-200)。

4.1 关联浮动IP

【项目】-【计算】-【实例】,选择实例【操作】下拉菜单,选择管理浮动IP:

这时在实例列表【IP 地址】列会多出一个浮动IP192.168.20.101:

4.2 安全组

这时从外部还不能访问该服务器,需要在安全组添加入口规则放行,【项目】-【计算】-【访问 & 安全】新添加一条记录sg_public,然后添加一条规则:

现在访问http://192.168.20.101:

至此,一个简单的虚拟网络环境已经建立起来,其中还存在很多安全上的问题,比如通过实例可以访问192.168.20.7上的服务,一个合适的渗透测试环境还需要逐渐去完善。

0x05 参考

  • https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html/networking_guide/sec-fwaas
  • https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux_OpenStack_Platform/6/html/Administration_Guide/Networking-ExternalConnectivity.html

0 人点赞