一、安全域

防火墙的安全域包括安全区域和安全域间。

安全区域

在防火墙中,安全区域(Security Zone),简称为区域(zone),是一个或多个接口的组合,这些接口所包含的用户具有相同的安全属性。每个安全区域具有全局唯一的安全优先级,即不存在两个具有相同优先级的安全区域。

设备认为在同一安全区域内部发生的数据流动是可信的,不需要实施任何安全策略。只有当不同安全区域之间发生数据流动时,才会触发防火墙的安全检查,并实施相应的安全策略。

安全域间
任何两个安全区域都构成一个安全域间(Interzone),并具有单独的安全域间视图,大部分的防火墙配置都在安全域间视图下配置。

例如:配置了安全区域 zone1 和 zone2,则在 zone1 和 zone2 的安全域间视图中,可以配置 ACL 包过滤功能,表示对 zone1 和 zone2 之间发生的数据流动实施 ACL 包过滤。

在安全域间使能防火墙功能后,当高优先级的用户访问低优先级区域时,防火墙会记录报文的 IP、 VPN 等信息,生成一个流表。当报文返回时,设备会查看报文的 IP、 VPN 等信息,因为流表里记录有发出报文的信息,所以有对应的表项,返回的报文能通过。低优先级的用户访问高优先级用户时,默认是不允许访问的。因此,把内网设置为高优先级区域,外网设置为低优先级区域,内网用户可以主动访问外网,外网用户则不能主动访问内网。

基于安全域的防火墙的优点

传统的交换机/路由器的策略配置通常都是围绕报文入接口、出接口展开的,随着防火墙的不断发展,已经逐渐摆脱了只连接外网和内网的角色,出现了内网/外网/DMZ(Demilitarized Zone)的模式,并且向着提供高端口密度的方向发展。在这种组网环境中,传统基于接口的策略配置方式给网络管理员带来了极大的负担,安全策略的维护工作量成倍增加,从而也增加了因为配置引入安全风险的概率。

除了复杂的基于接口的安全策略配置,某些防火墙支持全局的策略配置,全局策略配置的缺点是配置粒度过粗,一台设备只能配置同样的安全策略,满足不了用户在不同安全区域或者不同接口上实施不同安全策略的要求,使用上具有明显的局限性。

基于安全域的防火墙支持基于安全区域的配置方式,所有攻击检测策略均配置在安全区域上,配置简洁又不失灵活性,既降低网络管理员配置负担,又能满足复杂组网情况下针对安全区域实施不同攻击防范策略的要求。

二、防火墙工作模式

为了增加防火墙组网的灵活性,设备不再定义整个设备的工作模式,而是定义接口的工作模式,接口的工作模式如下:

路由模式:如果设备接口具有 IP 地址通过三层与外连接,则认为该接口工作在路由模式下。

透明模式:如果设备接口无 IP 地址通过二层对外连接,则认为该接口工作在透明模式下。

如果设备既存在工作在路由模式的接口(接口具有 IP 地址),又存在工作在透明模式的接口(接口无 IP 地址),则认为该设备工作在混合模式下。

1、路由模式

当设备位于内部网络和外部网络之间,同时为设备与内部网络、外部网络相连的接口分别配置不同网段的 IP 地址,并重新规划原有的网络拓扑结构。

如图所示,规划了 2 个安全区域:Trust 区域和 Untrust 区域,设备的 Trust 区域接口与公司内部网络相连, Untrust区域接口与外部网络相连。

需要注意的是, Trust 区域接口和 Untrust 区域接口分别处于两个不同的子网中。

路由模式组网图





当报文在三层区域的接口间进行转发时,根据报文的 IP 地址来查找路由表。此时设备表现为一个路由器。但是,与路由器不同的是,设备转发的 IP 报文还需要进行过滤等相关处理,通过检查会话表或 ACL 规则以确定是否允许该报文通过。除此之外,防火墙还需要完成其它攻击防范检查。

采用路由模式时,可以完成 ACL(Access Control List)包过滤、 ASPF 动态过滤等功能。然而,路由模式需要对网络拓扑结构进行修改,例如,内部网络用户需要更改网关,路由器需要更改路由配置等。进行网络改造前,请权衡利弊。

2、透明模式

如果设备工作在透明模式,则可以避免改变拓扑结构。此时,设备对于子网用户来说是完全透明的,即用户感觉不到设备的存在。

设备透明模式的典型组网方式如图所示。设备的 Trust 区域接口与公司内部网络相连, Untrust 区域接口与外部网络相连。需要注意的是, Trust 区域接口和 Untrust 区域接口必须处于同一个子网中。

透明模式组网图



