防火墙技术概述
概念
防火墙是一种网络安全系统,旨在监控和控制网络流量,根据预定义的安全规则决定是否允许数据包的传输。其主要功能是保护内部网络免受外部威胁,防止未经授权的访问,并在企业网络和互联网之间建立一道安全屏障。通过流量过滤、阻止恶意攻击和记录网络活动,防火墙有效地提升了网络的安全性和稳定性。作为网络安全的第一道防线,防火墙在企业、机构和个人用户的网络环境中发挥着关键作用。
防火墙能包含osi模型的多层,可以进行数据包的检查和过滤
分类
根据是否维护连接状态信息可以分为:
- 无状态防火墙:无状态防火墙仅工作在IP层中,它不维护连接状态。无状态防火墙只根据每个数据包的独立特征(如源地址、目标地址、端口号等)来做决策。这种防火墙简单、快速,但也容易受到一些攻击形式的影响。
- 有状态防火墙这个分类方式关注防火墙是否维护连接状态信息。无状态防火墙在处理每个数据包时都是相互独立的,不考虑先前的数据包信息。有状态防火墙则会维护连接状态信息,能够跟踪数据包之间的关系。
根据防火墙的功能可以分为:
- 包过滤防火墙 (Packet Filtering Firewall): 基于数据包的头部信息(源IP、目标IP、端口等)进行过滤。 无状态防火墙和有状态防火墙都可以是包过滤防火墙。
- 应用层防火墙 (Application-Level Firewall / Proxy Firewall): 检查应用层数据,提供更高级的安全性,例如内容过滤、身份验证等。 代理服务器防火墙属于此类。
- 状态感知防火墙 (Stateful Inspection Firewall): 一种更高级的有状态防火墙,不仅跟踪连接状态,还检查数据包的完整性。
从采用的技术可以分为:
- 包过滤防火墙:
- 机制: 在网络层/传输层逐包检查数据包头部的五元组(IP、Port、Protocol),对比 Access Control List (ACL) 决定放行或丢弃。
- 特点: 吞吐量高、延迟低;但无法识别应用层载荷,且静态规则维护复杂。
- 代理服务器型防火墙:
- 机制: 完全中断客户端与服务器之间的直接网络连接,由防火墙作为代理代表客户端发起请求,实现“双向隔离”。
- 特点: 安全性高,能实现精细的应用层安全审计与认证;但协议通用性差,处理开销大,可能成为网络性能瓶颈。
- 电路层网关:
- 机制: 工作在 OSI 模型的大致会话层(Session Layer,如 SOCKS 协议)。它不检查单个数据包的 Payload,而是在允许数据透传前,验证 TCP/UDP 会话建立的合法性(如握手过程)。
- 特点: 比包过滤提供更好的会话级安全性,且不需要为每个应用层协议定制代理,效率高于应用层代理。
- 应用层网关:
- 机制: 针对特定的应用层协议(如 FTP、SIP、H.323),深入解析其控制信道内嵌入的数据(如动态分配的端口号),并动态开启相应的防火墙数据通道(Pinholes)。
- 特点: 解决了复杂多通道协议(Multi-Channel Protocols)穿透防火墙与 NAT 的难题。
- 混合型防火墙:
- 机制: 结合包过滤的高效性、有状态检测的连接跟踪以及应用层代理的深度内容安全检查,根据流量类型灵活采用不同的防御策略。
- 特点: 兼顾性能与安全深度,是现代下一代防火墙(NGFW)的技术基石。
- 自适应代理技术:
- 机制: 结合了包过滤的速度与应用代理的安全性。当初始会话建立时,采用应用层代理进行严格的身份验证与深度安全性检查;一旦会话建立且安全性得到确认,防火墙将连接“降级”至网络层/状态检测层直接快速转发。
- 特点: 在保障高安全性的同时,极大地降低了持续应用层代理带来的系统 CPU 与内存开销。
软硬件防火墙
硬件防火墙
硬件防火墙指具有防火墙功能的专业网络设备。硬件防火墙内置了专用的操作系统和转发端口,其转发性能强大,网络适应性强,稳定性较高,但是升级更新较为不便。
X86架构
基于 32 位 PCI 总线的 X86 平台适用于百兆防火墙,具有很高的灵活性和扩展性。32 位PCI 总线网卡芯片与 CPU 之间的数据传输速率理论上可以达到 1000 Mbits/s,但是 X86 平台使用的是共享总线的一种架构,如果有两块网卡同时传输数据,则平均下来每块网卡只能获得500 Mbits/s 的速率。参与的网卡数量越多,获得的速率就越低,因此实际上不能应用在千兆防火墙上。
对此 Intel 提出了解决方案,把 32 位的 PCI 总线升级到了 PCI-E,即 PCI-Express,这样PCI-E 4X 的总线的速度就可以达到 16Gbits/S,并且 PCI-E 各个 PCI 设备之间互相独立不共享总线带宽。但是基于 X86 平台的架构,从网卡到 CPU 的传输机制是采用中断方式来实现的,当网络中出现大量数据小包(64 Bytes)时,与相同的流量的大包相比将产生更多的中断,此时防火墙的吞吐量为 30%-40%。
ASIC架构
X86 平台最大的缺点就是小包吞吐量低,主要原因是 X86 平台的中断机制以及 X86 平台所有数据都要经过主 CPU 处理,极大的占用了 CPU。基于 ASIC 架构的防火墙从根本架构设计上改进了中断机制,网卡收到数据后,不经过主 CPU 处理,而是经过集成在系统中的ASIC 芯片直接处理,并且将指令以及算法直接固化到芯片中。这样数据不经过主 CPU 处理,不使用中断机制,明显提高了防火墙的处理性能。
但随之而来的问题是,ASIC 架构的芯片功能比较单一,升级维护的开发周期比较长。ASIC 灵活性和扩展性也比较差,不能完成邮件过滤、病毒防护等比较复杂的功能,只能用来做功能简单的防火墙,随着网络复杂性的提高,AISC 架构难以胜任。
NP架构
NP 是专门为网络设备处理网络流量而设计的处理器,其体系结构和指令集对于数据处理都做了专门的优化,以解决 x86 架构性能不足和 ASIC 架构不够灵活的问题。NP 架构的实现原理跟 ASIC 架构类似,在每一个网口上都有一个网络处理器 NPE,用以处理网口接收到的数据。
网络处理器上运行的程序使用微码编程,软件实现的难度也比较大,开发周期比 ASIC短,但仍然不够灵活,功能扩展上同样受限。
多核架构
采用多核处理器,在同一个芯片上集成了多个独立物理核心,每个核心都具有独立的逻辑结构,包括缓存、执行单元、指令级单元和总线接口等逻辑单元。通过高速总线、内存共享进行通信,每个物理核心都可以达到 1Ghz 的主频,并可以在相对节能的方式下运行,多个核心协调处理,以达到性能倍增的目的。无论在性能、灵活性还是在开发的成本和难度方面,都极大地优于其他架构。
软件防火墙
软件防火墙是指安装在主机上的防火墙软件。相对硬件防火墙而言,软件防火墙只有软件部分,所以需要准备额外的主机来安装软件,并需要多个网卡来进行数据转发。通常软件防火墙的性能受限于宿主机的性能,相对硬件防火墙要弱;另外其网络适应性弱,稳定性不如硬件防火墙高。但软件防火墙的优点是软件分发、更新更为方便。
单机防火墙与网络防火墙
单机防火墙
单机防火墙是指部署在单个主机上的软件防火墙。单机防火墙的产品形态是软件,功能较单一
网络防火墙
网络防火墙是指部署在网络中的软件或硬件防火墙。
网络防火墙的产品形态为硬件或者软件,功能复杂、多样。单机防火墙安装在独立的主机上,安全策略分散在各个安全点上;网络防火墙部署在网络边界处,安全策略对整个网络有效。单机防火墙是网络防火墙的有益补充,但不能代替网络防火墙为内部网络提供全面强大的防护功能。
防火墙的功能分类

