防火墙

防火墙是一种安全设备,保护一个网络区域免受另一个网络区域的攻击和入侵,通常被部署在网络边界,例如:企业互联网出口。

简单讲防火墙作为网络中的设备,它的作用也是对网络起到安全保护的作用,对进出网络的流量进行安全管理,保证内网的安全性。

防火墙分类

按照硬件形态,防火墙可以分为盒式防火墙、框式防护墙。

按照软硬件区分:防火墙可以分为软件防火墙和硬件防火墙。软件防火墙又可分为个人防火墙和网关防火墙。

按照防火墙技术原理:防火墙可以分为包过滤防火墙、状态检测防火墙,AI 防火墙。

软件防火墙

个人防火墙

个人防火墙运行在 PC 上,用于监控 PC 和外网的通信信息。在 Windows 操作系统中集成了 Windows 防火墙。

杀毒软件产品厂家的个人防火墙一般包含在安全软件套件里。

个人防火墙产品的功能 说明
确认连接请求 向用户确认是否阻止特定的连接请求
安全日志 根据需要生成安全日志,记录 PC 正常连接与错误连接的信息。在做故障分析时,日志起到了很大的作用
反病毒功能 阻止 PC 接收病毒和蠕虫信息
反间谍功能 阻止 PC 接收间谍软件或程序的通信
个人信息保护功能 设置保护策略,防止个人信息被窃取、浏览恶意网站以及钓鱼诈骗等

网关防火墙

在网络中的网关上配置防火墙的功能,能对网络中的流量进行策略控制,这就是网关防火墙。

网关防火墙分为两种,一种是在 Windows、Linux 等操作系统上安装并运行防火墙软件的软件网关防火墙,另一种是使用专用设备的硬件网关防火墙。

个人防火墙主要监控 PC 的通信流量,网关防火墙是监控网络中所有终端的通信流量,在网关处进行策略控制。

区别 个人防火墙 网关防火墙
安装位置 用户的 PC 上 Windows或Linux等服务器上
网络中的位置 终端 网关
安装监控对象 流入终端的流量 经过网关的流量
加密通信 在终端上解密后检查 不能检查
压缩文件检查 解压后检查 对解压方式、解压基本有限制
口令文件检查 输入口令后解压检查 不能检查

硬件防火墙

通过硬件设备实现的防火墙叫做硬件防火墙,外形跟路由器相似,接口类型通常有千兆网口、万兆光口。

防火墙技术类型

防火墙在网络边界判断允许进行的通信和不允许的通信作为其判断依据的技术类型的演进:

  • 分组过滤型:没有防火墙设备时,可以由路由器实现。根据网络中的传输的 IP 分组头部和 TCP/IP 分组头部,获得源 IP 地址和端口号、目的 IP 地址和端口号,以这些信息作为过滤条件,决定是否转发这个分组。分组过滤会用到访问控制列表。
  • 应用网关型:不以分组为单位进行通信过滤,而是特定的应用程序会话。
  • 电路层网关型:在传输层进行连接中继,也就是第四层代理,通过 SOCKS 协议实现。内网终端连接外部网络时,终端与网关建立 TCP 连接,网关和外部服务器建立新的 TCP 连接。使用电路层网关,不用设置安全认证端口和 NAT,就可以让私有地址的内网终端访问外部网络。
  • 状态检测型:动态分组过滤的一种,通过检测 TCP 的连接状态阻挡来路不明的分组,简称 SPI。可以抵抗下面类型的攻击:伪装 IP 地址或端口,发送附带 TCP 的 RST 或 FIN 标志位的分组,随意终止正常通信的攻击;在允许通信的范围内发送附带 TCP 的 ACK 标志位的分组,从而入侵内部网络;在 FTP 通信时,无论是否建立控制连接,都会创建数据连接进而入侵内部网络
  • 新一代防火墙:根据上面的所有信息执行安全策略来进行防御,不仅根据端口号或协议号识别应用程序,还根据 IP 地址识别用户信息