采用透明模式时,只需在网络中像放置网桥(bridge)一样插入设备即可,无需修改任何已有的配置。IP 报文同样会经过相关的过滤检查,内部网络用户依旧受到防火墙的保护。

透明模式示意图



如图所示,安全区域 A 和 B 在同一网段且有数据交互,连接安全区域 A 和 B 的接口分别加入 VLAN A 和 VLAN B,且必须加入 VLAN A 和 VLAN B 的组成的桥接组,当防火墙在这两个透明模式的接口间转发报文时,需要先进行 VLAN 桥接,将报文入 VLAN 变换为出 VLAN,再根据报文的 MAC 地址查 MAC 表找到出接口。此时设备表现为一个透明网桥。但是,设备与网桥不同,设备转发的 IP 报文还需要送到上层进行过滤等相关处理,通过检查会话表或 ACL 规则以确定是否允许该报文通过。此外,防火墙还需要完成其它攻击防范检查。

说明:
要求两个工作在透明模式且有数据交互的接口,必须加入到不同的 VLAN 中;同时,这两个接口必须加入同一个 VLAN 桥接组中,而且只能加入一个桥接组。
设备在透明模式的接口上进行 MAC 地址学习,在透明模式的接口间转发报文时,通过查 MAC 表进行二层转发。

3、设备的混合模式

如果设备既存在工作在路由模式的接口(接口具有 IP 地址),又存在工作在透明模式的接口(接口无 IP 地址),则认为设备工作在混合模式下。
混合模式组网图



网络 A 和 B 是不同的网段,设备连接网络 A 和 B 的接口是三层接口,对 A 和 B 之间的报文要进行路由转发;网络 C 和 D 是相同网段,设备连接网络 C 和 D 的接口是二层接口, 对 C 和 D 之间的报文要进行 VLAN 桥接和二层转发。

三、包过滤防火墙

包过滤防火墙的基本原理是:

通过配置 ACL 实施数据包的过滤。实施过滤主要是基于数据包中的 IP 层所承载的上层协议的协议号、源/目的 IP 地址、源/目的端口号和报文传递的方向等信息。透明防火墙模式下,还可以根据报文的源/目的 MAC 地址、以太类型等进行过滤。

包过滤应用在防火墙中,对需要转发的数据包,先获取数据包的包头信息,然后和设定的 ACL 规则进行比较,根据比较的结果决定对数据包进行转发或者丢弃。

包过滤防火墙



设备对包过滤防火墙的支持
 普通 IP 报文过滤:防火墙基于访问控制列表 ACL 对报文进行检查和过滤。防火墙检查报文的源/目的 IP 地址、源/目的端口号、协议类型号,根据访问控制列表允许符合条件的报文通过,拒绝不符合匹配条件的报文。防火墙所检查的信息来源于 IP、 TCP 或 UDP 包头。

 二层报文过滤:透明防火墙可以基于访问控制列表 ACL 对二层报文进行检查和过滤。防火墙检查报文的源/目的 MAC、以太类型字段,根据访问控制列表允许符合条件的报文通过,拒绝不符合匹配条件的报文。防火墙所检查的信息来源于 MAC 头。

 分片报文过滤:包过滤提供了对分片报文进行检测过滤的支持。包过滤防火墙将识别报文类型,如:非分片报文、首片分片报文、后续分片报文, 对所有类型的报文都做过滤。对于首片分片报文,设备根据报文的三层信息及四层信息,与 ACL 规则进行匹配,如果允许通过,则记录首片分片报文的状态信息,建立后续分片的匹配信息表。当后续分片报文到达时,防火墙不再进行 ACL 规则的匹配,而是根据首片分片报文的 ACL 匹配结果进行转发。另外,对于不匹配 ACL 规则的报文,防火墙还可以配置缺省处理方式。

四、状态防火墙

包过滤防火墙属于静态防火墙,目前存在的问题如下:
 对于多通道的应用层协议(如 FTP、 SIP 等),部分安全策略配置无法预知。

 无法检测某些来自传输层和应用层的攻击行为(如 TCP SYN、 Java Applets 等)。
 无法识别来自网络中伪造的 ICMP 差错报文,从而无法避免 ICMP 的恶意攻击。
 对于 TCP 连接均要求其首报文为 SYN 报文,非 SYN 报文的 TCP 首包将被丢弃。在这种处理方式下,当设备首次加入网络时,网络中原有 TCP 连接的非首包在经过新加入的防火墙设备时均被丢弃,这会对中断已有的连接。

