OpenStack:建立虚拟的渗透测试实验环境 – 网络篇首席安全官频道

*本文原创作者:zrools,首席安全官频道属于FreeBuf原创奖励计划,禁止转载。

0×00 概述

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

0×01 网络环境

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登录到服务器使用命令创建:

[root@localhost ~]# source keystonerc_admin

[root@localhost ~(keystone_admin)]# neutron net-create network_public --router:external=True

[root@localhost ~(keystone_admin)]# neutron subnet-create --name subnet_public \
--enable_dhcp=False --allocation_pool start=192.168.20.100,end=192.168.20.200 \
--gateway=192.168.20.1 network_public 192.168.20.0/24

因为只有一张网卡,为了减少去配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进入该路由器,切换到【接口】项,分别添加以下连接接口:

 创建路由器

 创建路由器

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

 创建路由器

 创建路由器

0×02 创建实例

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

创建实例

创建实例

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

【项目】-【网络】-【网络拓朴】

【项目】-【网络】-【网络拓朴】

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

0×03 FwaaS

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

3.1 安装FwaaS

通过yum安装FwaaS:

# yum -y install openstack-neutron-fwaas

加载防火墙

service_plugins后面加上firewall

# vi /etc/neutron/neutron.conf

# The service plugins Neutron will use (list value)
#service_plugins =
service_plugins=router,metering,firewall

添加所需驱动程序:

# vi /etc/neutron/fwaas_driver.ini

# Name of the FWaaS Driver (string value)
driver = neutron.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver

# Enable FWaaS (boolean value)
enabled = True

Horizonz中启用防火墙,修改enable_firewallTrue

# vi /etc/openstack-dashboard/local_settings

OPENSTACK_NEUTRON_NETWORK = {
    'enable_distributed_router': False,
    'enable_firewall': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_quotas': True,
    'enable_security_group': True,
    'enable_firewall': True,
    'enable_vpn': False,
    'profile_support': None,
}

将修改更新到数据库:

[root@localhost ~(keystone_admin)]# neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head

重启Neutron服务:

# 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互联网、外网服务器区、办公区:

测试防火墙

测试防火墙

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

0×04 网络映射

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

4.1 关联浮动IP

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

关联浮动IP

关联浮动IP

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

关联浮动IP

关联浮动IP

4.2 安全组

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

安全组

安全组

现在访问:

安全组

安全组

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

0×05 参考

    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

*本文原创作者:zrools,属于FreeBuf原创奖励计划,禁止转载。

2017-09-01 09:47 阅读:519