基于OVS的虚拟防火墙配置方法、电子设备及存储介质转让专利

申请号 : CN201810107810.5

文献号 : CN108322467B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈来威张为杰邹理贤涂华奇

申请人 : 云宏信息科技股份有限公司航天云宏技术贵州有限公司

摘要 :

本发明公开了基于OVS的虚拟防火墙配置方法,包括如下步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接,并将虚拟机的MAC地址写入openflow流表;根据所述MAC地址建立白名单流表规则或黑名单流表规则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;判断流经该OVS的数据包的属性是否与最高的优先权的白名单流表规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数据包。若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数据包。基于OVS的openfolw流表配置网络流量过滤规则实现虚拟防火墙的功能,避免了传统虚拟防火墙配置需要的防火墙控制器以及防火墙软件的方式,以达到规避传统虚拟防火墙的缺点的目的,配置策略丰富、灵活。

权利要求 :

1.一种基于OVS的虚拟防火墙配置方法,其特征在于,包括如下步骤:地址写入步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接,并将虚拟机的MAC地址写入openflow流表;其中,白名单配置方法时每一物理主机下的所有虚拟机之间两两隔离;黑名单配置方法时每一物理主机下的所有虚拟机之间两两连接;

规则建立步骤:根据所述MAC地址建立白名单流表规则或黑名单流表规则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;所述白名单流表规则和黑名单流表规则均包括所属物理主机、源类型、源对象值、协议、端口号、目标类型、目标对象值;

判断步骤:白名单配置方法时,判断流经该OVS的数据包的属性是否与最高的优先权的白名单流表规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数据包;黑名单配置方法时,判断流经该OVS的数据包的属性是否与最高的优先权的黑名单流表规则匹配,若是,则丢弃该数据包,否则,使数据包通过物理主机OVS上的桥。

2.如权利要求1所述的虚拟防火墙配置方法,其特征在于,所述优先权的级别根据白名单流表规则或黑名单流表规则中的优先权数值的大小由高至低排列。

3.如权利要求1或2所述的虚拟防火墙配置方法,其特征在于,所述白名单流表规则和黑名单流表规则由用户输入。

4.一种电子设备,其特征在于,包括处理器、存储器以及存储在存储器中并可被处理器执行的计算机程序,所述计算机程序被处理器执行时实现以下步骤:地址写入步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接,并将虚拟机的MAC地址写入openflow流表;其中,白名单配置方法时每一物理主机下的所有虚拟机之间两两隔离;黑名单配置方法时每一物理主机下的所有虚拟机之间两两连接;

规则建立步骤:根据所述MAC地址建立白名单流表规则或黑名单流表规则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;所述白名单流表规则和黑名单流表规则均包括所属物理主机、源类型、源对象值、协议、端口号、目标类型、目标对象值;

判断步骤:白名单配置方法时,判断流经该OVS的数据包的属性是否与最高的优先权的白名单流表规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数据包;黑名单配置方法时,判断流经该OVS的数据包的属性是否与最高的优先权的黑名单流表规则匹配,若是,则丢弃该数据包,否则,使数据包通过物理主机OVS上的桥。

5.如权利要求4所述的电子设备,其特征在于,所述优先权的级别根据白名单流表规则或黑名单流表规则中的优先权数值的大小由高至低排列。

6.如权利要求4所述的电子设备,其特征在于,所述白名单流表规则和黑名单流表规则由用户输入。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1‑3任意一项所述的方法。

说明书 :

基于OVS的虚拟防火墙配置方法、电子设备及存储介质

技术领域

[0001] 本发明涉及一种防火墙安全技术,尤其涉及一种基于OVS的虚拟防火墙配 置方法。

背景技术

