53 张图详解防火墙的 55 个知识点

1、什么是防火墙?

防火墙( Firewall )是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。

后来这个词语引入到了网络中,把从外向内的网络入侵行为看做是火灾,防止这种入侵的策略叫做防火墙。后来,防火墙不但用于防范外网,例如:对企业内网的 DoS 攻击或非法访问等,也开始防范从内部网络向互联网泄露信息、把内部网络作为攻击跳板等行为。

硬件防火墙可以实现 CIA机密性( Confidentiality )、完整性( Integrity )、可用性( Availability )这三种类型的对应策略。小企业会在局域网和互联网的边界部署防火墙。

防火墙可分为软件防火墙硬件防火墙。软件防火墙又可分为个人防火墙网关防火墙

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

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

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

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

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

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

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

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

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

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

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

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

防火墙能够防范的威胁如下:

  • 窃听:通过窃听网络数据获取银行卡号、密码等重要信息

  • 篡改:将网站主页、邮件等通信内容恶意修改

  • 破坏:通过电脑病毒或DoS攻击等破坏系统的正常工作

  • 冒充:冒充他人发送邮件,对接收方进行钓鱼、诈骗等行为

  • 信息泄露:电脑或服务器上的重要信息或文档泄露

  • 攻击跳板:作为病毒部署或DoS攻击的跳板

  • 垃圾邮件:以营利为目的发送大量邮件

  • 黑客( hacker ):是指精通计算机技术的人,并非特指网络攻击者。

  • 破解者( cracker ):对网络进行非法访问、窃听信息、篡改等行为的人。

  • 攻击者( attacker ):使用 DoS 等攻击系统,以造成系统宕机为目的的人。

  • 妨碍者:发送大量垃圾邮件、在论坛粘贴大量广告、发布大量无意义信息的人。

  • 普通用户:尽管不会主动攻击,但在病毒、蠕虫等感染电脑后,成为威胁网络安全的对象。

  • 僵尸( bot ):作为攻击跳板的终端,被植入具有攻击程序的病毒,遭受感染的终端叫做僵尸,由大量僵尸程序组成的网络叫做僵尸网络。

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

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

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

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

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

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

在数据通信前,客户端发送一个 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 数据段序列号是否完整。

a.防火墙收到报文后,首先检查会话表,确认是否有相同的会话。如果有相同会话,那么会禁止会话建立,确保会话都是唯一的。

b.如果是不同会话,那么检查报文,通常是查看路由表或 MAC 地址表来确定转发路径。如果可以转发,就确定对应的转发出接口和目的网段。如果不能转发,就丢弃这个数据。

c.报文检查目的地址是否需要进行 NAT 。如果需要,就先完成 NAT ,然后转发到相应出接口和目的网段。

d.对报文和目的信息进行安全策略检查,源信息是源接口、源区域和源地址,目的信息是目的接口、目的区域和目的地址。如果有匹配的安全策略,就根据策略进行处理,允许通信就进行转发,拒绝通信就进行丢弃。如果没有匹配的安全策略,就根据默认拒绝的策略丢弃数据。

e.当报文被允许通信时,防火墙的会话表中就会生成相应的会话信息。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TCP 头部的解析内容如下:

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

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

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

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

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

UDP 头部的解析内容如下:

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

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

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

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

信任区域( Trust Zone ),也叫做内部区域,所属接口是 G1/1 、tunnel1 、Loopback1 ,是指公司内部网络区域,表示可以信赖的区域。通常区域内是可以自由通信。

不信任区域( Untrust Zone ),也叫做外部区域,所属接口是 G1/2 ,是指公司外部网络区域,比如互联网。与信任区域相对,是不可信任的区域,通常只会拦截通信,不允许所有通信。也可以设置安全策略,允许从信任区域到不信任区域的通信。

DMZ 区域( DeMilitarized Zone ),所属接口是 G1/4 ,是对外公开的服务器使用的区域,与信任区域是分开的。

为了防止攻击,从外部网络访问内部网络的通信会被防火墙拦截,但是内部网络中有对外公开的服务器,比如 Web 服务器,对于 Web 请求就不能一刀切的拦截。但如果把服务器放在内部网络中,一旦从外部网络恶意入侵,就会导致内网的重要数据泄露。因此,我们把需要对外公开的服务器放在 DMZ 中,这样即使服务器遭到入侵,DMZ 区域也无法直接访问内部网络。