因此,提出了状态防火墙——ASPF(Application Specific Packet Filter)的概念。ASPF 能够实现的检测有:
 应用层协议检测,包括 FTP、 HTTP、 SMTP、 RTSP、 H.323(Q.931、 H.245、 RTP/RTCP)检测;
 传输层协议检测,包括 TCP 和 UDP 检测,即通用 TCP/UDP 检测。

ASPF 的功能

ASPF 的主要功能如下:
 能够检查应用层协议信息,如报文的协议类型和端口号等信息,并且监控基于连接的应用层协议状态。对于所有连接,每一个连接状态信息都将被 ASPF 维护,并用于动态地决定数据包是否被允许通过防火墙进入内部网络,以阻止恶意的入侵。

 能够检测传输层协议信息(即通用 TCP/UDP 检测),能够根据源、目的地址及端口号决定 TCP 或 UDP 报文是否可以通过防火墙进入内部网络。

ASPF 的其它功能有:
 ASPF 不仅能够根据连接的状态对报文进行过滤,还能够对应用层报文的内容加以检测,提供对不可信站点的 Java Blocking 功能,用于保护网络不受有害的 Java Applets 的破坏。
 支持 TCP 连接首包检测。对 TCP 连接的首报文进行检测,查看是否为 SYN 报文,如果不是 SYN 报文则根据当前配置决定是否丢弃该报文。
 支持 ICMP 差错报文检测。正常 ICMP 差错报文中均携带有本报文对应连接的相关信息,根据这些信息可以匹配到相应的连接。如果匹配失败,则根据当前配置决定是否丢弃该 ICMP 报文。

在网络边界, ASPF 和包过滤防火墙协同工作,能够为企业内部网络提供更全面的、更符合实际需求的安全策略。

ASPF 基本概念

Java Blocking
Java Blocking 是对通过 HTTP 协议传输的 Java Applets 程序进行阻断。当配置了 Java Blocking 后,用户为试图在 Web 页面中获取包含 Java Applets 程序而发送的请求指令将会被阻断。

单通道协议和多通道协议
单通道协议:从会话建立到删除的全过程中,只有一个通道参与数据交互,如 SMTP、 HTTP。

多通道协议:包含一个控制通道和若干其它控制或数据通道,即控制信息的交互和数据的传送是在不同的通道上完成的,如 FTP、 RTSP。

应用层协议检测基本原理



如图所示,为了保护内部网络,一般情况下需要在路由器上配置访问控制列表,以允许内部网的主机访问外部网络,同时拒绝外部网络的主机访问内部网络。但访问控制列表会将用户发起连接后返回的报文过滤掉,导致连接无法正常建立。

当在设备上配置了应用层协议检测后, ASPF 可以检测每一个应用层的会话,并创建一个状态表项和一个临时访问控制列表(Temporary Access Control List, TACL):

1. 状态表项在 ASPF 检测到第一个向外发送的报文时创建,用于维护一次会话中某一时刻会话所处的状态,并检测会话状态的转换是否正确。

2. 临时访问控制列表的表项在创建状态表项的同时创建,会话结束后删除,它相当于一个扩展 ACL 的 permit项。TACL 主要用于匹配一个会话中的所有返回的报文,可以为某一应用返回的报文在防火墙的外部接口上建立一个临时的返回通道。

下面以 FTP 检测为例说明多通道应用层协议检测的过程。

FTP 检测过程示意图



如图所示, FTP 连接的建立过程如下:假设 FTP client 以 1333 端口向 FTP server 的 21 端口发起 FTP 控制通道的连接,通过协商决定由 FTP server 的 20 端口向 FTP Client 的 1600 端口发起数据通道的连接,数据传输超时或结束后连接删除。

FTP 检测在 FTP 连接建立到拆除过程中的处理如下:
1. 检查从出接口上向外发送的 IP 报文,确认为基于 TCP 的 FTP 报文。
2. 检查端口号确认连接为控制连接,建立返回报文的 TACL 和状态表项。
3. 检查 FTP 控制连接报文,解析 FTP 指令,根据指令更新状态表项。如果包含数据通道建立指令,则创建数据连接的 TACL;对于数据连接,不进行状态检测。
4. 对于返回报文,根据协议类型做相应匹配检查,检查将根据相应协议的状态表项和 TACL 决定报文是否允许通过。
5. FTP 连接删除时,状态表及 TACL 随之删除。

单通道应用层协议(如 SMTP、 HTTP)的检测过程比较简单,当发起连接时建立 TACL,连接删除时随之删除TACL 即可。

传输层协议检测基本原理
这里的传输层协议检测是指通用 TCP/UDP 检测。通用 TCP/UDP 检测与应用层协议检测不同,是对报文的传输层信息进行的检测,如源、目的地址及端口号等。通用 TCP/UDP 检测要求返回到 ASPF 外部接口的报文要与前面从 ASPF 外部接口发出去的报文完全匹配,即源、目的地址及端口号恰好对应,否则返回的报文将被阻塞。因此对于 FTP、 H.323 这样的多通道应用层协议,在不配置应用层检测而直接配置 TCP 检测的情况下会导致数据连接无法建立。