代理服务器

代理服务器是应用网关防火墙的一种。假设客户端和 HTTP 服务器通信时,客户端发送请求报文时,代理服务器会替代客户端向 HTTP 服务器发送请求;HTTP 服务器回复响应报文时,代理服务器会代替 HTTP 服务器向客户端回复。对于客户端来说,代理服务器就是 HTTP 服务器。客户端和代理服务器、代理服务器和 HTTP 服务器分别建立两个会话。

从客户端收到的请求报文、从服务器收到响应报文,代理服务器都会在应用层进行检查,如果有异常就放弃通信或发送出错信息。

由于代理服务器是会话的起点,对互联网的服务器来说,是看不到客户端的 IP 地址。

报文过滤防火墙是以 IP 或 TCP/UDP 为对象,判断是否允许通信。而应用网关防火墙是以应用程序为对象,也就是将 FTP、HTTP、Telnet、DNS 等为对象进行判断。

防火墙的接口模式

防火墙有四种接口模式,分别是 L3 模式、L2 模式、L1 模式和 TAP 模式。

接口模式 说明
L3 模式 也叫做 NAT 模式,和路由器接口一样,是拥有 IP 地址的接口。使用路由选择、NAT 以及连接 IPSec VPN 或 SSL VPN 时,必须使用 L3 模式接口。接口可配置静态 IP 地址,也可通过 PPPoE、DHCP动态获取 IP 地址
L2 模式 也叫做透传模式或透明模式,和交换机一样,是进行交接的接口。进行 IP 地址分配时,需要使用 VLAN
L1 模式 也叫做虚拟线缆模式。把两个接口组成一组,流量在一个接口输入,在另一个接口输出。这种模式下无法进行路由和桥接
TAP 模式 与交换机镜像端口连接的模式。对交换机的数据帧进行检测。由于不是串联,无法阻止非法通信

L1 ~ L3 模式是将防火墙进行串连,TAP 模式是防火墙进行旁挂。

防火墙能防范的威胁

  • 窃听:通过窃听网络数据获取银行卡号、密码等重要信息
  • 篡改:将网站主页、邮件等通信内容恶意修改
  • 破坏:通过电脑病毒或DoS攻击等破坏系统的正常工作
  • 冒充:冒充他人发送邮件,对接收方进行钓鱼、诈骗等行为
  • 信息泄露:电脑或服务器上的重要信息或文档泄露
  • 攻击跳板:作为病毒部署或DoS攻击的跳板
  • 垃圾邮件:以营利为目的发送大量邮件

防火墙功能

防火墙常见的功能有:会话管理、报文结构解析、安全区域、安全策略、NAT、VPN、DoS 防御、报文攻击防御、内容扫描、监控和报告、报文抓包。

会话管理

会话是两个终端系统之间的逻辑连接,从开始到结束的通信过程。

在 TCP 中,客户端和服务器通信,使用 3 次握手建立 1 个 TCP 连接,客户端发送请求( request ),服务器进行回应( response ),直至结束的过程就是进行了 1 个会话通信。

在 UDP 中,客户端和服务器的源端口和目的端口一致,之后的一系列通信都叫做会话。

在 ICMP 中,Echo request 和对应的 Echo reply 组成 1 个会话。

数据流是一组有序,有起点和终点的数据序列。一个会话有两个数据流( flow ):一个是 “ 客户端到服务器 ”( client to server ),另一个是 “ 服务器到客户端 ”( server to client )。

TCP 连接管理

在数据通信前,客户端发送一个 SYN 包作为建立连接的请求。如果服务器发来回应,则认为可以开始数据通信。如果未收到服务器的回应,就不会进行数据通信。在通信结束时,会使用 FIN 包进行断开连接的处理。