自定义区域( Custom Zone),这里说的是上图 Sales Zone ,所属接口是 G1/3 ,只有销售部门员工才能访问的区域,是人为划分和定义的自定义区域。当然,也能根据具体内容、安全策略描述和管理目的自定义其它区域。

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

通常一个规则是由多条访问控制列表组成,一条访问控制列表也叫做一个表项。一个表项由对象( object )、行为( action )、选型( option )这 3 个元素组成。

举个栗子:思科标准访问控制列表,表项只允许源 IP 地址作为对象,而行为是在允许( permit )和拒绝( deny )之间二选一。当满足条件时,也就是触发对象时,选项可以指定 “ 记录日志 ” 或 “ 表项有效时间 ” 等操作。如果使用了有效时间选项,就可以设置一个只有公司上班时间为对象的表项。

扩展访问控制列表,对象就不仅仅是 IP 地址,还可以是 IP 协议号、源 IP 地址、目的 IP 地址、ToS 数据域、ICMP 类型、ICMP 消息、源 TCP/UDP 端口号、目的 TCP/UDP 端口号、TCP 会话是否已经建立等。

举个栗子:允许 IP地址是 10.1.1.2 的客户端向 IP 地址是 172.16.1.1 的服务器进行 Telnet 连接,Telnet 的 TCP 端口是 23 ,访问控制列表如下:

access-list 101 permit tcp host 10.1.1.2 host 172.16.1.1 eq telnet

对比路由器的访问控制列表,防火墙的安全策略最大的不同点是对象,防火墙以区域作为对象,还可以以应用程序名称和用户名称等信息作为对象。

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

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

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

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

防火墙不仅能够基于区域、IP 地址、端口号、应用程序等设置安全策略,还可以使用内容安全策略进行通信控制。内容安全策略包括反病毒IPS(入侵防御系统)、URL 过滤DLP(数据泄露防护)等基于内容的安全机制,能够拦截非法通信和避免不必要的通信流量。还可以对这些通信不进行拦截,而是记录到告警日志中后放行。

安全设备的默认设置是拦截严重程度高的攻击,严重程度低的攻击只记录到告警日志中。当然,严重程度的高低可以自定义,也可以修改设置为拦截严重程度低的攻击。

反病毒和 IPS 可能会出现误判,误判分为假阳性错误假阴性错误两种。

假阳性错误是没有攻击行为或病毒入侵,但是被判定为攻击行为或病毒入侵,并记录到日志中,或把通信拦截。这类错误,用户容易察觉。

假阴性错误是存在攻击行为,却判定没有攻击行为,而允许通信,也没有记录到日志中,无法察觉到严重后果。只有 PC 上安装反病毒软件或防火墙软件,才能找到没有被识别的攻击行为。这种错误一般是由于数字签名本身不存在,或误认为数字签名存在而导致的检测失败。

私有 IP 地址只能在内部网络通信,如果要访问外部网络(互联网),可以通过路由器或防火墙把私有 IP 地址转换为公网 IP 地址,这个过程叫做 NAT( Network Address Translator )。

NAT 以前是路由器的功能,后来位于网络边界的防火墙也常常使用这个功能。路由器和防火墙等运行 NAT 功能后,也叫做网关( gateway )。

静态 NAT( Static NAT )是指 NAT 转换前的地址和 NAT 转换后的地址是一对一的对应关系,通常是一个私网地址对应一个公网地址,手动将对应信息配置到网关中。

动态 NAT( Dynamic NAT )是在网关配置一个 IP 地址池( IP address pool ),地址池里面包含多个 IP 地址。在 NAT 建立会话时,在地址池内的 IP 地址按顺序分配一个转换后的 IP 地址。由于地址范围能够手动进行设置和更改,因此这种方式应用的比较多。

虽然和静态 NAT 有点类似,私有地址和公网地址是一对一的映射关系,但不是指定的 NAT 转换后地址,而是动态分配的、在 IP 地址池中排序靠前的有效地址。

源 NAT( Source NAT )是对发送方的源 IP 地址进行 NAT 转换。在公司内部网络的客户端,要访问互联网的服务器,客户端的私有地址作为发送源,把数据发送到网关时,必须将私有 IP 地址转换成公网 IP 地址才行。

要和互联网上的服务器进行通信,必须使用公网 IP 地址,但是 IPv4 地址有限,无法为每台客户端都分配一个公网地址。大部分情况下,源 NAT 能够通过动态 NAT 方式节约公网地址资源。在网关上设置地址池,或在网关的接口使用 NAPT ,可以实现私有网络访问互联网的功能。