五、黑名单

黑名单,指根据报文的源 VPN 和源 IP 地址进行过滤的一种方式。同 ACL 相比,由于进行匹配的域非常简单,可以以很高的速度实现报文的过滤,从而有效地将特定 IP 地址发送来的报文屏蔽,同时支持用户静态配置黑名单和防火墙动态生成黑名单。

如图所示,用户 B 的 IP 地址已经在黑名单中,从用户 B 发出的所有报文都会被防火墙丢弃。



设备对黑名单的支持
除了用户可以静态配置黑名单外,当设备发现特定 IP 地址在进行 IP 扫描攻击或端口扫描攻击时,会将发起攻击的 IP 主动插入到黑名单中。如果黑名单已使能的话,在此后的一定时间内,来自这个 IP 地址的任何报文,都可以被黑名单过滤掉。

用户可以配置静态和动态黑名单的老化时间。

无论命中了黑名单的数据包是否为 ACL 规则允许的访问,防火墙对此类数据包予以丢弃。
用户可以将黑名单配置信息导出到文件中,也可以通过文件导入黑名单配置。

六、白名单

在防火墙上加入白名单的主机不会再被加入动态和静态黑名单,使用源 VPN 和 IP 地址来表示一个白名单项。白名单主要用在网络上的特定设备发出的合法业务报文具备 IP 扫描攻击和端口扫描攻击特性的场合,防止该特定设备被防火墙加入黑名单。

白名单只有静态的。

白名单的特点
如果用户将某个主机的 VPN 和 IP 地址加入防火墙白名单,防火墙就不会对该主机发出的报文进行 IP 扫描攻击和端口扫描攻击检查,也不会将其 IP 地址生成动态黑名单,也不允许用户将白名单主机添加到静态黑名单中。

设备对白名单的支持
当设备收到一个报文后,就会检查是否是来自于白名单项的报文。如果是,设备对该报文就不会进行 IP 扫描攻击和端口扫描攻击检查,也不会将源 IP 生成动态黑名单,但是其他安全过滤功能,比如 ACL 包过滤、 ASPF、流量统计和监控等,还是要进行,以达到防火墙的最大安全过滤效果。
用户可以配置白名单的老化时间。
用户可以将白名单配置信息导出到文件中,也可以通过文件导入白名单配置。

端口映射
应用层协议通常使用知名端口号进行通信。端口映射允许用户对不同的应用层协议定义一组新的端口号,还可以指定使用非知名端口的主机范围。

端口映射只有和 ASPF、 NAT 等针对业务敏感的特性联合使用的时候才具有实际意义。例如在一个企业私网中,内部 FTP 服务器 10.10.10.10 通过 2121 端口提供 FTP 服务。用户通过 NAT 服务器访问 FTP 服务器时,只能使用2121 做为端口号。

由于默认情况下 FTP 报文的端口号是 21,这时 FTP 服务器无法将 21 端口的报文识别为 FTP应用。在这样的场合则需要使用端口映射功能把 2121 端口映射成 FTP 协议,则 NAT 服务器就把 2121 端口的报文识别为 FTP 协议报文转发给 FTP 服务器,实现用户对 FTP 服务器的访问。

设备对端口映射的支持
设备对端口映射的支持都是通过 ACL 来实现的,只有匹配某条 ACL 的报文,才会实施端口映射。端口映射使用基本 ACL(编号 2000~2999)。端口映射在使用 ACL 过滤报文时,使用报文的目的 IP 地址去匹配基本 ACL 规则中配置的 IP 地址。

如图所示,外部 PC 通过 Router 访问内部 WWW 服务器(端口号为 8080),在外部 PC 的报文通过 Router 时,命中 ACL 的报文会进行端口映射,只有目的地址是 129.38.2.4 的报文才可以通过 Router 进行端口映射访问 WWW服务器。

端口映射示意图



八、攻击防范

网络攻击的种类
网络攻击一般分为拒绝服务型攻击、扫描窥探攻击和畸形报文攻击三大类:

1、拒绝服务型攻击
拒绝服务型 DoS(Denial of Service)攻击是使用大量的数据包攻击系统,使系统无法接受正常用户的求,或者主机挂起不能正常的工作。主要 DoS 攻击有 SYN Flood、 Fraggle 等。
拒绝服务攻击和其他类型的攻击不同之处在于:攻击者并不是去寻找进入内部网络的入口,而是阻止合法用户访问资源或防火墙。