包过滤防火墙

包过滤防火墙在网络层对数据包进行过滤,过滤的依据是系统设定的 ACL 规则。包检查并不是检查数据包的所有内容,只检查报头,通常检查下列几项:
- 源地址
- 目的地址
- TCP 或者 UDP 源端口号
- TCP 或者 UDP 目的端口号
- 协议类型
- ICMP 消息类型
- TCP 报头中的 ACK 位
- TCP 的序列号、确认号
- IP 校验和
包过滤防火墙的逻辑简单,易于实现,对用户透明,过滤效率高,并且价格很便宜。包过滤防火墙的缺点主要体现在以下几个方面:
- 随着 ACL 复杂度和长度的增加,处理性能呈指数下降趋势;
- 静态包过滤在遇到利用动态端口的协议时会发生困难。例如对于 FTP 协议,防火墙事先无法知道哪些端口需要打开,就需要将所有可能用到的端口打开,会造成不安全的隐患;
- 难以防止 IP 欺骗。例如,攻击者可以使用假冒地址进行欺骗,通过把自己主机 IP 地址设成一个合法主机 IP 地址,就能很轻易地通过报文过滤器。
代理服务器
代理防火墙相当于一个应用网关,能够在应用层中继两个连接之间的特定类型的流量,所有进出网络的应用程序报文都必须通过应用网关。当某客户进程向服务器发送一份请求报文时,先经过应用网关,应用网关在应用层打开该报文,查看该请求是否合法(可根据应用层用户标识 ID 或其他应用层信息来确定),如果请求合法,应用网关再以客户进程的身份将请求报文转发给原始服务器。如果不合法,报文则被丢弃。
代理防火墙最突出的优点就是安全,内部网络和外部网络之间没有直接连接,外部主机只跟代理防火墙建立连接,显著增加了网络的安全性。
虽然代理防火墙的安全性很高,但它是以缺乏灵活性和降低性能为代价的。在代理防火墙上,要使用任何新服务都必须专门设计一个相应的代理,每个应用都需要一个不同的应用网关。此外,在应用层转发和处理报文工作量大,处理负担比较重,处理速度受限。
状态检测防火墙