外部网络只能看到公网地址信息,源 NAT 能够隐藏客户端实际使用的 IP 地址,从而降低受到外部网络攻击的风险。

目的 NAT( Destination NAT )是接收到的目的 IP 地址进行 NAT 转换。

互联网的客户端,想要通过网关访问内部网络的服务器时,由于公司内部服务器使用内网地址,无法直接从互联网访问到,需要进行目的 NAT 。网关作为内部服务器的代理,把服务器的内网地址映射到公网地址,收到外网客户端访问公网地址时,网关将报文的目的地址转换为内部服务器的私有地址,完成路由和访问。公司内的服务器通常放置在 DMZ 区域中,能够对外部网络屏蔽内部服务器的地址,从而避免内部网络受到攻击。

当有大量的内网客户端要跟外网通信,而公网地址只有一个或者少量时,网关无法完成私有地址和公网地址的一对一的分配。

这时,网关需要结合 TCP 或 UDP 端口号,完成多个私有地址映射成一个公网地址的转换,这种转换方式叫做 NAPT( Network Address Port Translation ,网络地址端口转换)。

VPN ,全称是 Virtual Private Network ,也就是虚拟私有网络。VPN 是使用电信运营商提供的公共网络,搭建内部网络的技术。

内部网络的财务、人事等数据,对外而言是属于机密信息,必须在内部封闭的传输数据。如果只有一个办公场所,可以通过 LAN 搭建内网。但如果北京和上海都有分支机构时,就需要在不同的办公场所之间搭建内网。电信运营商有专线服务,可以完成不同地域的内网搭建。专线是单独使用的线路,不用担心数据被窃听,通信质量也能得到保证,但是专线费用昂贵。

还有 ADSL 这种互联网接入服务,虽然属于共享类型网络,但是价格低廉,搭建内网有成本优势。路由器、防火墙、VPN 设备都支持 IPsec-VPN 功能,在各个分支机构内,使用这些设备建立 IPsec 隧道,完成 VPN 的搭建。

常见的 VPN 网络拓扑有点对点 VPN 、中心型 VPN 、远程接入 VPN 。

  • 点对点 VPN

点对点 VPN( site-to-site VPN )是通过 IPsec 隧道连接两个网络的拓扑结构。网络的网关,通常是路由器或防火墙等网络设备,在两个网络间,使用点对点的拓扑结构,建立 IPsec 隧道。

这里的网络,是指不在同一个局域网的网络,比如:成都机构或广州总部的任意一个站点。因为是站点( site )之间的连接,所以叫做点对点 VPN 。

  • 中心型 VPN

中心型 VPN( hub and spoke VPN )是星型拓扑结构,也就是一个中心站点的设备,连接多个远程站点的设备,形成的网络结构。中心站点( center site )位于总部的网络,也就是数据中心,成为整个结构的核心站点。一般是电信供应商提供的 VPN 业务,以电信供应商的基础设施为中心站点,通过 VPN 连接其它站点。

  • 远程接入 VPN

在家里,或出差在外时,通过互联网使用 PC 上的软件,与公司的 VPN 设备建立 IPsec 隧道,能够访问公司内部网络的拓扑结构,叫做远程接入 VPN 。

远程接入的 IPsec-VPN 需要在 PC 上安装 VPN 客户端软件,而 SSL-VPN 是通过 Web 浏览器,使用 SSL 连接到公司的 VPN ,通过 SSL( HTTPS )和公司的内部网络进行连接。

SA( Security Association ):IPsec 通信时建立的逻辑连接。

ESP( Encapsulating Security ):原始报文使用 DES/3DES/AES 中的任意一种算法进行加密,通过 HMAC 确定数据是否被篡改,使用的 IP 协议号是 50 。

AH( Authentication Header ):根据 HMAC 信息确定报文是否被篡改的认证协议。不对报文加班,使用的 IP 协议号是 51 。

IKE( Internet Key Exchange ):IPsec 协议用来交换 key 信息的协议,也叫做 ISAKMP/Oakley 。在 ISAKMP 协议上实现 Oakley 的 key 交换过程。使用的是 UDP 端口号 500 。分为阶段一和阶段二进行处理。

HMAC( Keyed-Hashing for Message Authentication code ):用来验证信息是否被篡改的一种 MAC ,也就是消息认证码,通过散列函数与密钥信息的组合计算得出,其中散列函数使用的算法一般是 MD5 或 SHA-1 。