2、扫描窥探攻击
扫描窥探攻击是利用 ping 扫描(包括 ICMP 和 TCP)来标识网络上存活着的系统,从而准确地指出潜在的目标。利用 TCP 和 UDP 等进行端口扫描,就能检测出操作系统的种类和潜在的服务种类。
攻击者通过扫描窥探就能大致了解目标系统提供的服务种类,为进一步侵入系统做好准备。

3、畸形报文攻击
畸形报文攻击是通过向目标系统发送有缺陷的 IP 报文,使得目标系统在处理这样的 IP 包时会出现崩溃,给目标系统带来损失。主要的畸形报文攻击有 Ping of Death、 Teardrop 等。

设备对攻击防范的支持:

Land 攻击
Land 攻击,就是把 TCP 的 SYN 包的源地址和目的地址都设置为目标计算机的 IP 地址。这将导致目标计算机向它自己发送 SYN-ACK 报文,目标计算机又向自己发回 ACK 报文并创建一个空连接,每一个这样的连接都将保留直到超时。

Land 攻击示意图



各种类型的主机对 Land 攻击反应不同,许多 UNIX 主机将崩溃, Windows NT 主机会变得极其缓慢。

Smurf 攻击
简单的 Smurf 攻击,用来攻击一个网络。攻击者向目标网络发送 ICMP 应答请求报文,该报文的目标地址设置为目标网络的广播地址,这样,目标网络的所有主机都对此 ICMP 应答请求作出答复,导致网络阻塞。如图所示。

简单 Smurf 攻击示意图



高级的 Smurf 攻击,主要用来攻击目标主机。攻击者向目标主机所在的网络发送 ICMP 应答请求报文,该报文的源地址设置为目标主机的地址,这样,所有的应答报文都将发送给目标主机。最终导致目标主机处理速度缓慢,甚至崩溃。

高级 Smurf 攻击示意图



Smurf 攻击报文的发送需要一定的流量和持续时间,才能真正构成攻击。理论上讲,目标网络的主机越多,攻击的效果越明显。

WinNuke 攻击
NetBIOS 作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一般情况下, NetBIOS 是运行在 LLC2 链路协议之上的,是一种基于组播的网络访问接口。

为了在 TCP/IP 协议栈上实现 NetBIOS, RFC 规定了一系列交互标准,以及几个常用的 TCP/UDP 端口,如下。

 139:NetBIOS 会话服务的 TCP 端口。
 137:NetBIOS 名字服务的 UDP 端口。
 136:NetBIOS 数据报服务的 UDP 端口。

Windows 操作系统实现了 NetBIOS over TCP/IP 功能,并开放了 139 端口。

WinNuke 攻击就是利用了 Windows 操作系统的一个漏洞,向这个 139 端口发送一些携带 TCP 带外(OOB)数据报文,但这些攻击报文与正常携带 OOB 数据报文不同的是,其指针字段与数据的实际位置不符,即存在重叠,Windows 操作系统在处理这些数据的时候,就会崩溃。

SYN Flood 攻击
SYN Flood 攻击利用 TCP 三次握手的一个漏洞向目标计算机发动攻击。攻击者向目标计算机发送 TCP 连接请求(SYN 报文),然后对于目标返回的 SYN-ACK 报文不作回应。目标计算机如果没有收到攻击者的 ACK 回应,就会一直等待,形成半连接,直到连接超时才释放。

半连接示意图



攻击者利用这种方式发送大量 TCP SYN 报文,让目标计算机上生成大量的半连接,迫使其大量资源浪费在这些半连接上。目标计算机一旦资源耗尽,就会出现速度极慢、正常的用户不能接入等情况。

攻击者还可以伪造 SYN 报文,其源地址是伪造的或者不存在的地址,向目标计算机发起攻击。

ICMP Flood 攻击
通常情况下,网络管理员会用 PING 程序对网络进行监控和故障排除,大概过程如下:
1. 源计算机向接收计算机发出 ICMP 响应请求报文(ICMP ECHO)。
2. 接收计算机接收到 ICMP 响应请求报文后,会向源计算机回应一个 ICMP 应答报文(ECHO Reply)。

这个过程是需要 CPU 处理的,在有些情况下还可能消耗掉大量的资源。

如果攻击者向目标计算机发送大量的 ICMP ECHO 报文(产生 ICMP 洪水),则目标计算机会忙于处理这些 ECHO报文,而无法继续处理其它的数据报文。

ICMP Flood 攻击示意图