其工作方式类似于包过滤防火墙,只是采用了更为复杂的访问控制算法。状态检测防火墙是目前防火墙技术的主流,它的工作层次高于包过滤防火墙而低于代理防火墙。包过滤防火墙在遇到动态分配端口的协议时不好处理,只能开放所有可能端口,这种做法是有安全风险的,而状态检测防火墙可以完美解决这个问题,让我们来看看它是如何解决111的。
当数据包到达防火墙时,状态检测引擎会检测到一个主机(Host)发起的 TCP 连接初始SYN 包,然后它就会把这个数据包中的信息与防火墙规则库作对比,如果没有相应规则允许,防火墙就会拒绝这次连接。如果有规则允许,那么防火墙在状态表中新建一条会话(Session)记录本次交互,通常这条会话会包括此连接的源地址、源端口、目标地址、目标端口、连接时间等信息,对于 TCP 连接,它还会包含序列号和标志位等信息。
当服务器(Server)回应给主机的报文到达防火墙后,防火墙会把报文中的信息与会话中的信息进行比对,发现报文中的信息与会话中的信息相匹配,并且符合协议规范对后续包的定义,则认为这个报文属于主机访问服务器行为的后续回应报文,直接允许这个报文通过。这样不再去接受规则的检查,提高了处理效率,如果信息不匹配,数据包就会被丢弃或连接被拒绝。
状态检测防火墙将通信双方之间交互的属于同一连接的报文都作为整体的数据流来对待。同一个数据流内的报文不再是独立的个体,而是存在互相联系的。就上面动态分配端口的问题,比如 FTP 连接,由于状态检测引擎会检测到返回的数据包属于 FTP 连接的会话,所以它会动态打开端口允许返回包进入,传输完毕后又自动关闭这个端口,这样就避免了包过滤防火墙开放所有端口的危险做法。
总体来说,状态检测防火墙具有以下优点:
-
性能高效:状态检测防火墙会将数据流连接状态记录下来,同一条数据流的后续包无需再进行规则检查,极大地提高了报文处理效率。
-
安全性好:基于状态检测机制维护的状态表是动态的,可以有选择地、动态地开通端口,减少了端口的开放时间,使得安全性得到进一步提高。状态检测防火墙比一般的静态包过滤防火墙更加安全,由于工作在应用层以下的传输层,工作效率也明显优于应用检测防火墙,但同时对应用层的控制比较弱。
防火墙的功能
防火墙的功能包括基本功能、入侵防御、病毒防护、上网行为管理、负载均衡和远程接入等几个方面:
- 基本功能:路由交换、访问控制、NAT、攻击防范、双机热备、日志审计;
- 入侵防御:对应用层攻击进行检测并防御的安全检测技术;
- 病毒防护:通过对报文应用层信息进行检测来识别和处理病毒报文的安全机制;
- 上网行为管理:应用识别、内容过滤、基于应用特征的行为识别技术;
- 负载均衡:链路负载均衡、服务器负载均衡、智能 DNS;
- 远程接入:VPN 技术、高效的验证加密算法、多样的认证方式。
路由交换功能
防火墙作为网络设备支持路由交换的基础功能,包括:
- 路由功能
- IPv4 路由&IPv6 路由
- 静态路由
- 策略路由和路由策略
- RIP、OSPF、BGP、ISIS 等动态路由
- 以太网交换功能
- VLAN 技术
- 支持二层、三层以太网接口
- STP、LLDP
- 以太网链路聚合 除此之外也支持 SNMP、NTP、Web 管理等网络管理基础功能。
访问控制
防火墙不同于路由器交换机等网络设备,它最主要的功能是做访问控制,默认情况下防火墙不允许报文通过。防火墙通过策略(policy)和规则(rule)的配合对流经设备数据的报头标识进行识别,以允许合法数据流对特定资源的访问授权,从而控制非法用户使用资源或者合法用户对资源的非法使用。
防火墙实现访问控制的主要工作原理如下:
- 收到报文后,防火墙先获取报文头信息,包括 IP 层所承载的上层协议的协议号、报文的源地址、目的地址、源端口号和目的端口号。
- 将报头信息和用户设定的访问控制规则(由逻辑表达式构成)进行比较。
- 根据对照结果,按照访问控制规则里设定的动作,允许(permit)或拒绝(deny)报文的转发,以及是否记录审计日志。
- 如果没有规则对应,报文默认被拒绝。
网络地址转换