SPI( Security Pointer Index ):表示 SA 的编号,32 比特。在对报文加密时,用这个值表示使用了什么加密算法和密钥信息。

NAT traversal :通过 ESP 加密的报文,由于没有 TCP/UDP 头部,因此无法使用 NAPT 。可以使用 NAT traversal 技术,给 ESP 加密后的报文添加 UDP 头部,从而在 NAPT 环境下进行 IPsec 通信。一般使用 500 或 4500 的端口号。

IPsec-VPN 连接:在建立 IPsec 隧道时,发起协商的叫做发起方( initiator ),另一方叫做应答方( responder )。发送方是最先发出通过 IPsec 隧道报文的设备。

更新 key( rekey ) :IPsec 隧道建立后,每过一段时间,或经过一定量的数据,就会进行 rekey 操作。VPN 设备有修改 rekey 时间的功能。

举个栗子:网络 A 与网络 B 通过 IPsec 隧道连接时,网络 A 的 PC1 想和网络 B 的 PC2 进行通信。

PC1 发送请求,到达网络 A 的网关,也就是 VPN 设备 A ,这时的报文还未加密,是明文状态。VPN 设备 A 对报文进行加密,并添加 ESP 头部和在隧道中使用的 IP 头部(叫做外层 IP 地址),再通过 IPsec 隧道发送出去。

网络 B 的 VPN 设备 B 通过 IPsec 隧道收到加密的报文,会检查 ESP 头部和 AH 头部。如果 ESP 序列号不正确,VPN 设备 B 就会认为是重放攻击,并输出错误信息,SPI 值不正确,会输出 “ Bad SPI ” 的错误通知信息。

如果加密报文正常,就进行解密操作,去除外部 IP 、ESP 、AH 等头部,并对原来 IP 头部的目的地址进行路由,从而到达 PC2 。

PC2 向 PC1 回复消息时,由 VPN 设备 B 进行加密处理,由 VPN 设备 A 进行解密处理。

中心型 VPN 的远程站点客户端和中央站点服务器的 VPN 通信也是这种处理流程。

举个栗子:远程站点 A 、远程站点 B 和中央站点 VPN 设备 C 。A 的 PC1 和 B 的 PC2 进行通信。

报文通过 VPN 设备 A 和 VPN 设备 C 的 IPsec 隧道,再经过 VPN 设备 C 和 VPN 设备 B 的 IPsec 隧道,最终到达 PC2 。

如果中央站点是路由器或 VPN 设备,一般只会解密、加密和路由选择处理。如果中央站点是防火墙,就会在报文解密后进行检查,只对安全的报文进行加密,然后再向远程站点发送。

路由器和 VPN 设备通常使用基于策略的 VPN 。基于策略的 VPN 是指根据策略(访问控制列表)控制经过 IPsec 隧道的流量,这样即使路径发生变化,也不会对 IPsec 通信造成影响。

基于策略的 VPN 需要设置 IPsec 策略和 proxyID 信息。proxyID 指定 IPsec 隧道传输报文的本地网络和远程网络。

举个栗子:站点 A 和站点 B 使用点对点 VPN 组成网络,其中站点 A 网络是 192.168.1.0/24 和 192.168.2.0/24 ,站点 B 网络是 192.168.3.0/24 和 192.168.4.0/24 。如果只有 192.168.1.0/24 和 192.168.3.0/24 进行加密通信,那么在站点 A 的 VPN 设备设置本地 proxyID 为 192.168.1.0/24 ,远程 proxyID 为 192.168.3.0/24 。在站点 B 的 VPN 设备设置本地 proxyID 为 192.168.3.0/24 ,远程 proxyID 为 192.168.1.0/24 。

基于路由的 VPN 通常是防火墙产品使用的 VPN 类型。防火墙会对 IPsec 报文进行精确的控制。

在基于路由的 VPN 中,IPsec 隧道是使用的虚拟接口,又叫做隧道接口( tunnel interface ),流量通过这个接口进入 IPsec 隧道。如果有流量需要在 IPsec 隧道内传输,可以设置路由选择,转发到隧道接口就行。

基于策略的 VPN 使用策略来控制 IPsec 通信的流量,而基于路由的 VPN 通过隧道接口的路由信息来控制 IPsec 通信的流量。所以在进行 IPsec 通信时,可以和处理普通报文一样,通过策略定义报文过滤和防火墙处理等。