UDP Flood 攻击
UDP Flood 攻击的原理与 ICMP Flood 攻击类似,攻击者通过发送大量的 UDP 报文给目标计算机,导致目标计算机忙于处理这些 UDP 报文而无法继续处理正常的报文。
地址扫描与端口扫描攻击攻击者运用扫描工具探测目标地址和端口,目标地址会对这些探测作出响应,攻击者根据这些响应用来确定哪些目标系统是存活着并且连接在网络上、目标主机开放或者关闭了哪些端口。

Ping of Death 攻击
所谓 Ping of Death,就是利用一些尺寸超大的 ICMP 报文对系统进行的一种攻击。
IP 报文的长度字段为 16 位,这表明一个 IP 报文的最大长度为 65535。对于 ICMP 回应请求报文,如果数据长度大于 65507,就会使 ICMP 数据+IP 头长度(20)+ICMP 头长度(8) > 65535。对于有些防火墙或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启。

ICMP 超大报文示意图



Large-ICMP 攻击
同 ping of death 类似, Large-ICMP 也是利用一些大尺寸的 ICMP 报文对系统进行的一种攻击,与 ping of death 不同的是, Large-ICMP 报文的长度不会超过 IP 报文的最大长度 65535,但是对一些操作系统也会造成破环。
需要在防火墙上配置允许通过的 ICMP 报文的最大长度。

ICMP-Unreachable 攻击
某些系统在收到网络(报文类型字段为 3,代码字段为 0)或主机(报文类型字段为 3,代码字段为 1)不可达的ICMP 报文后,对于后续发往此目的地的报文直接认为不可达。

ICMP-Unreachable 攻击示意图



攻击者利用这种机制,向目标主机发送虚假的 ICMP-Unreachable 报文,干扰了目标主机的路由信息,影响了报文发送。

ICMP-Redirect 攻击
ICMP-Redirect 攻击和 ICMP-Unreachable 攻击类似。
网络设备可以向同一个子网的主机发送 ICMP 重定向报文,请求主机修改路由。
攻击者利用这个原理,跨越网段向另外一个网络的目标主机发送虚假的重定向报文,以改变目标主机的路由表。
这种攻击干扰了目标主机的路由信息,影响了报文发送。

ICMP-Redirect 攻击示意图



IP-fragment 攻击

IP 报文中有几个字段与分片有关:DF(Don’ t Fragmentate)位、 MF 位、 Fragment Offset、 Length。

如果上述字段的值出现矛盾,而设备处理不当,会对设备造成一定的影响,甚至瘫痪。矛盾的情况有:
 DF 位被置位,而 MF 位同时被置位或 Fragment Offset 不为 0。
 DF 位为 0,而 Fragment Offset + Length > 65535。
另外,由于分片报文可以增加目的设备缓冲和重组的负担,应直接丢弃目的地址为设备本身的分片报文。

Teardrop 攻击

在网络传输的过程中,如果 IP 报文的长度超过链路层的 MTU(最大传输单元),就会进行分片。在 IP 报头中有一个偏移字段(OFFSET)和一个分片标志(MF),如果 MF 标志设置为 1,则表明这个 IP 报文是一个大 IP包的分片,其中偏移字段指出了这个片断在整个 IP 包中的位置。接收端可以根据报文头中的这些信息还原该 IP包。

比如,一个较大的报文在 MTU 较小的链路上传输的时候,被分成了两个 IP 报文,这两个 IP 报文将在目的端进行组装,还原为原始的 IP 报文。

正常的分片组装示意图



如果一个攻击者打破这种正常情况,把偏移字段设置成不正确的值,即可能出现重合或断开的情况。某些 TCP/IP协议栈在收到类似这种含有重叠偏移的伪造分段时会崩溃,这就是所谓的 Teardrop 攻击。

Teardrop 攻击示意图



Fraggle 攻击

Fraggle 攻击的原理与 Smurf 攻击的原理类似,不过, Fraggle 攻击发送的是 UDP 报文而非 ICMP 报文。因为发送的是 UDP 报文, Fraggle 攻击可以穿过一些阻止 ICMP 报文进入的防火墙。

Fraggle 攻击利用的原理是:UDP 端口 7(ECHO)和端口 19(Chargen)在收到 UDP 报文后,都会产生回应。如下:
 UDP 的 7 号端口收到报文后,会象 ICMP Echo Reply 一样回应收到的内容。
 UDP 的 19 号端口在收到报文后,会产生一串字符流。
这两个 UDP 端口都会产生大量应答报文,挤占网络带宽。

攻击者可以向目标主机所在的网络发送源地址为被攻击主机、而目的地址为其所在子网的广播地址或子网网络地址的 UDP 报文,目的端口号为 7(ECHO)或 19(Chargen)。子网中启用了此功能的每个系统都会向受害主机发送回应报文,从而产生大量的流量,导致受害网络的阻塞或受害主机崩溃。

