一. 项目背景
专有网络(Virtual Private Cloud,简称VPC)在公司全面上线后,云上网络的基础功能已经日渐完善。但是在安全类产品方面,仍缺少一款防护产品,来有效保障云上业务的安全性。传统硬件部署的防火墙产品,不论是在部署还是策略配置上,都不够灵活,也无法对云上的流量进行分析和防护。
云防火墙根据所处位置不同,分为互联网边界防火墙、VPC边界防火墙、NAT防火墙等。本文主要实现的是互联网边界防火墙,
它生效于用户的弹性公网 EIP 的关联资产与外部互联网之间,可统一管理互联网到VPC的南北向流量。通过管理云防火墙安全策略,实现南北向流量的精准访问控制,满足用户对云上流量安全可用的需求。
二. 架构设计
1. 物理架构
互联网边界防火墙生效于弹性公网EIP网关之前,开启防护的流量先经过互联网边界防火墙,经过策略过滤后,放行安全流量,拦截异常流量。未开启防护的流量继续按照原有路径转发,业务可按需开启防护。
2. 软件架构
互联网边界防火墙基于DPDK框架开发,分为控制面和转发面。控制面负责提供API接口,自动化完成流量牵引和过滤规则下发。转发面根据规则执行放行或丢弃行为,拦截非法流量。
三. 项目实现
1. 如何引流和回流
互联网云防火墙是控制vpc内ip与公网地址之间的流量,流量路径如下:
当vpc内虚机绑定的FIP是公网地址,并且fip配置中开启了fw_switch时。控制面自动将公网地址通告至云防火墙上。
a. 云外客户端访问VPC内虚机时,通过BGP路由将流量吸到云防火墙上,匹配防火墙规则完成后,对报文进行VXLAN封包,外层源IP为防火墙VTEP IP,外层目的端口为FIP网关VTEP IP,由FIP中映射关系将流量报文引入VPC内虚机上。
b. VPC内虚机访问公网时,计算节点上流量至FIP网关,通过FIP上的映射关系查询是否开启fw_switch,如果开启则将流量引流至云防火墙,若未开启,则流量直接通过FIP网关转发出去。流量到达云防火墙后,对out方向流量进行规则匹配,匹配完成后进行转发或者阻断。
2. 匹配规则逻辑
目前v1版本的云防火墙主要分为访问控制和非法域名拦截两个功能。ACL匹配规则如上图所示,防火墙策略是根据报文中五元组以及报文进出方向来进行规则匹配,数据结构如下所示:
struct dp_vs_policy_entry { int rule_num; int af; char groupname[256]; uint8_t src_plen; uint8_t dst_plen; union inet_addr srcaddr; union inet_addr dstaddr; uint8_t proto; uint16_t srcport; uint16_t dstport; char direction[64]; char action[64];}__rte_cache_aligned;
四. 后续计划
1. 互联网防火墙的主要模块涵盖功能模块很多,当前版本只是简单实现了访问控制及非法域名拦截等功能。后续新版本中要逐渐增加日志审计,流量分析等等相关模块
2. 当前的主流云防火墙包括互联网便捷云防火墙、NAT便捷防火墙、扩展VPC边界防火墙等,后续需逐步丰富云防火墙种类,与业界主流对齐。