随着 Internet 的迅速发展和网络应用的不断推广,IPv4 地址枯竭成为制约网络发展的瓶颈。可用的 IPv4 地址大约为 40 亿个,考虑到地址分配中的浪费,以及 IPv4 地址在世界范围内分配的严重不均衡(发达国家占用了绝大部分地址资源),IPv4 地址短缺的现象日趋严重。
攻击防范
原因
随着网络技术的普及,网络攻击行为也越来越频繁。此外由于网络应用的多样性和复杂性,使得各种网络病毒泛滥,更加剧了网络被攻击的危险。
防火墙通过分析报文的内容特征和行为特征,判断报文是否具有攻击特性,能够检测拒绝服务型(Denial of Service,DoS)、分布式拒绝服务型(Distribute Denial of Service,DDoS)、扫描窥探型、畸形报文型等多种类型的攻击,并对攻击采取合理的防范措施以保护网络主机或者网络设备。
目前,Internet 上常见的网络安全威胁分为以下三大类:
- 畸形报文攻击:通过向目标系统发送有缺陷的 IP 报文,如分片重叠的 IP 报文、TCP标志位非法的报文,使得目标系统在处理这样的 IP 报文时崩溃,给目标系统带来损失。主要的畸形报文攻击有 Ping of Death、Teardrop 等。
- DoS/DDoS 攻击:使用大量的数据报文攻击目标系统,使目标系统无法接受正常用户的请求,或者使目标主机挂起不能正常工作。主要的 DoS/DDoS 攻击有 Smurf、Land、SYN Flood、UDP Flood 和 ICMP Flood 等。DoS/DDoS 攻击和其它类型的攻击不同之处在于,攻击者并不是去寻找进入目标网络的入口,而是通过扰乱目标网络的正常工作来阻止合法用户访问网络资源。
- 扫描攻击:利用 ping 扫描(包括 ICMP 和 TCP)标识网络上存在的活动主机,从而准确地定位潜在目标的位置;利用 TCP 和 UDP 端口扫描检测出目标操作系统和启用的服务类型。攻击者通过扫描攻击就能大致了解目标系统提供的服务种类和潜在的安全漏洞,为进一步侵入目标系统做准备。