简介

随着云计算的发展,安全方面得到越来越多的重视,但云安全这块领域应该才算刚起步,目前各个传统安全厂商将各自的安全产品云化也只是将镜像抠出来部署进云环境,然后使用传统的处理方式将流量引入安全设备进行处理。
本文主要讲述如何将 firewall 镜像引入 openstack 平台进行使用,firewall 以 360 镜像为例。

方案概述

透明部署

透明模式,顾名思义,采用无IP方式运行,用户将不必重新设定和修改路由,防火墙就可以直接安装和放置到网络中使用,如交换机一样不需要设置IP地址。
透明模式的防火墙就好像是一台网桥(非透明的防火墙好像一台路由器),网络设备(包括主机、路由器、工作站等)和所有计算机的设置(包括IP地址和网关)无须改变。但是,防火墙透明模式与网桥存在不同,防火墙接收到的IP报文还需要(解析所有通过它的数据包)送到上层进行相关过滤等处理,通过检查会话表或ACL规则以确定是否允许该报文通过;此外,还要完成其它防攻击检查。透明模式的防火墙支持ACL规则检查、ASPF状态过滤、防攻击检查、流量监控等功能。因此既增加了网络的安全性,又降低了用户管理的复杂程度。
当防火墙工作在透明模式(也可以称为桥接模式)下时,所有接口都不能配置IP地址,接口所在的安全区域是二层区域,和二层区域相关接口连接的外部用户同属一个子网。当报文在二层区域的接口间进行转发时,需要根据报文的MAC地址来寻找出接口,此时防火墙表现为一个透明网桥。
工作在透明模式下的防火墙在数据链路层连接局域网(LAN),网络终端用户无需为连接网络而对设备进行特别配置,就像使用以太网交换机一样进行网络连接,避免了改变拓扑结构造成的麻烦。
那在openstack环境中,该模式下的 firewall 该如何引入呢?可以将 firewall 镜像实例直接起在租户网络上,通过 networking-sfc 来强制将流量导入导出虚拟机,示例图如下:

firewall对接-透明模式

如图所示,在 networking-sfc 中,流量的转发不经过传统 neutron 的转发规则限制,而是强制定向从某个虚拟机端口到达另一个虚拟机端口,这样的好处在于将所有的流量强制定向到防火墙进行安全审计,缺点如下:

  • 不适宜扩展,因为对于每一个虚机会单独生成一个 neutron port 绑定。
  • 对于每一个用户虚机的创建,租户必须手动(或者集成 networking-sfc 以及 firewall 操作)创建 firewall 规则。

因此不建议使用这种透明部署方案。

L3部署

对租户而言,看到的有两种网络,project 网络(即租户网络)和 provide 网络。
project 网络是用户按需提供(self-provisioned and on-demand),provide 网络一般来说是管理员预定义的网络来提供外部连通性。因此租户一般不单独操作外部网络提供的借口(加入/离开)以外的资源。以下提供三种方案:

租户网络内部L3部署——旁挂引流回注(目前采用的方案)

使用类似于“物理旁挂,逻辑串联”的方式旁挂在 qrouter 旁。
根据用户的需求,是否使用PBR将流量引入FW,需要则在qrouter的namespace写入iptables策略,不需要则删掉策略。
拓扑如下图所示:

租户网络内部L3部署——旁挂引流回注

该方式简单易行,只将 firewall 作为一个类似于feature 的实现,可以灵活的加载与卸载,当然切换中会有一定时间段的丢包。
开发则需要复用 neutron-server 的代码提供出自己的 API ,再写一个 plugin 调用 drive 向 namespace 写入和删除规则即可。

租户网络内部L3部署——替代qrouter

这是一种租户自己利用 firewall 功能实现 neutron l3 转发的功能,部署示例如下所示:

租户网络内部L3部署——替代qrouter

如上图所示,假设给定的租户网络 192.168.1.0/24 ,其中网关为 192.168.1.1 ,在创建网络的时候不再创建 l3 neutron router 。将创建一个 192.168.1.1 的 neutron port ,和从 provider 网络中创建一个 neutron port 作为外部接口。接下来将两个端口附加到 firewall 实例上,至此完成 l3 部署的网络拓扑,然后租户对 firewall 进行配置完后 l3 功能。

这样做存在以下限制:

  • tripleo部署的环境不允许在 public 网络里建立虚机,且需要手动使用建立 neutron port,再使用 nova attach 上去。
  • 完全摒弃了neutron L3 的部署,以及诸如 L3 HA 等很多 features 。
  • 防火墙必须对租户授权。
provider 网络 L3 部署

这种部署方案下,我们认为 firewall 服务属于管理员资源,部署拓扑参考如下:

provider 网络 L3 部署

如上图所示,在租户网络外建立一个建的(fake)provider 来对租户网络提供带有 firewall 网络的 provider network ,对租户网络而言,所看到的 provider 网络就是这个假的 provider 网络。Firewall 实例由管理员部署,这样,租户网络保留原来的网络功能,防火墙所看到的是虚拟机 nat 地址和 floating-ip 地址,因此,防火墙需要正确的将这些地址映射到外部网络。
这种部署方案的最大好处在于保留租户网络原有的 L3 功能,provider 网络来提供防火墙的功能。
PS:这个假的 provider 网络同样也可以使用真实的 provider,流量同样要到 firewall 走一遍,但这种情形下的优点是 nat 可以解决 1:1 nat 和 1:n nat 功能的部署复杂性,防火墙能直接将 floating-ip 和 vm fixed-ip 来进行映射,使用 fake provider 则不可行,只能使用 1:n 的snat 。