如果目标主机所在网络上的主机没有启动这些功能,这些主机将产生一个 ICMP 不可达消息,仍然消耗带宽。也可将源端口改为端口 19(Chargen) ,目的端口为 7(ECHO),这样会自动不停地产生回应报文,其危害性更大。

Tracert 攻击
Tracert 是利用 TTL(Time To Live)为 0 时返回的 ICMP 超时报文,和达到目的地时返回的 ICMP 端口不可达报文来发现报文到达目的地所经过的路径。
攻击者可以利用 Tracert 窥探网络的结构。对网络造成潜在的危险。

畸形 TCP 报文攻击
畸形 TCP 报文是通过故意错误设置 TCP 头中的 6 个标记位,造成接收方 TCP 协议栈的处理错误,达到攻击的目的。

九、流量统计及监控

防火墙不仅要对数据流量进行监控,还要对内外部网络之间的连接发起情况进行检测,进行大量的统计计算与分析。防火墙的统计分析一方面可以通过专门的分析软件对日志信息进行事后分析,另一方面,防火墙系统本身可以完成一部分分析功能,具有一定的实时性。

比如,通过分析外部网络向内部网络发起的 TCP/UDP 连接数是否超过设定阈值,可以确定是否需要限制该方向发起新连接,或者限制向内部网络某一 IP 地址发起新连接。

图是防火墙的一个典型应用示例,当启动了外部网络到内部网络的基于 IP 地址的统计分析功能时,如果外部网络对 Web 服务器 129.1.9.1 发起的 TCP 连接数超过了设定的阈值,将限制外部网络向该服务器发起新连接,直到连接数降到正常范围。

TCP 连接数超限示意图



设备支持的流量统计及监控方法如下:

系统级的流量统计和监控

系统级的流量统计和监控,对系统中所有启用了防火墙功能的安全域间的数据流生效,即设备统计所有安全域间的 ICMP、 TCP、 UDP 等连接数。当连接数超过配置阈值时,设备采取限制连接措施,直至连接数降至阈值以下。

基于安全区域的流量统计和监控

基于安全区域的流量统计和监控,对本安全区域和其他安全区域之间的数据流生效,即设备会统计本安全区域和其他所有安全域间建立的 TCP、 UDP 等连接总数。当本安全区域和其他所有安全域间建立的连接总数或者某个方向的连接总数超过配置的阈值时,设备采取限制连接数措施,直至连接数降至阈值以下。

基于 IP 地址的流量统计和监控
基于 IP 地址的流量统计和监控,用于统计和监控安全区域中单个 IP 地址所建立的 TCP/UDP 连接。设备通过分析源 IP 地址发起或目的地址接收的 TCP 或 UDP 连接总数是否超过设定的阈值,可以确定是否需要限制该方向的新的连接的发起,以防止系统受到恶意的攻击或因系统太忙而发生拒绝服务的情况。
当 TCP/UDP 连接数降至阈值以下后,源 IP 地址或目的地址可以重新发起或者接受 TCP 或 UDP 连接。

十、防火墙日志
防火墙可以实时记录防火墙的动作和状态(例如实施了某种防火墙措施、检测到某种网络攻击等),并将信息记录到日志中。

对日志内容的分析和归档,能够使管理员检查防火墙的安全漏洞、何时何人试图违背安全策略、网络攻击的类型,实时的日志记录还可以用来检测正在进行的入侵。

当需要对防火墙的动作和状态进行记录,以便检查防火墙的安全漏洞、检测网络攻击和入侵等,可以配置防火墙日志功能。

设备对防火墙日志的支持

黑名单日志
设备在发现有地址扫瞄、端口扫瞄等攻击的时候,在黑名单使能的情况下会动态生成黑名单日志。
手动加入的黑名单同样也会生成黑名单日志。
动态生成的黑名单、手动加入的静态黑名单到老化时间之后,会生成解除黑名单日志。

攻击日志

设备发现各种攻击类型后,会生成攻击日志,记录攻击类型和参数。

流量监控日志
当系统全局、区域出入的会话数超过所配置的连接数阈值上限时,设备会生成流量监控日志,当会话数低于所配置的连接数阈值下限时,设备会生成流量恢复日志。

流日志
设备的流日志是在会话表老化的情况下,封装流日志信息,发送到日志服务器。

十一、虚拟防火墙
近年来小型私有网络不断增加,这些网络一般对应小型企业。此类用户有如下特点:
 有较强的安全防范需求。
 经济上无法负担一台专有安全设备。