在 IPsec 通信中,为了建立加密隧道的 SA ,需要在设备之间使用 IKE 协议完成密钥的交换。

为了提高安全性,IKE 协议分为阶段 1阶段 2 两个部分。IKE 阶段 1 是完成鉴别和保护 SA 通信的双方,同时生成阶段 2 需要的公有密钥,建立 IKE SA 等工作。

IKE 阶段 2 负责生成 IPsec 通信使用的密钥,并建立 IPsec SA 。

SSL-VPN 是通过浏览器使用 HTTPS( HTTP over SSL )进行 Web 访问的远程接入 VPN 。

如果要使用 IPsec-VPN ,需要在 PC 上安装专用的客户端软件。这个客户端软件不一定支持 Mac OS 、手机等操作系统。同时 IPsec-VPN 连接过程,可能会因为防火墙过滤了 IPsec-VPN 的协议号或 NAT traversal 的端口号,而导致连接失败。

SSL-VPN 就方便很多,只要设备带有浏览器,就能够通过反向代理的方式完成 VPN 的连接。而且防火墙几乎不会拦截,因为使用的是 HTTPS 的 443 端口,让 VPN 远程连接摆脱了操作系统和连接方式的限制。

IPsec-VPN 是在网络层实现的,能够完成传输层 TCP 和 UDP 的加密和隧道传输处理。而 SSL-VPN 是在会话层实现的,基于 TCP 的 443 端口运行。只有特定的几种 TCP 能够使用反向代理和端口转发方式,而 ICMP 和 UDP 等传输层通信,只能选择隧道方式。

反向代理,又叫做无客户端 SSL-VPN 。SSL-VPN 的终端在 443 端口号上,通过 HTTPS 完成解密工作后,转换为 80 端口号的 HTTP 通信,与内部网络上的 Web 服务器进行交互。这种方式只有使用 80 端口号、通过浏览器访问 Web 的应用程序才能使用。

在内部客户端访问互联网时,进行中继的代理服务器,叫做转发代理服务器。如果访问方向相反,也就是在互联网上的客户端访问内部网络服务器时,进行中继的代理服务器叫做反向代理服务器( reverse proxy )。

端口转发,又叫做瘦客户端 SSL-VPN 。使用 ActiveX 或 Java applet 等浏览器插件来创建 PC 和服务器的 SSL 隧道。用户只要登录 Web 门户( SSL-VPN 网关),并完成认证,就能够下载相关插件。用户能够使用公司内网服务器上的特定应用程序,也能够使用端口固定且无需浏览器支持的 TCP 应用程序,比如 E-mail 。有些产品还能够支持端口号变动的应用和 UDP 应用程序等。

隧道方式是使用 SSL-VPN 客户端软件的方式。和 IPsec-VPN 一样,支持网络层以上协议的隧道传输。

用户通过浏览器访问 SSL-VPN 设备,并完成认证,就可以下载应用程序,并安装在用户的 PC 上。接下来就是通过客户端软件建立 PC 和 SSL-VPN 设备的隧道。由于使用了客户端软件,还是会不可避免的受到操作系统的限制。

支持主机检查( Host Checker )功能的 SSL-VPN ,在客户端与 SSL-VPN 设备连接时,能够对连接的客户端主机进行检查,检查信息如下图。

如果主机检查结果 OK ,就允许客户端的 SSL-VPN 连接,就能够从外部网络访问公司内网。如果结果是 NO ,就拒绝客户端的 SSL-VPN 连接,或只能进行软件升级等特定范围的访问操作。

DoS 全称是 Denial of Service ,也就是无法继续提供服务的意思。这里的服务是指服务器的应用程序服务,比如客户端发起 HTTP 请求时,服务器能够发出 HTTP 响应就说明完成了 HTTP 服务。DoS 攻击是针对服务器和网络设备发起的攻击,制造远超预先设计的访问量,让服务器和网络设备无法正常的回复响应报文,导致被攻击的系统无法提供服务。DoS 攻击也可以利用操作系统或程序的安全漏洞等,以少量流量使系统发生异常。在 DoS 中,通过僵尸网络的多个跳板,对服务器发起攻击的方式叫做 ddos( Distributed Denial of Service )攻击。