SYN 包和 FIN 包是通过 TCP 头部的控制字段来管理 TCP 连接。一个连接的建立与断开,正常过程至少需要来回发送 7 个包才能完成。建立一个 TCP 连接需要发送 3 个包,这个过程叫作三次握手。断开一个 TCP 连接需要发送 4 个包,这个过程也称作四次挥手。创建一个 TCP 连接,会产生一个 32 位随机序列号,因为每一个新的连接使用一个新的随机序列号。

  • SYN 检查
    TCP 会话开始时,客户端会发送一个 SYN 消息。如果没有会话信息,或尚未建立会话,即非 SYN 消息的 TCP 数据段到达防火墙,防火墙会当做非法消息而丢弃。
  • ACK 检查
    通过对 SYN-ACK 的 ACK 消息检查,确认进行中的 3 次握手是否是非法尝试,防范 SYN Flood 攻击。
  • 重复数据段检查
    防火墙收到重复数据段,也就是序列号相同的 TCP 数据段,可以选择接收或者丢弃。
  • 窗口检查
    防火墙可以检测 TCP 头部的序列号和滑动窗口大小,拦截超过滑动窗口容量数据的序列号。
  • 数据段重组
    防火墙可以验证 TCP 数据段序列号是否完整。

会话建立的处理

  1. 防火墙收到报文后,首先检查会话表,确认是否有相同的会话。如果有相同会话,那么会禁止会话建立,确保会话都是唯一的。
  2. 如果是不同会话,那么检查报文,通常是查看路由表或 MAC 地址表来确定转发路径。如果可以转发,就确定对应的转发出接口和目的网段。如果不能转发,就丢弃这个数据。
  3. 报文检查目的地址是否需要进行 NAT。如果需要,就先完成 NAT,然后转发到相应出接口和目的网段。
  4. 对报文和目的信息进行安全策略检查,源信息是源接口、源区域和源地址,目的信息是目的接口、目的区域和目的地址。如果有匹配的安全策略,就根据策略进行处理,允许通信就进行转发,拒绝通信就进行丢弃。如果没有匹配的安全策略,就根据默认拒绝的策略丢弃数据。
  5. 当报文被允许通信时,防火墙的会话表中就会生成相应的会话信息。

会话的生存时间

自动生成的会话表信息,是有一定的生存时间。会话建立后,一段时间内一直没有进行通信,防火墙会删除生存时间到期的会话表项。如果长期保留会话表项,这些会话信息可能会被恶意攻击。同时,会话表是会占用防火墙资源,防火墙的会话表项的数量也是有限的,长期保留闲置的会话,会影响新会话的生成。

会话时间可以根据协议的不同,分别进行设置。

TCP 的话,会话的超时时间通常是 30 分钟到 1 小时,UDP 是 30 秒。比如,Telnet 连接在防火墙上建立会话后,如果在 1 个小时内没有任何数据通信,防火墙会自动删除这个会话表项。客户端无法再次使用这个 Telnet 会话了。

会话终止处理

客户端完成数据传输后,发送 FIN 消息,即使用 FIN 标志位的 TCP 数据段。

服务器收到 FIN 消息后,在回复消息中,使用 FIN 和 ACK 标志位,并将 ACK 编号设置为“接收的 Seq 编号 + 1 ” 。

客户端相同处理方式,在回复消息中,使用 ACK 标志位,并将 ACK 编号设置为“接收的 Seq 编号 + 1 ” 。

如果客户端或服务器在连接过程发生故障,只有一方是侦听状态,这叫做半侦听或半关闭。如果通信恢复,接收到故障前的数据段,那么会回复 RST 消息,强制终止 TCP 连接。

当防火墙收到 FIN 或 RST 消息时,会启动一个 30 秒的定时器。即使 FIN → FIN-ACK → ACK 的终止过程没完成,防火墙也会强制删除会话表项。

UDP 数据流的管理

