防火墙技术
防火墙概述
防火墙是一种安全设备,用于保护一个网络区域免受来自另一个网络区域的攻击和入侵,通常被应用于网络边界,例如企业互联网出口、企业内部业务边界、数据中心边界等。
防火墙与交换机、路由器功能对比
- 以园区网为例,交换机作用是接入终端和汇聚内部路由,组件内部互联互通的局域网
- 路由器作用是路由的分发、寻址和转发,构建外部连接网络
- 防火墙作用是流量控制和安全防护,区分和隔离不同安全区域
防火墙与路由器转发流程对比
防火墙的转发流程比路由器复杂。以框式设备为例,硬件上除了接口、LPU(Line Processing Unit)、交换网板等外,防火墙还特有SPU(Service Processing Unit),用于实现防火墙的安全功能。
防火墙典型应用场景
防火墙的基本概念
安全区域(Security Zone),简称为区域(Zone),是防火前的重要概念。防火墙大部分的安全策略都基于安全区域实施
一个安全区域是防火墙若干接口所连网络的集合,一个区域内的用户具有相同的安全属性
默认安全区域
华为防火墙确认已创建四个区域:trust、untrust、dmz、local
- 默认的安全区域不能删除,也不允许修改安全优先级
- 每个Zone都必须设置一个安全优先级(priority),值越大,则Zone的安全优先级越高
- 用户可根据自己的需求创建自定义的Zone
区域名称 | 默认优先级 |
非受信区域(untrust) | 低安全级别区域,优先级为5 |
非军事化区域(dmz) | 中等安全级别区域,优先级为50 |
受信区域(trust) | 较高安全级别区域,优先级为85 |
本地区域(local) | Local区域定义的是设备本身,例如设备的接口。Local区域是最高安全级别区域,优先级为100 |
默认安全区域的划分
- 非受信区域(untrust):通常用于定义Internet等不安全的网络
- 非军事化区域(dmz):通常用于定义内网服务器所在区域。因为这些设备虽然部署在内网,但是经常需要被外网访问,存在较大安全隐患,同时一般又不允许其主动访问外网,所以将其部署一个优先级比trust低,但是比untrust高的安全区域中
- 受信区域(trust):通常用于定义内网终端用户所在区域
- 本地区域(local):local区域定义的设备本身,包括设备的各个接口本身。
区域间(Interzone)
流量的源、目的地址决定了互访的区域,下图中PC访问防火墙的接口的流量实际上是从trust zone到达local zone;PC访问Internet的流量实际上是从trust zone到达untrust zone
安全策略
安全策略是控制防火墙对流量转发以及对流量进行内容安全一体化检测的策略
当防火墙收到流量后,对流量的属性(五元组、用户、时间段等)进行识别,然后与安全策略的条件进行匹配。如果条件匹配,则此流量被执行对应的动作
安全策略组成
- 安全策略的组成有匹配条件、动作和安全配置文件(可选)。安全配置文件实现内容安全
- 安全策略动作如果为"允许",则可配置安全配置文件;如果为"禁止",则可配置反馈报文
动作说明:
- 允许:如果动作为"允许",则对流量进行如下处理
- 如果没有配置内容安全检测,则允许流量通过
- 如果配置了内容安全检测,最终根据内容安全检测的结论来判断是否对流量进行放行。
- 内容安全检测包括反病毒、入侵防御等,它是通过在安全策略中引用安全配置文件实现的。如果其中一个安全配置文件阻断该流量,则防火墙阻断该流量;如果所有的安全配置文件都允许该流量转发,则防火前允许该流量转发
- 禁止:表示拒绝符合条件的流量通过
- 如果动作为"禁止",防火墙不仅可以将报文丢弃,还可以针对不同的报文类型选择发送对应的反馈报文。发起连接请求的客户端/服务器收到防火墙发送的阻断报文后,可以快速结束会话并让用户感知到请求被阻断
- Reset客户端:防火墙向TCP客户端发送TCP Reset报文
- Reset服务器:防火墙向TCP服务器发送TCP Reset报文
- ICMP不可达:防火墙向报文客户端发送ICMP不可达报文
安全策略匹配过程
当配置多条安全策略规则时,安全策略的配置按照策略列表的顺序执行,即从策略列表顶端开始逐条向下匹配。如果流量匹配了某个安全策略,将不再进行下一个策略的匹配
安全策略的配置顺序很重要,需要先配置条件精确的策略,再配置宽泛的策略
系统默认存在一条缺省安全策略default。缺省安全策略位于策略的最底部,优先级最低,所有匹配条件均为any,动作默认为禁止。如果所有配置的策略都未匹配,则将匹配缺省安全策略default
会话表
会话表是用来记录TCP、UDP、ICMP等协议连接状态的表项,是防火墙转发报文的重要依据
- 防火墙采用了基于"状态"的报文控制机制:只对首包或者少量报文进行检测就确定一条连接的状态,大量报文直接根据所属连接的状态进行控制。这种状态检测机制迅速提高了防火墙的检测和转发效率。
- 会话表就是为了记录连接的状态而存在的。设备在转发TCP、UDP和ICMP报文时都需要查询会话表,来判断该报文所属的连接并采取相应的处理措施
会话表的创建和包处理过程
防火墙状态检测开启情况下,流量的首包会创建会话表项,后续包即可直接匹配会话表项
会话表的老化时间与长连接
- 防火墙为各种协议设定了会话老化机制。当一条会话在老化时间内没有被任何报文匹配,则会被从会话列表中删除。这种机制可以避免防火墙的设备资源被大量无用、陈旧的会话表项消耗。
- 对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。例如:
- 用户通过FTP下载大文件,需要间隔很长时间才会在控制通道继续发送控制报恩
- 用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于TCP的会话老化时间
- 此时如果其会话表项被删除,则该业务会中断。长连接(Long Link)机制可以给部分连接设定超长的老化时间,有效解决这个问题
多通道协议在防火墙上的解决方案
多通道协议在防火墙上的问题
如果在防火墙上配置严格的单向安全策略,那么防火墙将只允许业务单方向发起访问。这会导致一些特殊的协议无法工作。
多通道协议:通信过程中需要占用两个活两个以上端口的协议
FTP主动模式传输文件时,首先需要客户端主动向服务器端发起控制连接,然后需要服务器端向客户端发起数据连接。如果设备上配置的安全策略仅允许客户端报文单方向通过,则FTP文件传输不能成功
为了解决多通道协议的问题,防火墙需要识别协议在应用层协商的地址和端口,这需要开启ASPF(Application Specific Packet Filter,针对应用层的包过滤)功能
ASPF与Server-map
ASPF也称为基于状态的报文过滤,ASPF功能可以自动检测某些报文的应用层信息并根据应用层信息放开相应的访问规则,即生成Server-map表
Server-map表也记录了类似会话表中连接的状态。Server-map表中的信息相对简单,是简化的会话表,在真实流量到达前生成。在流量真实到达防火墙时,防火墙会基于Server-map表生成会话表,然后执行转发。
ASPF与Server-map示例
防火墙上配置了ASPF功能后,会检测FTP控制连接中协商的数据连接端口信息,然后生成Server-map表项。Server-map表项包含了FTP控制通道中协商的数据通道信息,防火墙为命中Server-map表的数据创建会话表
Server-map表与会话表的关系:
- Server-map表记录了应用层数据中的关键信息,报文命中该表后,不再受安全策略的控制
- 会话表是通信双方连接状态的具体表现
- Server-map表不是当前的连接信息,而是防火墙对当前连接分析后得到的即将到来的报文的预测
- 防火墙收到报文先检查是否命中会话表
- 如果没有命中则检查是否命中Server-map表
- 命中Server-map表的报文不受安全策略控制
- 防火墙最后为命中Server-map表的数据创建会话表
Server-map表与简化的包转发过程
当防火墙接收到一个报文且没有命中会话表时,防火墙进入首包处理流程,查询是否命中的Server-map表,如果有,则会生成会话表转发报文;如果没有,则执行其他包处理过程。