Syn Flood :发送大量 TCP SYN 报文,导致服务器资源消耗过度,一段时间内无法提供服务的状态。在防火墙内,定义每秒允许通过的 SYN 报文数量,当网络中的 SYN 报文超过这个值时,就会执行 SYN Cookie 的策略。SYN Cookie 策略是当服务器收到客户端的 SYN 报文时,不建立 TCP 连接,而是将 TCP 头部内容的散列值当做序列号放入 SYN-ACK 报文中返回。之后收到包含正确响应编号的 ACK 报文时,才将会话信息存储在内存中,有效防止攻击对服务器内存的消耗。

ICMP Flood :也叫做 ping flood ,发送大量的 ICMP echo request 报文来消耗服务器内存,让服务器暂时无法提供服务。防火墙通过定义一秒内允许的最大 ICMP 报文数量,对超过这个值的 ICMP 报文暂时不处理。

UDP Flood :发送大量的 UDP 报文来消耗服务器的内存,使得服务器暂时无法提供服务。防火墙通过定义一秒内允许的最大 UDP 报文数量,对超过这个值的 UDP 报文暂时不处理。

IP Flood :发送大量的 IP 报文来消耗服务器的内存,使得服务器暂时无法提供服务。防火墙通过定义一秒内允许的最大 IP 报文数量,对超过这个值的 IP 报文暂时不处理。

Land :发送源地址和目的地址相同的报文。受到这种攻击、又有安全漏洞的设备,会不断向自己转发数据而导致宕机。防火墙对于这类报文,一律丢弃。

Tear Drop :发送伪造的、含有 offset 的非法 IP 分片报文。这类攻击对于有安全漏洞的设备而言,会发生无法重新生成报文的现象发生,导致宕机。防火墙对于这类报文,一律丢弃。

Ping of Death :发送超过 IP 报文最大长度 65535 的 ping 。这类攻击对于有安全漏洞的设备而言,会导致无法运行的情况发生。防火墙对于这类报文,一律丢弃。

Smurf :把攻击对象的地址设置成源地址,并广播发送 ICMP echo request 报文,使得攻击对象收到大量 ICMP echo reply 报文而消耗带宽资源。

Fraggle :同 Smurf 类似,UDP 替代 ICMP 发起攻击,同时利用 echo 、Chargen 、daytime 、qotd 等多种端口。防火墙一般关闭这类端口,或使用安全策略进行拦截。

Connection Flood :反复生成大量长时间为 open 状态的连接,占据攻击对象的 socket 资源。如果服务器端没有最大连接数目的限制,就会发生系统崩溃。

Reload :在 Web 浏览器中连续按下 F5 键,让 Web 页面反复执行刷新操作,也叫做 F5 攻击。在 Web 通信量大时,会让服务器负载加重。

防御 DoS 就是限制异常高速通信流量,一般通过设置区域、网络接口、网络等单位来实现。

DoS 防御也可以拦截含有非法内容或安全性低的报文,这类报文让防火墙或路由器处理的话,会导致资源的浪费,因此需要使用专门的 DoS 防御功能来阻挡这类攻击。

攻击者在发起攻击前,会对攻击对象的设备情况进行调查,最基础也是最常用的手段就是端口扫描( port scan )。端口扫描可分为 TCP 端口扫描和 UDP 端口扫描两大类,对 TCP 端口和 UDP 端口按照顺序发送报文,探测目的设备是否开启了对应的服务。比如,某台设备的扫描结果是开启了 22 号端口,攻击者就会知道设备开启了 SSH 服务,从而利用 SSH 服务访问这个设备,并发起后续攻击。

防火墙能够探测出端口扫描行为,可以阻断这个行为。

TCP 端口扫描:对 TCP 的 0 ~ 65535 号端口全部进行扫描,或在一定范围内扫描端口,从而探测服务器有哪些端口可以使用。扫描过程是向服务器发送 TCP( SYN )分组,如果收到了响应 TCP( SYN + ACK )报文,那么说明端口是打开状态。如果端口关闭,就会从服务器收到 TCP( RST + ACK )报文。

SYN 端口扫描:属于 TCP 端口扫描的一种,无需完成 3 次握手,直接针对 SYN 报文进行端口扫描,也叫做半扫描。在 3 次握手过程中,根据服务器回复的是 ACK 报文还是 RST 报文来判断端口是否打开。

ACK 端口扫描:为规避防火墙对 SYN 端口扫描的检测,向服务器发送 ACK 报文,根据回复的 RST 报文窗口大小来判断端口是否打开。只对端口打开或关闭时发送不同窗口大小报文的服务器有效。