UDP 不需要像 TCP 一样 3 次握手,客户端和服务器直接使用应用程序的 UDP 数据进行交互。

UDP 数据流是指源 IP 地址、源端口号、目的 IP 地址和目的端口号这 4 个参数都相同的一系列 UDP 数据。

DNS 和 SNMP 这类应用程序,只需要 1 个 UDP 数据,就能构成 1 个数据流。

音频和视频使用的 RTP,就需要多个 UDP 数据,来构成 1 个数据流。

管理 ICMP 和 IP 数据流

像 ICMP 这类没有端口号的协议,是直接根据 IP 头部的协议号来生成会话。

防火墙通过识别 ICMP 不同的请求消息和对应的响应消息,来判断这些消息序列是否属于同一个会话。

会话同步

通常两台防火墙会使用主备方式的冗余结构,对主防火墙和备防火墙的会话信息进行同步。主防火墙负责建立用户通信的会话,并把会话信息记录到会话表中,同时将信息转发到备防火墙。

会话管理有什么防御功能?

防火墙可以通过限制会话数量,能够防范 DoS 攻击,还能控制防火墙的负载,提高防火墙的性能。

防火墙可以以 TCP SYN 、UDP 、ICMP 等协议为单位,通过指定源与目的的组合方式,来限制这类会话的数目。

分组结构解析

为了防止非法报文的流入和流出,防火墙会对报文的头部和数据进行解析。常见的有:IP 头部解析、TCP 头部解析、UDP 头部解析。

IP 头部解析

数据帧和 IPv4 头部的解析内容如下:

以太网类型与 IP 版本:以太网数据帧头部的类型字段为 0x0800 时表示 IPv4 ,同时 IPv4 头部的版本也是 4 。类型字段为 0x86DD 时表示 IPv6 ,IP 头部的版本也是 6 。

IP 头部:确认数据是否完整,并检查报文长度与实际长度是否一致。

IP 协议号、TTL :检查字段值,如果值为 0 就丢弃报文。

源地址、目的地址:确认是否存在 LAND attack 。

数据总长度:确认是否存在 ping of death 攻击。

标志位、分片偏移:丢弃无法进行分片的报文。

可选项:丢弃无用可选项的报文。

TCP 头部解析

TCP 头部的解析内容如下:

TCP 头部:确认各个字段是否完整、是否有被中途截断。

数据偏移:确认数据偏移字段的值是否是 5 以下,TCP 头部长度最小是 5 字符 = 20 字节。

校验和:确认校验和是否错误。

端口号:确认源端口号和目的端口号是否为 0 。

控制位:检查 SYN 、ACK 等字段是否存在组合不正确的情况。

UDP 头部解析

UDP 头部的解析内容如下:

UDP 头部:确认各个字段是否完整、是否有被中途截断。

校验和:确认校验和是否错误。

安全区域

防火墙有安全区域的概念。防火墙的物理接口和逻辑接口会分配到不同的区域中,也就是将防火墙的网段分别划分到不同的区域中。一个网络接口只能属于一个区域。

在同一个区域内,可以自由进行通信,但是跨区域通信,必须符合安全策略才行。当然,防火墙也可以设置安全策略,根据源或目的地址等条件,判断在同一区域内能否允许通信。

一个安全区域可以说就是若干个接口的集合,一个安全区域里面的接口具有相同的安全属性。

如下图所示:防火墙把不同的接口分成3个安全区域,出口区为untrust区域,内网区分为trust区和DMZ区。

默认安全区域

防火墙划分了 4 个默认的安全区域:

