随着信息技术的飞速发展,网络业务迅速兴起,然而由于网络自身固有的脆弱使网络安全存在很多潜在的威胁,其中之一就是IP地址欺骗。本期华云数据“智汇华云”专栏将为您奉上“Openvswitch 防火墙是如何防止IP地址欺骗的”。

IP 地址欺骗 (IP Spoofing):

正常情况下,二层数据帧的源IP 地址就是发出数据的机器的 IP 地址,对方计算机接收到以后,向该 IP 地址发出回复数据帧:

图一

(图一例子中,vm1 发往 vm2 的帧的 IP 地址就是 vm1 的地址,因此 vm2 能够通过 ARP 获取 vm1 的 MAC,并将回复将发回到vm1)

如果源计算机的数据帧的源 IP 地址不是它自己的IP地址而是一个不存在的地址或者另外一台机器的地址,目的计算机接受到数据帧后,它就会一直不停的发出 ARP 广播,最终也无法获取到MAC地址,或者发送返回帧到另一台的计算机。这就是所谓的(源) IP 地址欺骗。

图二

(图二例子中,vm1 将它发往 vm2 的数据帧的源IP设置为 vm3 的IP,导致 vm2 的回复发到了vm3)

如果大量的计算机使用另外一台计算机的 IP 作为源 IP 向很多的计算机发出 ping 命令,那么那一台计算机将会收到很多的 ping 回复。这将导致它的网络带宽被塞满而不能对外提供网络服务。

Openvswitch 防火墙是如何防止IP欺骗的呢?

Openvswitch 防火墙基本原理:

Ovs通过br-int桥上的流表规则控制连接在桥上的端口(ovs port)的进出方向的网络流量。

图三

(图三 tap口 及 patch-port 均为ovs port)

ovs流表规则:

每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分。基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等。条件字段包括输入端口号in_port(ovs port)、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合。动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

ovs防火墙具体规则流表如下:

图四

vm 出方向流量由tap口到达br-int网桥时,首先会经过table 0 表分流至table 3

table 0:

Vm tap 对应 ovs port 为port1,匹配in_port=1流表,跳转至table 71出方向基础规则表

table 3:

由table 71 规则表对转发IP报文做合法性校验,要求必须匹配条件为 in_port, dl_src(源mac),nw_src(源IP)

table 71:

如无法匹配上述流表,则会命中默认丢包流表。

当使用ovs防火墙后, 再次发生图二例子时,vm1 将它发往 vm2 的数据帧的源IP设置为 vm3 的IP,当前数据包ip与mac 无法与vm1 tap port 71号表记录的真实ip mac匹配,将无法命中table 71号表,数据包被丢包,因为IP欺诈被ovs防火墙有效拦截。