Null 端口扫描:向服务器发送 TCP 头部所有字段为 0 的报文,通过服务器是否返回 RST + ACK 报文来判断服务器端口是否打开。

FIN 端口扫描:向服务器发送 FIN 报文,根据是否收到 RST + ACK 报文来判断端口是否打开。

Xmas 端口扫描:向服务器发送 TCP 头部所有字段为 1 的报文,根据是否收到 RST + ACK 报文来判断端口是否打开。

UDP 端口扫描:对 UDP 的 0 ~65535 号端口全部进行扫描,或是在一定范围内扫描端口,从而探测服务器有哪些端口可以使用。

Host Sweep :向大量主机发送 ICMP 报文或 TCP 报文,如果返回应答,就根据返回的应答报文判断主机是否存在,并得知主机上运行了哪些应用程序等信息。TCP SYN Host Sweep 会同时向多台主机的相同端口发送 TCP SYN 报文。

IP 地址欺骗( IP Spoofing ):为了通过防火墙,避免被监控日志记录,伪造 IP 头部中源 IP 地址的攻击方式。

分片报文:分片的 IP 报文,由于安全性弱,常用于攻击,因此防火墙会有拦截分片报文的功能。如果报文和通信链路的 MTU 大小一致,就不会发送分片,这个功能也不会影响正常的通信。

ICMP 分片:跟 IP 分片报文类似,防火墙也有拦截 ICMP 分片报文的功能。

巨型 ICMP 报文:防火墙通过拦截一定大小以上的 ICMP 报文,就能避免 Ping of Death 攻击。

非法 ICMP 报文:如果接收的 ICMP 报文中,头部出现未定义的值时,需要进行额外的异常处理。防火墙会对这类非法的 ICMP 报文进行拦截。

SYN 以外的 TCP 报文控制:TCP 会话开始前,会发送 SYN 报文。如果在未确认的 TCP 会话中,收到了除 SYN 以外的字段位是 1 的 TCP 报文,很有可能就是端口扫描等攻击,就需要通过防火墙拦截这类报文。

IDS ,全称 Intrusion Detection System ,即入侵检测系统。IPS ,全称 Intrusion Prevention System ,即入侵防御系统,合称为 IDS/IPS 。

IDS 负责检测非法入侵,并告知系统管理员,而 IPS 是通过设置对非法入侵使用的协议和应用程序进行拦截。

IDS/IPS 能够检测的威胁有:

  • DoS 攻击

  • P2P 造成的信息泄露

  • 运行蠕虫、特洛伊木马、键盘记录器等恶意软件

  • 入侵局域网和入侵侦查行为

当 IDS/IPS 检测到入侵行为后,会进行相应处理:

  • 通知管理员,通过电子邮件或 SNMP 等方式

  • 记录日志

  • 拦截通信,向攻击方发送 TCP RST 报文

防火墙的 Deep Inspection 功能,能够针对特定的应用层协议,重组应用程序数据流的 TCP 数据段,检测其中是否包含了非法应用程序参数。

信息泄露:攻击者利用带有恶意脚本的邮件,或附带恶意软件的 URL 地址发起的攻击。攻击成功的话,能够获取对方的机密信息。

执行代码:向服务器发送非法数据,让服务器接受并执行远端的代码。

DoS 攻击:发送大量报文,让服务器的 CPU 、内存使用率上升,妨碍服务器正常提供服务的攻击。

缓存溢出( Buffer Overflow ):通过恶意程序诱导服务器运行内存超过上限,导致缓存溢出的攻击。

SQL 注入:针对 Web 应用程序,使用数据库 SQL 语言,对数据库进行非法操作的攻击。

暴力破解( Brute Force Attack ):也叫循环攻击,使用密码字典等工具,反复尝试管理员密码的攻击。为了防止这类攻击,需要执行输错 3 次密码就切断会话的类似策略。

跨站脚本攻击( Cross-site Scripting ):简称 CSS 或 XSS 。利用 Web 应用程序的漏洞,在提交页面表单时,通过服务器执行携带 HTML 标签的脚本,到达劫持会话或钓鱼的目的。

exploit 攻击:利用软件安全漏洞发起的攻击中使用的程序或脚本。

浏览器劫持:通过操作携带恶意软件的浏览器,在用户浏览 Web 页面时,篡改显示的页面形式和内容。一般会导致持续弹出广告栏、自动添加 URL 连接、跳转其它网页失败的情况。