[0002] 目前,云资源管理平台是通过网络对物理资源,虚拟资源、业务资源进行 统一管理的虚拟化平台。虚拟机是云计算虚拟网络通信的重要节点,虚拟机安 全可以依靠虚拟机
系统本身的防火墙服务来配置,例如linux系统的iptables service。对于虚拟网络的网络
流量控制防火墙解决方案中,可以分为基于虚拟机 交换机的配置访问控制列表控制策略
和在虚拟机内运行虚拟机防火墙软件两 种。
[0003] 中国专利申请201410252561.0公开了分布式虚拟防火墙装置及方法,提出 一种基于虚拟交换机vSwitch的防火墙模块,使用防火墙控制器对网络流量进行 过滤的防火墙
配置方法。该方法对于云计算环境中的主机集群,每台主机上都 部署一个防火墙模块,在
主机集群的控制节点上部署防火墙控制器,用于对整 个集群环境中所有的防火墙模块进
行统一管理和策略配置。通过防火墙控制器 还接收用户或云计算管理节点的防火墙策略
信息。防火墙模块接收来自防火墙 控制器发送的配置信息和防火墙策略进行网络流量的
检测。
[0004] 但是,现有的先存在以下缺陷:
[0005] (1)采用虚拟交换机vSwitch的防火墙模块使用防火墙控制器来实现防火 墙功能,就必须要保持与防火墙控制器的心跳。防火墙模块与防火墙控制器需 要建立连接,用
户配置的防火墙策略信息是必须通过防火墙控制器的可实施性 预分析才能将用户配置的
防火墙策略信息发送给防火墙模块。一旦连接断开, 就需要用户根据控制器反馈信息,进
行修改。
[0006] (2)采用虚拟防火墙软件方式安装防火墙,通常需要安装其他不相干的模 块,哪怕只用防火墙模块。而有的防火墙软件过滤规则要逐条过滤网络流量, 性能较差。

发明内容

[0007] 为了克服现有技术的不足,本发明的目的之一在于提供一种基于OVS的虚 拟防火墙配置方法,其可以避免防火墙控制的心跳连接问题。
[0008] 本发明的目的之二在于提供一种电子设备,其可以避免防火墙控制的心跳 连接问题。
[0009] 本发明的目的之三在于提供一种计算机可读存储介质,其可以避免防火墙 控制的心跳连接问题。
[0010] 本发明的目的之一采用如下技术方案实现:
[0011] 一种基于OVS的虚拟防火墙配置方法,包括如下步骤:
[0012] 地址写入步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接, 并将虚拟机的MAC地址写入openflow流表;
[0013] 规则建立步骤:根据所述MAC地址建立白名单流表规则或黑名单流表规 则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;所述 白名单流表规则和黑
名单流表规则均包括所属物理主机、源类型、源对象值、 协议、端口号、目标类型、目标对象
值;
[0014] 判断步骤:判断流经该OVS的数据包的属性是否与最高的优先权的白名单 流表规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数 据包。
[0015] 进一步地,所述优先权的级别根据白名单流表规则或黑名单流表规则中的 优先权数值的大小由高至低排列。
[0016] 进一步地,所述白名单流表规则和黑名单流表规则由用户输入。
[0017] 本发明的目的之二采用如下技术方案实现:
[0018] 一种电子设备,包括处理器、存储器以及存储在存储器中并可被处理器执 行的计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0019] 地址写入步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接, 并将虚拟机的MAC地址写入openflow流表;
[0020] 规则建立步骤:根据所述MAC地址建立白名单流表规则或黑名单流表规 则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;所述 白名单流表规则和黑
名单流表规则均包括所属物理主机、源类型、源对象值、 协议、端口号、目标类型、目标对象
值;
[0021] 判断步骤:判断流经该OVS的数据包的属性是否与最高的优先权的白名单 流表规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数 据包。
[0022] 进一步地,所述优先权的级别根据白名单流表规则或黑名单流表规则中的 优先权数值的大小由高至低排列。
[0023] 进一步地,所述白名单流表规则和黑名单流表规则由用户输入。
[0024] 本发明的目的之三采用如下技术方案实现:
[0025] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处 理器执行时实现如本发明任意一项所述的方法。
[0026] 相比现有技术,本发明的有益效果在于:
[0027] 基于OVS的openfolw流表配置网络流量过滤规则实现虚拟防火墙的功能, 避免了传统虚拟防火墙配置需要的防火墙控制器以及防火墙软件的方式,以达 到规避传统虚拟
防火墙的缺点的目的,配置策略丰富、灵活。