设备支持从逻辑上划分为多台虚拟防火墙,分别为多个小型私有网络提供独立的安全保障。
每台虚拟防火墙都是 VPN(Virtual Private Network)实例(VPN-Instance)、安全实例的综合体。它能够为虚拟防火墙用户提供私有的路由转发平面、安全服务

VPN 实例
VPN 实例为虚拟防火墙用户提供相互隔离的 VPN 路由,与虚拟防火墙一一对应。这些 VPN 路由将为各虚拟防火墙接收的报文提供路由支持。

安全实例
安全实例为虚拟防火墙用户提供相互隔离的安全服务,与虚拟防火墙一一对应。这些安全实例具备私有的接口、安全区域、安全域间、 ACL 和 NAT 规则,并能为虚拟防火墙用户提供黑名单、包过滤、流量统计和监控、攻击防范、 ASPF 和 NAT 等私有的安全服务。

十二、防火墙主备
防火墙设备是所有信息流都必须通过的单一点,一旦出现故障所有信息流都会中断。保障信息流不中断至关重要,这就需要解决防火墙设备单点故障问题。

为了解决这一问题,可以由两台防火墙实现冗余路由备份,其中一台为主用(Master)防火墙,另一台为备用(Backup)防火墙。主用和备用防火墙各接口分别连接相应的安全区域。防火墙主备状态由 VRRP 协议协商确定,通过 HSB 协议实现防火墙会话表项的同步。

防火墙主备
防火墙是状态防火墙,只检查会话流的首包,并动态生成会话表项。对于每一个动态生成的会话连接,防火墙上都有一个会话表项与之对应,会话表项中记录了用户会话的状态信息,后续报文(包括返回报文)只有匹配会话表项才能通过防火墙。

防火墙主备组网图



如图所示, Firewall A 作为 Master 设备并承担所有数据传输任务,其上创建了很多动态会话表项;而 Firewall B则处于备份状态,没有任何流量经过。

如果 Firewall A 出现故障或相关链路出现问题, Firewall B 将会切换状态变成新的 Master,并开始承担传输任务。

如果状态切换前,会话表项没有备份到 Firewall B,则先前经过 Firewall A 的所有会话都会因为无法匹配 Firewall B 的会话表而无法通信,导致业务中断。

为了实现 Master 防火墙出现故障时能由 Backup 防火墙平滑地接替工作,在 Master 和 Backup 的防火墙之间实时备份会话表和状态信息;当前防火墙主备通过 HSB 机制实现在 Master 和 Backup 防火墙之间进行会话表和状态信息的备份和同步。

防火墙主备的状态要求

防火墙报文路径不一致示意图



防火墙的 VRRP 状态需要保持一致,这样表示防火墙上和各安全区域相连的若干接口状态相同,即同时处于主用状态或同时处于备用状态。
假设 Firewall A 和 Firewall B 的 VRRP 状态一致,即 Firewall A 的所有接口均为主用状态, Firewall B 的所有接口均为备用状态。此时, Trust 区域的 PC1 访问 Untrust 区域的 PC2,报文的转发路线为(1)-(2)-(3)-(4)。Firewall A 转发访问报文时,动态生成会话表项。当 PC2 的返回报文经过(5)-(6)-(7)-(8)到达 Firewall A 时,则由于能够匹配会话表项,从而顺利返回,通信顺畅。

 假设 Firewall A 和 Firewall B 的 VRRP 状态不一致,例如, Firewall B 与 Trust 区域相连的接口为备用状态,但与 Untrust 区域的接口为主用状态,则 PC1 的报文通过 Firewall A 设备到达 PC2 后,在 Firewall A 上动态生成会话表项。PC2 的返回报文通过路线(5)-(9)返回。此时由于 Firewall B 上没有相应数据流的会话表项,在没有其他报文过滤规则允许通过的情况下, Firewall B 将丢弃该报文,导致会话中断。

另外,下行与交换机相连的链路可以通过交换机的 SmartLink 确保链路的可靠性,同时在两台防火墙设备间通过直连链路确保下行链路故障时能够通过此链路将相应流量转发到对端防火墙。

说明:
 防火墙不支持用户配置数据的双机热备份,必须由用户保证备份的两台防火墙上配置数据的一致性。
 两台互为备份的设备型号必须相同,有相同的内存、 CPU 以及特性配置,否则不能保证完全备份。
 两台互为备份的设备的软件版本必须一致。
 备份接口不能与防火墙业务接口相同,必须使用专用的备份接口,该备份链路不再参与数据转发。
 不支持非对称路由模式下的防火墙主备,一条流的来回必须经过同一台设备。

 不支持统计信息的同步,仅支持 TCP/UDP 协议的会话信息主备。