安全区域 说明 优先级
受信区域(trust 通常将内网终端用户所在区域划分为trust区域 85
非受信区域(untrust 通常将Internet等不安全的网络划分为untrust区域 5
非军事化区域(dmz 通常将内网服务器所在区域划分为DMZ区域 50
本地区域(local 设备本身,包括设备的各接口本身 100

默认的安全区域不能够删除,每个安全区域都设置了固定的优先级。优先级值越大,表示优先级越高。

除了这四个域之外,用户也可以根据自己的需求创建自定义域。自定义的域的优先级是可以自己调节的。

安全策略

防火墙的主要功能是访问控制,也就是判断特定源和特定目的之间是否允许进行特定的通信。访问控制是通过规则来实现,每一条规则都指定了源、目的和通信内容等信息。这些访问控制规则的集合,在路由器中,叫做访问控制列表,而在防火墙中,叫做安全策略或安全规则。

什么是安全策略

安全策略是防火墙中对流量转发、以及对流量中的内容进行安全一体化检测的策略。

当防火墙收到流量后,会对流量的属性(包括五元组、用户、时间段等)进行识别,从而和安全策略进行匹配,如果能够匹配上,则执行相应的动作。

如上图所示:PC 访问internet,匹配到防火墙安全策略,动作为permit,因此流量可以通过防火墙。如果动作为deny,则流量不能够通过防火墙。

防火墙的安全策略

防火墙的安全策略以区域作为对象,还可以以应用程序名称和用户名称等信息作为对象。

举个栗子:在上图的安全策略中,192.168.2.1从信任区域向不信任区域的 80 端口通信时,防火墙首先执行第 1 条安全策略,发现源地址不匹配,不执行Allow。接着执行第 2 条安全策略,发现地址和端口匹配,执行Deny,也就是拒绝通信。防火墙的安全策略从上往下依次执行的行为,也叫做安全策略查找(policy lookup)。

Any表示任何值都与策略匹配。如果是安全策略中,出现未定义的通信,比如从信任区到 DMZ 区域的通信,防火墙默认执行拒绝,这个策略叫做 “ 默认拒绝 ”(implicit deny)。

如果需要在防火墙没有匹配的情况下,执行Allow,可以在安全策略的最后一行设置对象为Any,行为为Allow的策略。

当然,防火墙的安全策略是会有上限,上限由产品规格决定。而且当表项越多时,设备性能也会随之下降。

安全策略组成

安全策略由匹配条件、动作、安全配置文件组成。

  1. 匹配条件:
    匹配条件包括五元组(源地址、目的地址、源端口、目的端口、协议)、VLAN、源安全区域、目的安全区域、用户、时间段等。
  2. 动作:动作包括允许和禁止。 如果动作为“允许”:
  • 如果没有配置内容安全检测,则允许流量通过。
  • 如果配置内容安全检测,最终根据内容安全检测的结论来判断是否对流量进行放行。
    禁止:表示拒绝符合条件的流量通过。
  • 如果动作为“禁止”,防火墙不仅可以将报文丢弃;
  • 还可以针对不同的报文类型选择发送对应的反馈报文。发起连接请求的客户端/服务器收到防火墙发送的阻断报文后,可以快速结束会话并让用户感知到请求被阻断。
  1. 安全配置文件:内容安全检测包括反病毒、入侵防御等,它是通过在安全策略中引用安全配置文件实现的。
  • 如果其中一个安全配置文件阻断该流量,则防火墙阻断该流量。
  • 如果所有的安全配置文件都允许该流量转发,则防火墙允许该流量转发。

安全策略匹配过程

防火墙的安全策略一般配置很多条,如果都可以匹配应该优先匹配哪一条呢?

安全策略的匹配按照策略列表顺序执行,从上往下逐条匹配,如果匹配了某条策略,将不再往下匹配。

因此,配置安全策略的顺序很重要,需要优先配置精确的安全策略,然后再配置粗略的安全策略。

系统默认存在一条缺省安全策略default

缺省安全策略位于策略列表的最底部,优先级最低,所有匹配条件均为any,动作默认为禁止。如果所有配置的策略都未匹配,则将匹配缺省安全策略default

会话表

会话表用来记录 TCP、UDP、ICMP 等协议连接状态的表项,是防火墙转发报文的重要依据;

那么什么是基于连接状态转发报文呢?防火墙基于“状态”转发报文:

  1. 只对首包或者少量报文进行检测然后确认一个连接状态;(会话表)
  2. 后续大量的报文根据连接状态进行控制;

会话表就记录了大量的连接状态;这种机制大大的提升了防火墙的检测和转发效率。

如上图所示:客户端 PC1 访问服务器 PC2,PC1 向 PC2 发起 HTTP 连接;

  1. PC1发送报文;
  2. 首包达到防火墙,创建会话表项(如下);防火墙会话表中标示出http协议和连接信息,并识别出此流量在公共路由表中被转发;
    1
    http VPN: public->public 192.168.1.254:10000->10.10.1.254:80
  3. 防火墙放行报文;
  4. PC2 回复报文;
  5. 回复报文匹配防火墙会话;
  6. 防火墙转发报文;

会话表的创建

防火墙在开启状态检测情况下,只有首包会创建会话表项,后续报文匹配会话表即可转发。

会话表老化时间

对于一个已经建立的会话表表项,只有当它不断被报文匹配才有存在的必要。如果长时间没有报文匹配,则说明可能通信双方已经断开了连接,不再需要该条会话表项了。

为了节约系统资源,系统会在一条表项连续未被匹配一段时间后,将其删除,即会话表项已经老化。

长连接

对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。

例如:

  • 用户通过 FTP 下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文。
  • 用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于 TCP 的会话老化时间。

如果只靠延长这些业务所属协议的老化时间来解决这个问题,会导致一些同样属于这个协议,但是其实并不需要这么长的老化时间的会话长时间不能得到老化。

这会导致系统资源被大量占用,性能下降,甚至无法再为其他业务建立会话。所以必须缩小延长老化时间的流量范围。

长连接功能可以解决这一问题。长连接功能可以为这些特殊流量设定超长的老化时间。

Server-map

为什么会出现server-map表?

由于会话表对哪些报文属于同一条流量的标准过于严格,会导致一些特殊协议不能正确匹配会话表。

Server-map表可以解决这一问题。

例如使用 FTP 协议的port方式传输文件时:

  • 既需要客户端主动向服务器端发起控制连接;
  • 又需要服务器端主动向客户端发起服务器数据连接;

如果设备上配置的安全策略为允许单方向上报文主动通过,则 FTP 文件传输不能成功。

server-map表原理

通常情况下,如果在设备上配置严格的安全策略,那么设备将只允许内网用户单方向主动访问外网。

为了解决这一类问题,防火墙引入了Server-map表,Server-map用于存放一种映射关系。

  • 这种映射关系可以是控制数据协商出来的数据连接关系;
  • 也可以是配置 NAT 中的地址映射关系;

使得外部网络能透过设备主动访问内部网络。

生成Server-map表之后,如果一个数据连接匹配了Server-map表项,那么就能够被设备正常转发,并在匹配Server-map表后创建会话,保证后续报文能够按照会话表转发。

server-map表报文转发过程

防火墙收到报文后,如果没有命中会话表,防火墙则进入首包处理流程,查询是否命中server-map表。

  • 如果命中,则生成会话表,转发报文;
  • 如果没有命中,则执行其他包处理流程。

防火墙应用场景

1、企业边界防护

如下图所示,企业内网业务部署在trust区,服务器部署在 DMZ。

  • 企业内网访问internet时经过防火墙,防火墙控制内外网流量,进行安全控制;
  • 外网用户访问服务器时经过防火墙,对内网服务器进行保护;

2、内网安全隔离

如下图所示:公司分为市场部、生产部,财经部,研发部,不同部分之间互访经过防火墙。通过防火墙进行安全控制。

3、数据中心边界防护

数据中心网络访问internet时,需要经过防火墙进行安全控制,对内网业务进行安全保护。

打赏
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信