附图说明

[0028] 图1为本发明的白名单配置方法流程图;
[0029] 图2为本发明的黑名单配置方法流程图。

具体实施方式

[0030] 下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的 是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任 意组合形成新的实
施例。
[0031] 本发明提供一种基于OVS的虚拟防火墙配置方法,主要包括以下关键步骤:
[0032] 1、加载系统数据库已保存的防火墙规则。系统启动时,将系统保存的防火 墙规则从数据库中查出来,加载到内存中。防火墙规则所属物理主机、源类型 (IP、IP段、MAC)、源
对象值、协议、端口号、目标类型(IP、IP段、MAC)、 目标对象值、以及单双向等信息。2、下发
规则到物理主机的OVS。系统启动时, 对查出来的防火墙规则,根据所属物理主机建立ssh
(ssh为Secure Shell的缩写, 为建立在应用层和传输层基础上的安全协议)连接,执行
“ovs‑ofctl add‑flows< 规则>action=drop/normal”命令(ovs‑ofctl add‑flows命令是
OVS添加openflow 流表规则的命令),实现下发规则到物理主机下面的所有bridge。action
是这条规 则的参数之一,action=drop表示数据包匹配到这条规则的话,ovs将丢弃这个
数 据包,action=normal表示数据包匹配到这条规则的话,ovs将允许这个数据包通 过。
3、新增一条规则,在系统界面上填写流表规则所需参数:物理主机、源类 型(IP、IP段、
MAC)、源对象值、协议、端口号、目标类型(IP、IP段、MAC)、 目标对象值、以及单双向等信息。
提交到系统程序后台后,程序根据规则所在 物理主机,下发命令到ovs上的所有bridge,同
第2步。4、下发命令成功后, 保存规则到系统数据库保存。之后可使用两台或以上虚拟机验
证规则是否生效。
[0033] 物理主机下面的虚拟机通过ovs进行网络通信,ovs上的openflow流表,控 制数据包的流通规则,实现虚拟防火墙的功能。不需要连接防火墙控制器,避 免连接的防火墙控
制心跳连接断开的问题。直接采用流表过滤数据包,避免了 通过安装防火墙软件的方式。
管理员在新增防火墙规则时,直接在前端界面上 输入源对象类型(IP、IP段、MAC)、源对象
值、协议、端口、目标对象类型(IP、 IP段、MAC)、目标对象值、单双向等信息,然后点击确定
按钮,就能在物理主 机上下法openflow流表规则。规则将应用于物理主机下的所有虚拟
机。也就是 说规则正在下发到的是物理主机ovs上面的所有bridge。下发命令成功以后,系 
统自动根据下发结果来决定是否保存规则到系统数据库。保存在数据库的防火 墙规则,可
以用于界面展示。
[0034] 从白名单和黑名单的角度可以将本发明归为包括白名单配置方法和黑名单 配置方法,
[0035] 如图1所示,白名单配置方法包括如下步骤:
[0036] S11:使每一物理主机下的所有虚拟机之间两两隔离,并将虚拟机的MAC 地址写入openflow流表;
[0037] S12:根据所述MAC地址建立白名单流表规则,将该白名单流表规则下发 至所属物理主机的OVS;所述白名单流表规则规则均包括所属物理主机、源类 型、源对象值、协议、端
口号、目标类型、目标对象值;
[0038] S13:判断流经该OVS的数据包的属性是否与最高的优先权的白名单流表 规则匹配,若是,则使数据包通过物理主机OVS上的桥,否则,丢弃该数据包。
[0039] 例如,添加一条白名单规则,ip 192.168.1.100到ip192.168.1.101单向的http 协议8080端口的规则,其实就是两条openflow流表命令,为:
[0040] ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0,priority=25, nw_src=192.168.1.100,nw_dst=192.168.1.101,http,tp_dst=8080,action=normal"
[0041] ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0,priority=25, nw_src=192.168.1.101,nw_dst=192.168.1.100,http,tp_dst=8080,action=normal"
[0042] 添加流表命令后面的action=normal,表示满足从192.168.1.100发送http请 求到192.168.1.101的8080端口的数据包,允许通过ovs上的虚拟交换机bridge。 流表规则按
照priority优先级别匹配流表规则,priority数字越大,优先级别越大。 数据包匹配规则
会按照优先级最大的匹配。当数据包通过ovs的时候,匹配到上 面的两条流表规则,ovs会
让数据包通过。而我们实际看到的是,192.168.1.100 能够访问到192.168.1.101http协议
8080端口的服务(假设这两个ip的虚拟机都 在这个物理主机下面)。首先让物理主机上所
有的虚拟机互相隔离,互相不能通 信。只需要在安装完虚拟机的时候,把虚拟机的MAC地址
写到ovs的流表里面, 并且action=drop。如:
[0043] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=15,dl_src=e2:84:3a:b7:0a:f5,action=drop"
[0044] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=20,dl_src=e2:84:3a:b7:0a:f5,arp,action=normal"
[0045] 以上两条命令就是把虚拟机网卡MAC为e2:84:3a:b7:0a:f5,所有的数据包 都放弃掉,只允许发出arp的包。这里注意priority的数字优先级。虚拟机创建 出来,执行以上
两条命令,虚拟机就是隔离的。这时候要看比这两条规则更高 优先级的流规则是否存在,
并且满足匹配这个虚拟机,可以是IP、IP段、MAC。 比如前面的192.168.1.100到
192.168.1.101的http协议8080端口的规则优先级 priority=25比这两条命令的规则优
先级更高,并且刚好192.168.1.100是这台虚 拟机的话,虚拟机将能够访问192.168.1.101
的http8080端口的服务,这就是防 火墙白名单了。
[0046] 将上面的案例进行整合,首先设置前提条件,包括用户使用的物理主机使 用OVS来作为网络管理堆栈和虚拟机直接的网络通信设备为OVS虚拟交换机。 白名单为例的整体
流程包括部署虚拟机完成后,把虚拟机网卡设置为隔离状态。 可用以下两条openflow命令
实现。
[0047] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=15,dl_src=e2:84:3a:b7:0a:f5,action=drop"
[0048] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=20,dl_src=e2:84:3a:b7:0a:f5,arp,action=normal"。
[0049] 经过第一步后,这时ovs还没有更高级的流表规则,虚拟机就是隔离状态的。 在系统界面添加白名单流表规则,如下:
[0050] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=25,dl_src=e2:84:3a:b7:0a:f5,nw_dst=192.168.1.101,http,tp_dst=8080,action 
=normal"
[0051] sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=25,nw_src=192.168.1.101,dl_dst=e2:84:3a:b7:0a:f5,http,tp_dst=8080,action 
=normal"
[0052] 由此,底层ovs添加白名单规则以后,MAC地址为e2:84:3a:b7:0a:f5的虚 拟机就能够访问192.168.1.101http协议8080端口的服务,即防火墙白名单设置 完成。
[0053] 本发明实现的原理是利用ovs中openflow的流表规则来设置虚拟防火墙。 一个重要的属性就是流表的priority属性值,这个值越大,优先级别越高。匹配 过程中取最大优
先级的流表规则(这是ovs的openflow规则匹配的一个特性)。 如上所讲的白名单例子,就
是利用了这个匹配特性实现的。所谓白名单,就是 虚拟机默认是被隔离的(虚拟机发出和
接收的数据包都被ovs丢弃),添加一条 规则后,虚拟机能通信(虚拟机发出和接收数据包
是能通过ovs)。所以满足这 个条件,需要利用priority特性并且有两条规则:
[0054] 1.sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=15,dl_src=e2:84:3a:b7:0a:f5,action=drop"(这条规则priority设计为15, 这是自定
义的,创建虚拟机后,把匹配虚拟机MAC的数据包默认都被ovs丢弃)。
[0055] 2.sudo ovs‑ofctl add‑flow xenbr0"table=0,idle_timeout=0, priority=25,dl_src=e2:84:3a:b7:0a:f5,nw_dst=192.168.1.101,http,tp_dst=8080,action 
=normal"(这条规则priority设计为20,也是自定义的,只要比上面drop规则的 priority
大即可)
[0056] 情景一:OVS的bridge只有1这条规则时,也就是虚拟机创建出来后, “priority=15action=drop”虚拟机创建出来就被隔离了。
[0057] 情景二:OVS的bridge同时拥有1、2两条规则时,“priority=15action=drop” 和“priority=25action=normal”,我们利用ovs openflow匹配的特性知道, e2:84:3a:b7:
0a:f5这个mac地址发出来的数据包,经过ovs的bridge的时候,遇 见两条规则,但是会选择
匹配“priority=25action=normal”的规则,因为priority=25 比priority=15大,于是
数据包通过了ovs。这就是实现上面所述的白名单例子的 原理。
[0058] 另外,nw_src表示源mac地址,nw_dst表示目标mac地址,dl_src表示源ip,dl_dst表示目标ip。在数据请求过程中,数据包都是带有源头和目标以及协 议和端口号的。数据
包经过ovs的虚拟交换机的时候,要经过流表规则匹配过滤。 从而决定这个数据包是允许
通过还是禁止通过。通过添加流表规则就可以控制 数据包的过滤。以达到防火墙的作用。
[0059] 如图2所示,本发明还提供白名单配置方法,包括如下步骤:
[0060] S21:使每一物理主机下的所有虚拟机之间两两连接,并将虚拟机的MAC 地址写入openflow流表;
[0061] S22:根据所述MAC地址建立黑名单流表规则,将该黑名单流表规则下发 至所属物理主机的OVS;所述黑名单流表规则规则均包括所属物理主机、源类 型、源对象值、协议、端
口号、目标类型、目标对象值;
[0062] S23:判断流经该OVS的数据包的属性是否与最高的优先权的黑名单流表 规则匹配,若是,则丢弃该数据包,否则,使数据包通过物理主机OVS上的桥。
[0063] 黑名单配置方法的原理都与白名单相同,其案例也可参照白名单配置方法 的举例,在此不再赘述。本发明提供的虚拟防火墙配置方法,避免了传统虚拟 防火墙配置需要
的防火墙控制器以及防火墙软件的方式。提出了基于ovs的 openflow流表的方式实现虚拟
防火墙功能。以达到规避传统虚拟防火墙的缺点 的目的。使用IP、IP段、MAC等多种配置规
则,具有配置策略丰富、灵活等特 点。
[0064] 本发明还提供一种电子设备,包括处理器、存储器以及存储在存储器中并 可被处理器执行的计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0065] 地址写入步骤:使每一物理主机下的所有虚拟机之间两两隔离或两两连接, 并将虚拟机的MAC地址写入openflow流表;
[0066] 规则建立步骤:根据所述MAC地址建立白名单流表规则或黑名单流表规 则,将该白名单流表规则或黑名单流表规则下发至所属物理主机的OVS;所述 白名单流表规则和黑
名单流表规则均包括所属物理主机、源类型、源对象值、 协议、端口号、目标类型、目标对象
值;
[0067] 判断步骤:判断流经该OVS的数据包的优先权是否大于白名单流表规则或 黑名单流表规则的优先权,若是,则使数据包通过物理主机OVS上的桥,否则, 丢弃该数据包。
[0068] 还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于, 所述计算机程序被处理器执行时实现如本发明任意一项所述的方法。
[0069] 上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的 范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换 均属于本发明所
要求保护的范围。