钓鱼:使用伪造官方网站站点 URL 连接的邮件或网站,骗取用户的个人信用卡和银行账号信息。

僵尸网络:通过僵尸程序感染多台 PC ,并根据攻击方命令,同时发送垃圾和实施 DoS 等攻击。主要通过使用 IRC 对僵尸下达攻击命令。

CVE( Common Vulnerabilities Exposures ,通用漏洞披露)是美国非盈利机构 MIRTE 公司识别已知漏洞的项目。机构会为发现的安全漏洞问题分配一个 CVE 识别编号( CVE-ID ),当安全厂家提供多个漏洞防范对策时,通过使用这个编号告知用户是哪个安全漏洞问题。以 “ CVE-(公元纪年)-(4字符编号) ” 的格式记录,表明使用这个编号的安全漏洞问题已经广为人知。

反病毒也叫做防病毒策略,通过在个人电脑和服务器上安装防病毒软件,来保护设备免遭病毒侵袭。

在终端上安装防病毒软件的方式叫做主机型防病毒。而通过互联网网关的防火墙以及专用设备,对网络上所有的通信数据进行扫描的方式叫做网关型防病毒。使用网关型防病毒,能够防止局域网中病毒的蔓延以及跳板机攻击网络的发生。

确认是否存在病毒的操作叫做扫描。主机型防病毒的扫描是在主机内进行,而网关型病毒的扫描在通信流量中完成。

垃圾邮件是指骚扰邮件、广告邮件和诈骗邮件等,很多产品都有过滤这类垃圾邮件的反垃圾邮件功能,但是反垃圾邮件很容易引发误检。有可能出现正常邮件归档到骚扰软件中,误以为没收到邮件,这个需要注意。

DLP ,全称 Data Loss Prevention ,也就是防范信息泄露功能。

这个功能是检测网络中交换的应用程序数据,当发现特定文件或数据时,及时执行告警、断开会话、记录日志等操作。主要由文件过滤和数据过滤两个部分组成。

URL 过滤功能是在 HTTP 通信中,当客户端向服务器发起请求时,能够对 URL 信息进行检查,判断 URL 能否访问,并对有害的 Web 站点进行拦截的功能,通常作为服务器上的软件、防火墙和代理服务器的功能之一,提供给用户。

防火墙有监控、告警通知、日志记录和报告等监控功能。

监控( monitoring ):对网络和网络设备的实时状态进行监控,及时观察流量状态和故障信息,当发生故障、异常情况时,能够及时告警通知管理员。

告警通知( alerting ):发生故障和出现定义事件时,向管理员发生告警通知。告警方式可以是发送 SNMP Trap 、向 Syslog 服务器发送 syslog 通信和向服务器发送电子邮件等。

日志记录( logging ):记录流量日志、事件日志等各类日志的功能。日志能够导出为纯文本格式、CSV 格式、PDF 格式等。

报告( reporting ):通过 Web 对日志进行加工处理,提供一目了然的图表等信息。有些防火墙是发送 Syslog 日志或专用日志到管理服务器,在管理服务器上展示报告。

有些安全设备有报文抓包功能。抓到的报文可以在设备上流量,也可以导出为 WinPcap 格式的文件,在 Wireshark 这个应用程序中进行浏览。当发生通信故障时,可以根据抓包的信息进行分析。

同时在线会话数:防火墙通过管理会话表,以会话为单位来控制通信流量。会话表能够记录的表项数目说明了防火墙能够处理的同时在线会话数量。小型防火墙设备一般管理几万个会话,而电信服务供应商使用的防火墙能够同时管理数百万个会话。

NAT 表数目:有些防火墙或路由器会分别维护会话表和 NAT 表。NAT 表的数量表示同时在线 NAT 的会话数,这个数值表示设备能够建立 NAT 会话数的最大值。没有 NAT 表数上限的防火墙,一般使用会话数的上限。

每秒新建的会话数目:路由器的性能一般使用每秒能够传输的 bit 数 bit/s 和每秒转发报文数 pps 这两个参数来描述。而防火墙还增加了一条每秒新建会话数这个参数,表示在 1 秒内能够完成多少次完整的会话建立过程。1 个完整的会话建立过程包括:监控 TCP 连接的 3 次握手,握手正常则生成会话信息,将信息记录到会话表等操作。也引入另一个指标,表示在 1 秒内能够完成会话从建立到结束的次数,这个指标叫做每秒连接数。

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/31059

(0)
上一篇 2024年11月8日
下一篇 6天前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml