防火墙技术的发展经历了一个从简单到复杂,并不断借鉴和融合其他网络技术的过程。本节介绍防火墙涉及的基本技术,主要包括包过滤技术、代理技术、网络地址转换技术和虚拟专用网技术等。有关防火墙技术的新发展将在2.4节介绍。
包过滤(Packet Filtering)是最早应用到防火墙的技术之一。包过滤防火墙工作在网络层和传输层,它根据通过防火墙的每个数据包的头部信息来决定是将该数据包发往目的地址还是丢弃,从而达到对进出防火墙的数据进行控制的目的。
包过滤技术的发展有两个主要阶段:第一阶段称为静态包过滤,第二阶段称为状态包过滤。
(1)静态包过滤技术原理
包过滤防火墙的关键问题是如何检查数据包,以及检查到何种程度才能既保障安全又不会对通信速度产生明显的负面影响。从理论上讲,包过滤防火墙可以被配置为根据协议包头的任何数据域进行分析和过滤,但是大多数包过滤型防火墙只是针对性地分析数据包信息头的部分域,例如:
●源IP地址。
●目的IP地址。
●协议类型(TCP包、UDP包或ICMP包)。
●TCP或UDP包的源端口号。
●TCP或UDP包的目的端口号。
●TCP包头的标志位(如ACK)。
(2)包过滤规则表的概念
包过滤防火墙按照预先设置的过滤规则对流经的数据包进行解析。过滤规则表中配置有一系列的过滤规则,定义了什么包可以通过防火墙,什么包必须丢弃。过滤规则表也常被称为访问控制列表(Access Control Lists,ACL)。各个厂商的防火墙产品都有自己的语法用于创建规则。
【例2-1】防火墙过滤规则表。
下面使用与厂商无关但可理解的定义语言给出了一个包过滤规则表样例,见表2-1。
表2-1 一个包过滤规则样表
表2-1包含了规则执行顺序、源IP地址等包头信息,以及对数据包的操作和数据流向。在实际应用中,过滤规则表中还可以包含TCP包的序列号、IP校验和等,如果设备有多个网卡,表中还应该包含网卡名称。
该表中的第1条规则允许内部用户向外部Web服务器发送数据包,并定向到80端口;第2条规则允许外部网络向内部的高端口发送TCP包,只要ACK位置位,且流入包的源端口为80,即允许外部Web服务器的应答返回内部网络;最后一条规则拒绝所有数据包,以确保除了先前规则所允许的数据包外,其他所有数据包都被丢弃。
当数据流进入包过滤防火墙后,防火墙检查数据包的相关信息,开始从上至下扫描过滤规则,如果匹配成功则按照规则设定的操作执行,不再匹配后续规则。所以,在访问控制列表中规则的出现顺序至关重要。
防火墙对数据包的处理方式通常是以下3种。
●允许通过(常用Accept或Permit等)。
●拒绝通过(常用Deny、Reject或Block等)。当数据包被拒绝时,防火墙会向发送方回复一条消息,告知发送方该数据包已被拒绝。
●丢弃(Drop)。当数据包被丢弃时,防火墙不会对该数据包进行任何处理,也不会向发送方回复任何提示消息。
(3)包过滤规则表的配置原则
包过滤规则表的配置有两种方式。
●严策略。接受受信任的IP包,拒绝其他所有IP包。
●宽策略。拒绝不受信任的IP包,接受其他所有IP包。
显然,前者相对保守,但是相对安全。后者仅可以拒绝有限的可能造成安全隐患的IP包,网络攻击方可以通过改变IP地址等规避过滤规则,导致包过滤技术失效。所以,在实际应用中一般都应采用严策略来设置防火墙规则。表2-1即应用了严策略。
(4)包过滤规则表配置注意点
一般地,包过滤规则还应该阻止如下几种IP包进入内部网。
●源地址是内部地址的外来数据包。这类数据包很可能是为实行IP地址诈骗攻击而设计的,其目的是装扮成内部主机混过防火墙的检查进入内部网。
●指定中转路由器的数据包。这类数据包很可能是为绕过防火墙而设计的数据包。
●有效载荷很小的数据包。这类数据包很可能是为抵御过滤规则而设计的数据包,其目的是将TCP包头封装成两个或多个IP包送出,比如,将源端口和目的端口分别放在两个不同的TCP包中,使防火墙的过滤规则对这类数据包失效,这种方法称为TCP碎片攻击。
除了阻止从外部网送来的恶意数据包外,过滤规则还应阻止某些类型的内部网数据包进入外部网,特别是那些用于建立局域网和提供内部网通信服务的各种协议数据包,如动态主机配置协议(DHCP)、简单文件传输协议(TFTP)、网络基本输入/输出系统(NetBIOS)、公共互联网文件系统(CIFS)、远程行式打印机(LPR)和网络文件系统(NFS)等。
(5)静态包过滤技术的局限性
下面通过例2-2和例2-3说明静态包过滤防火墙的局限性。
【例2-2】假设通过部署包过滤防火墙将内部网络和外网分隔开,配置过滤规则,仅开通内部主机对外部Web服务器的访问,分析该规则表存在的问题。
过滤规则见表2-1。Web通信涉及客户端和服务器端两个端点,由于服务器将Web服务绑定在固定的80端口上,但是客户端的端口号是动态分配的(即预先不能确定客户使用哪个端口进行通信,这种情况称为动态端口连接),所以包过滤处理这种情况时只能将客户端动态分配端口的区域全部打开(1024~65535),才能满足正常通信的需要,而不能根据每次连接的情况开放实际使用的端口。
包过滤防火墙不论是对待有连接的TCP,还是无连接的UDP,都以单个数据包为单位进行处理,对网络会话连接的上下文关系不进行分析,因而静态包过滤又称为无状态包过滤,而且它对基于应用层的网络入侵无能为力。
【例2-3】包过滤防火墙对于TCP的ACK隐蔽扫描的分析与处理。
如图2-6所示,外部的攻击者可以在没有TCP三次握手中前两步的情况下,发送一个具有ACK位的初始包,这样的包违反了TCP,因为初始包必须有SYN位。但是因为包过滤防火墙没有状态的概念,防火墙将认为这个包是已建立连接的一部分,并让它通过(当然,如果根据表2-1的过滤规则,ACK置位,但目的端口≤1023的数据包将被丢弃)。当这个伪装的包到达内网的某个主机时,主机将意识到有问题(因为这个包不是任何已建立连接的一部分),若目的端口开放,目的主机将返回RST信息,并期望该RST包能通知发送方(即攻击者)中止本次连接。这个过程看起来是无害的,它却使攻击者能通过防火墙对内网主机开放的端口进行扫描。这个技术称为TCP的ACK扫描。
图2-6 TCP的ACK扫描穿越包过滤防火墙
通过图2-6示意的TCP的ACK扫描,攻击者穿越了防火墙进行探测,并且获知端口1024是开放的。为了阻止这样的攻击,防火墙需要记住已经存在的TCP连接,这样它将知道ACK扫描是非法连接的一部分。
下面将讨论状态包过滤技术,它能够跟踪连接状态并以此来阻止TCP的ACK扫描等攻击。
(1)状态包过滤技术原理
状态包过滤(Stateful Packet Filtering)也称为动态包过滤(Dynamic Packet Filtering),是一种基于连接的状态检测机制,也就是将属于同一连接的所有包作为一个整体的数据流进行分析,判断其是否属于当前合法连接,从而进行更加严格的访问控制。
跟静态包过滤只有一张过滤规则表不同,状态包过滤同时维护过滤规则表和状态表。过滤规则表是静态的,而状态表中保留着当前活动的合法连接,它的内容是动态变化的,随着数据包来回经过设备而实时更新。新的连接通过验证后,在状态表中添加该连接条目,而当一条连接完成它的通信任务后,状态表中的该条目将自动删除。
(2)状态包过滤处理流程
状态包过滤的一般处理流程如图2-7所示。
步骤1:当接收到数据包时,首先查看状态表,判断该包是否属于当前合法连接,若是,则接受该包让其通过,否则进入步骤2。
步骤2:在过滤规则表中遍历,若触发拒绝(Deny)操作,直接丢弃该包,跳回步骤1处理后续数据包;若触发允许(Accept)操作,则进入步骤3。
步骤3:在状态表中加入该新连接条目,并允许数据包通过。跳回步骤1处理后续数据包。
图2-7 状态包过滤处理流程
【例2-4】使用状态包过滤技术重新分析例2-2和例2-3。
设定过滤规则在主机A和服务器间开放Web通道,主机A是初始连接发起者:
和例2-1配置不同,状态包过滤只需设定发起初始连接方向上的过滤规则即可,该规则不仅决定是否接收数据包,而且也包含是否往状态表中添加新连接的判断标准。原先的动态端口范围包(1024~65535)由“*”取代,表示过滤规则并不关心主机A是以什么端口进行连接的,即主机A分配到哪一个端口都允许外出,但是返回通信就要基于已存连接的情况进行验证。因而状态包过滤借助状态表,可以按需开放端口,分配到哪个动态端口,就只开放这个端口,一旦连接结束,该端口重新被关闭,这样很好地弥补了前面提到的静态包过滤缺陷,大大提高了安全性。
对于例2-3,在状态包过滤防火墙中,防火墙记住了原来Web请求的外出SYN包,如果攻击者试图从早先没有SYN的地址和端口发送ACK数据包,则防火墙会丢弃这些包。
除了记住TCP标志位,状态包过滤防火墙还能记住UDP数据包,只有存在前一个外出数据包,才允许进入的UDP数据包通过。此外,状态包过滤能够帮助保护更复杂的服务,如FTP。FTP传输一个文件需要两个连接:一个FTP控制连接(通过这个连接发送获取目录列表和传输文件的命令),以及一个FTP数据连接(通过这个连接发送文件列表和文件本身)。可以配置状态包过滤防火墙,使之只有在建立了FTP控制连接之后才允许FTP数据连接,从而比静态包过滤防火墙更好地维护协议。
(1)优点
包过滤方式是一种通用、廉价且有效的安全手段。
●通用。因为它工作在网络层和传输层,与应用层无关,不是针对各个具体的网络服务,而是适用于所有网络服务,也不用改动客户机上的应用程序。
●廉价。因为大多数路由器都能提供数据包过滤功能。
●有效。因为它能满足大多数企业的基本安全要求。
(2)局限性
包过滤技术的局限性主要体现在以下几方面。
●难以实现对应用层服务的过滤。由于防火墙不是数据包的最终接收方,仅仅能够对数据包网络层和传输层信息头等信息进行分析控制,所以难以了解数据包是由哪个应用程序发起。目前的网络攻击和恶意程序往往伪装成常用的应用层服务的数据包规避包过滤防火墙的检查。
●访问控制列表的配置和维护困难。包过滤技术的正确实现依赖于完备的访问控制列表,以及访问控制列表中配置规则的先后顺序。在实际应用中,对于一个大型网络的访问控制列表的配置和维护将变得非常繁杂。
●难以详细了解主机之间的会话关系。包过滤防火墙处于网络边界,并根据流经防火墙的数据包进行网络会话分析,生成会话连接状态表。由于包过滤防火墙并非会话连接的发起者,所以对网络会话连接的上下文关系难以详细了解,容易遭受欺骗攻击。
●一般的包过滤防火墙缺少审计和报警等安全机制。安全防护是一个系统化工程,需要多种安全防护机制协同工作。
采用应用代理(Application Proxy)技术的防火墙工作在应用层,通过对每种应用服务编制专门的代理程序来实现比包过滤更加严格的安全控制策略。
应用代理技术的发展也经历了两个阶段:第一阶段的应用层代理技术;第二阶段的传输层代理技术。
(1)应用层代理技术的原理
应用层代理技术也称为应用层网关(Application Gateway)技术,由于它工作在应用层,可以代理HTTP、FTP、SMTP等协议,确保内网用户在Web访问、收发邮件等时的安全。Web应用防火墙实际上就是HTTP的代理服务。
如图2-8所示,客户机与代理交互,而代理代表客户机与服务器交互。客户机或服务器之间非代理应用的连接都被丢弃。
图2-8 基于代理的防火墙实现应用级控制
代理服务程序实际上担当着客户机和服务器的双重角色,通常由两个部分组成:代理服务器端程序和代理客户端程序(安装在内网客户机上)。一旦会话建立起来,应用层代理程序便作为中转站在内网用户和外网服务器之间转发数据,因此它完全控制着会话过程,并可按照安全策略进行控制。
【例2-5】应用层代理防火墙对于TCP的ACK隐蔽扫描的处理分析。
基于代理的防火墙没有静态包过滤防火墙遇到的ACK攻击扫描问题,因为ACK不是有意义的应用请求的一部分,它将被代理丢弃。而且,由于主要针对应用级,基于代理的防火墙可以梳理应用级协议,以确保所有交换都严格遵守协议消息集。例如,一个Web代理可以确保所有消息都是正确格式的HTTP,而不是仅仅检查确保它们是前往目标TCP端口80。而且,代理可以允许或拒绝应用级功能。例如,对于FTP,代理可以允许FTP GET,从而使用户可以将文件带入网络,同时拒绝FTP PUT,禁止用户使用FTP将文件传送出去。
此外,代理可以帮助优化性能。例如,对经常访问的信息进行缓存,从而对于同一数据,无须向服务器发出新的请求。
(2)应用层代理技术的优点及局限性
采用应用层代理技术的防火墙具有以下优点。
●能支持可靠的用户认证,并提供详细的注册信息。
●相对于包过滤防火墙来说,应用层的过滤规则更容易配置和测试。
●代理工作完全控制会话,可以提供详细的日志和安全审计功能。
●提供代理服务的防火墙可以被配置成唯一的可被外部看见的主机,这样既可以隐藏内部网络结构,更好地保护内部主机免受外部攻击,又可以解决合法IP地址不够用的问题。
应用层代理技术也有明显的缺点。
●代理防火墙容易成为内、外网络之间的瓶颈。因为基于代理的防火墙注重应用层,基于协议内容对数据流的控制更多、更细,而这些控制需要计算和存储开销。
●所能提供的代理服务和可伸缩性有限。不同的应用需要不同的代理服务,而且每一种应用升级时,代理服务程序也要相应升级。不过,从安全角度来看,这也是一个优点,因为除非明确地提供了应用层代理服务,否则就不可能通过防火墙,这也符合“未被明确允许的就将被禁止”的原则。
传输层代理(SOCKS)解决了应用层代理一种代理只能针对一种应用的缺点。
SOCKS代理通常也包含两个组件:SOCKS服务端和SOCKS客户端。SOCKS代理技术对内、外网的通信连接进行转换。与普通代理不同的是,服务端实现在应用层,客户端实现在应用层和传输层之间。它能够实现SOCKS服务端两侧的主机间互访,而无须直接的IP连通性作前提。SOCKS代理对高层应用来说是透明的,即无论何种具体应用都可以通过SOCKS来提供代理。
SOCKS有两个版本。SOCKS 4是旧版本,只支持TCP,也没有强大的认证功能。为了解决这些问题,SOCKS 5应运而生了。除了TCP,它还支持UDP,有多种身份认证方式,也支持服务器端域名解析和新的IPv6地址集。
SOCKS服务器一般在1080端口进行监听。使用SOCKS代理的客户端首先要建立一个到SOCKS服务器1080端口的TCP连接,然后进行认证方式协商,并使用选定的方式进行身份认证,一旦认证成功,客户端就可以向SOCKS服务器发送应用请求了。它通过特定的“命令”字段来标识请求的方式,可以是对TCP的“connect”,也可以是对UDP的“UDP Associate”。这里很清楚的是,无论客户端是与远程主机建立TCP连接还是使用无连接的UDP,它与SOCKS服务器之间总是通过TCP连接来通信的。更多详细内容可以参见RFC 1928。
网络地址转换(Network Address Translation,NAT),也称为IP地址伪装(IP Masquerading)。NAT技术并非为防火墙而设计,最初目的是允许将私有IP地址映射到公网(合法的因特网IP地址),以缓解IP地址短缺的问题。然而在实际应用中,NAT技术已经成为防火墙采用的核心技术之一,因为其具有以下一些功能。
●内部主机地址隐藏。可以防止内部网络结构被探知,从而从一定程度上降低了内部网络被攻击的可能性,提高了内部网络的安全性。
●网络负载均衡。
●网络地址交叠处理。
NAT技术根据实现方法的不同,通常可以分为两种:静态NAT和动态NAT,包括端口地址转换(Port Address Translation,PAT)技术。
静态NAT技术是为了在内网地址和公网地址间建立一对一映射而设计的。静态NAT需要内网中的每台主机都拥有一个真实的公网IP地址。NAT网关依赖于指定的内网地址到公网地址之间的映射关系来运行。
【例2-6】静态NAT过程。
如图2-9所示,在防火墙建立静态NAT映射表,在内网地址和公网地址间建立一对一映射。
图2-9 静态NAT原理图
静态NAT过程描述如下。
1)内部网络主机10.1.1.10准备建立一条到外部主机202.119.104.10的会话连接。防火墙从内部网络接收到一个数据包时检查NAT映射表:如果已为该地址配置了静态地址转换,防火墙使用公网IP地址209.165.201.1来替换内网IP地址10.1.1.10,并转发该数据包;否则,防火墙不对内部地址进行任何转换,直接将数据包丢弃或转发。
2)外部主机202.119.104.10收到来自209.165.201.1的数据包后进行应答。当防火墙接收到来自外部网络的数据包时,防火墙检查NAT映射表:如果NAT映射表中存在匹配项,则使用内部地址10.1.1.10替换数据包目的IP地址209.165.201.1,并将数据包转发到内部网络主机;如果NAT映射表中不存在匹配项,则拒绝数据包。
(1)动态NAT技术原理
动态NAT技术可以实现将一个内网IP地址动态映射为公网IP地址池中的一个,映射表对网络管理员和用户来说是透明的,而不必像静态NAT那样进行一对一的映射。
【例2-7】动态NAT过程。
如图2-10所示,在防火墙建立动态NAT映射表。内网有5台主机,拥有3个外网地址。
动态NAT过程描述如下。
内部网络主机10.1.1.10准备建立一条到外部主机202.119.104.10的会话连接时,防火墙从公网IP地址池中选取一个外网地址分配给其使用。其他控制操作类似静态NAT过程。
如果公网地址池中的IP地址做映射用完了,内网剩余的计算机将不能再访问外网了。也就是说,内网的计算机同时只能有3台访问因特网。
图2-10 动态NAT原理图
(2)端口地址转换(PAT)技术原理
PAT作为动态NAT的一种形式,它将多个内部IP地址映射成为一个公网IP地址。从本质上讲,网络地址映射并不是简单的IP地址之间的映射,而是网络套接字映射,网络套接字由IP地址和端口号共同组成。当多个不同的内部地址映射到同一个公网地址时,可以使用不同端口号来区分它们,这种技术称为复用。
【例2-8】 PAT过程。
如图2-11所示,在防火墙建立NAT映射表。
图2-11 PAT原理图
PAT过程描述如下。
1)内部网络主机10.1.1.10准备建立到外部主机202.119.104.10的会话连接。防火墙接收到来自内部主机的数据包时检查NAT映射表:如果还没有为该内部主机建立地址转换映射项,防火墙会对该地址进行转换,记录会话状态信息,并转发数据包。例如,防火墙收到来自10.1.1.10的第一个数据包时,建立10.1.1.10:3001—209.165.201.1:2001,并记录会话状态。如果已经有其他地址转换映射存在,那么防火墙将使用该记录进行地址转换。
2)外部主机收到访问信息,并进行应答。当防火墙接收到来自外部网络的数据包时,检查NAT映射表查询匹配项:如果NAT映射表中存在地址映射和会话状态匹配的选项时,转发数据包;否则,拒绝接收数据包。
所谓负载均衡就是对于外部网络访问内部网络服务器的数据流,可以为其配置一种目的地址转换的动态形式。这种地址转换只有当建立一个由外部发起到内部的新连接时才执行,通常按轮询方式(Round-Robin)进行分配。
【例2-9】 NAT实现网络负载均衡。
如图2-12所示,在防火墙建立NAT映射表。
图2-12 NAT实现TCP负载均衡原理图
NAT实现网络负载均衡过程描述如下。
1)外部主机准备建立到内部网络虚拟Web服务器202.168.2.1:80的一个会话连接。防火墙接收到这个连接请求,为其建立一个新的地址转换映射,为该IP地址202.168.2.1分配一个真实内部主机地址替换原目的地址,如10.1.1.1,并转发该数据包。
2)内部主机10.1.1.1接收到该数据包,并做出应答。防火墙接收到应答数据包,用内网地址及端口号和外部主机地址及端口号从NAT映射表中查找出对应的公网地址(虚拟服务器地址)和端口号。然后将源地址转换成虚拟主机地址,并转发该数据包。
3)对于下一个连接请求,防火墙将为其分配另一个内部主机地址,如10.1.1.2。
除了上述功能外,NAT技术也常被用来解决内部网络地址与外部网络地址交叠的情况。例如,当两个公司要进行合并,但双方各自使用的内部网络地址有重叠时;再如,用户在内部网络设计中私自使用了合法地址,但后来又想要与公司网络(如因特网)进行连接时。
【例2-10】 NAT处理网络地址交叠。
NAT处理网络地址交叠的原理如图2-13所示。
图2-13 NAT处理网络地址交迭的原理图
SNAT(Source NAT)是指源地址转换,DNAT(Destination NAT)是指目的地址转换。
SNAT和DNAT都是指地址转换,即将私有地址转换为公网地址。
SNAT和DNAT两者的区别在于连接的发起者是谁。
●SNAT:内部地址要访问公网上的服务时(如Web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址进行地址转换,将内部地址的私有IP转换为公网的公有IP这个地址转换称为SNAT,主要用于内部共享IP访问外部。
●DNAT:当内部需要提供对外服务时(如对外发布Web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部。此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换。此转换称为DNAT,主要用于内部服务对外发布。
说明:
在配置防火墙或者路由ACL策略时要注意SNAT和DNAT两个一定不能混淆。
NAT技术本身依然存在一些问题。
1)一些应用层协议的工作特点导致了它们无法使用NAT技术。当端口改变时,有些协议不能正确执行它们的功能。
2)静态NAT技术仅仅在一对一的基础上替换IP包头中的IP地址,应用层协议数据包所包含的相关地址并不能同时得到替换。如果希望提高安全性,应该考虑使用应用层代理服务来实现。
3)对于动态NAT技术,在内部主机建立穿越防火墙的网络连接之前,相应的NAT映射并不存在。外部网络主机根本没有到达内部主机的路径,因此内部网络主机完全被屏蔽,不会受到攻击,但是无法阻止内部用户主动连接黑客主机。如果内部主机被引诱连接到一个恶意外部主机上,或者连接到一个已被黑客安装了木马的外部主机上,它将完全暴露,就像没有防火墙一样容易被攻击。
4)状态表超时问题。当内部主机向外部主机发送连接请求时,动态NAT映射表的内容动态生成。NAT映射表条目有一个生存周期,当连接中断时,映射条目清除,或者经过一个超时值(这个超时值由各个防火墙厂商定义)后自动清除。从理论上讲,在超时发生之前,攻击者得到并利用动态网络地址翻译地址映射的内容是有可能的,尽管十分困难。
如图2-5所示,在实际应用中,远程用户(移动办公用户、家庭用户)有着安全访问内网的需求。虚拟专用网(Virtual Private Network,VPN)是实现这一安全通信需求的重要技术。
(1)VPN的定义
国家标准《信息技术安全技术:IT网络安全第5部分:使用虚拟专用网的跨网通信安全保护》(GB/T 25068.5—2010/ISO/IEC 18028—5:2006)中给出了VPN的定义,VPN提供一种在现有网络或点对点连接上建立一至多条安全数据信道的机制。它只分配给受限的用户组独占使用,并能在需要时动态地建立和撤销。主机网络可为专用的或公共的。
(2)VPN的两种连接方式
VPN是利用因特网扩展内部网络的一项非常有用的技术,它利用现有的因特网接入,只需稍加配置就能实现远程用户对内网的安全访问,或是两个私有网络的相互安全访问。
1)端到点的VPN接入。图2-14中的远程用户(移动办公用户、家庭用户)可以通过因特网建立到组织内部网络的VPN连接,远程用户建立到远程访问服务器的VPN拨号后,会得到一个内网的IP地址,这样该用户可以像在内网中一样访问组织内部的主机。
2)点到点的VPN接入。图2-14中的分支机构如果不能通过专线连接组织内网,也可以利用VPN技术,通过一条跨越不安全的公网来连接两个端点的安全数据通道。
图2-14 VPN的两种接入方式
(3)VPN的功能
虚拟专用网络可以帮助远程用户(尤其是移动用户)、组织分支机构、商业伙伴等和组织内部网络建立可信的安全连接,并保证数据传输的安全性。实现的安全功能如下。
●数据加密:保证通过公共网络传输的数据即使被他人截获也不至于泄露信息。
●身份认证和信息认证:保证信息的真实性(来源可靠性)以及信息的完整性和不可抵赖性。
●访问控制:不同的用户具有不同的访问权限。
虚拟专用网络利用了现有的因特网环境,有利于降低建立远程安全网络连接的成本,同时也简化了网络的设计和管理的复杂度和难度,利于网络的扩展。
VPN的实质是在共享网络环境下建立的安全“隧道”(Tunnel)连接,数据可以在“隧道”中传输。隧道是利用一种协议来封装传输另外一种协议的技术,即原始数据报文在A地进行封装,到达B地后把封装去掉还原成原始数据报文,这样就形成了一条由A到B的通信“隧道”。隧道技术的标准化表现形式就是隧道协议。
不同隧道协议的区别主要在于用户数据在网络协议栈的第几层被封装,因此从低层到高层就有了工作在OSI模型第二层(数据链路层)的PPTP(Point-to-Point Tunneling Protocol,点到点隧道协议)和L2TP(Layer 2 Tunneling Protocol,二层隧道协议),介于第二层与第三层(网络层)之间的MPLS(Multi-Protocol Label Switching,多协议标签交换),工作在第三层的IPSec(Internet Protocol Security,IP安全协议)和工作在传输层与应用层之间的SSL(Security Socket Layer,安全套接层)协议等不同的VPN实现形式。
●PPTP是PPP(Point to Point Protocol)的一种拓展,它使用通用路由封装(Generic Routing Encapsulation,GRE)将PPP帧封装进IP包中,通过IP网络传输。PPTP是微软较早提出的协议,只能在两端点间建立单一隧道。通过该协议,远程用户能够通过Windows操作系统以及其他装有点对点协议的系统拨号连入本地ISP(Internet Service Provider,因特网服务供应商),安全访问企业网络。PPTP易于设置,安全性弱,穿透能力差,适合在没有防火墙限制的网络中使用。
●L2TP支持在两端点间使用多隧道。L2TP是PPTP的延伸,并包括一个专有的协议,允许跨多个中间网络加密数据。使用L2TP可以针对不同的服务质量创建不同的隧道。L2TP可以提供包头压缩、隧道验证等,而PPTP不支持。L2TP自身不提供加密与可靠性验证的功能,更多的是和IPSec协议配合使用,实现数据的加密传输。
●MPLS是一种特殊的转发机制,它为进入网络中的IP数据包分配标记,并通过对标记的交换来实现IP数据包的转发。标记作为IP包头在网络中的替代品而存在。在网络内部,MPLS在数据包所经过的路径沿途不是通过IP包头而是通过交换标记来实现转发,当数据包要退出MPLS网络时,数据包被解开封装,继续按照IP包的路由方式到达目的地址。MPLS配置完成后,内网用户如同在同一网络中,无须安装客户端软件,可以说对用户的要求为零。MPLS可以实现所有基于IP的应用,同时由于它具有很好的QoS(Quality of Service,服务质量),因此可以运行语音、视频等远程通信等服务。
●IPSec和SSL与上述几种VPN实现方式相比具有很好的安全性,下面详细介绍。
(1)IPSec协议的概念
IPSec是IPv6的一个组成部分,也是IPv4的一个可选扩展协议。IPSec弥补了IPv4在协议设计时缺乏安全性考虑的不足。
IPSec工作在网络层,可提供数据保密性、完整性和可认证性(真实性)等安全服务。
(2)IPSec协议的内容
IPSec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,主要包括以下3项内容。
1)认证头(Authentication Head,AH)协议:用于支持数据完整性和IP数据报的认证。
2)载荷安全封装(Encapsulating Security Payload,ESP)协议:提供IP数据报的机密性、完整性和认证功能。
3)因特网密钥交换(Internet Key Exchange,IKE)协议:在IPSec通信双方之间建立共享安全参数及验证的密钥。
虽然AH协议和ESP协议都可以提供身份认证,但它们有如下区别。
●ESP协议要求使用高强度加密算法,会受到许多限制。
●多数情况下,使用AH协议的认证服务已能满足要求,相对来说,ESP协议的开销较大。
设置AH和ESP两套安全协议意味着可以对IPSec网络进行更细粒度的控制,选择安全方案可以有更大的灵活度。
拓展资料
IPSec协议内容。
来源:本书整理。
(3)IPSec的两种工作模式
IPSec有两种工作模式:传输模式和隧道模式,如图2-15所示。
图2-15 IPSec的两种工作模式
a)传输模式 b)隧道模式
1)传输模式是用于在两台主机之间进行的端到端通信。发送端IPSec将IP包载荷用ESP或AH进行加密或认证,但不包括IP头,数据包传输到目的IP后,由接收端IPSec认证和解密。
2)隧道模式用于点到点通信,对整个IP包提供保护。为了达到这个目的,当IP包加AH或ESP域之后,整个数据包加安全域被当作一个新IP包的载荷,并拥有一个新的IP包头(外部IP头)。整个包利用隧道在网络之间传输,沿途路由器不能检查原来的IP包头(内部IP头)。由于原来的包被封装,新的、更大的包可以拥有完全不同的源地址与目的地址,以增强安全性。
【例2-11】 IPSec如何运用隧道模式实现点到点安全通信。
IPSec非常适合组织用户在公共IP网络上构建自己的虚拟专用网络,只需要部署在网络边缘上的设备具备IPSec协议的支持即可。
下面结合图2-15b解释IPSec协议是如何运用隧道模式实现点到点安全通信的。网络中的主机A生成以另一个网络中主机B作为目的地址的IP包,该包选择的路由是从源主机到A网络边界的VPN网关A或安全路由器;根据对IPSec处理的请求,如果从A到B的包需要IPSec处理,则VPN网关A执行IPSec处理并在新IP头中封装包,其中的源IP地址为VPN网关A的IP地址,目的地址为主机B所在网络边界的VPN网关B的地址。这样,包被传送到VPN网关B,而其间经过的中间路由器仅检查新IP头;在VPN网关B处,除去新IP头,包被送往内部主机B。
在实际应用中,IPSec协议主要应用在点到点的VPN接入中,在端到点的远程访问VPN接入中,存在较多安全隐患。现在普遍认为,SSL是IPSec的互补性技术,在实现移动办公和远程接入时,SSL更可以作为IPSec的取代性方案。同时,它对现有SSL应用是一个补充,它增强了网络执行访问控制和安全的级别和能力。
(1)SSL协议的基本概念
因为IP包本身不具备任何安全特性,很容易被修改、伪造、查看和重播。在传输层上实现数据的安全传输是另一种安全解决方案。
传输层安全协议通常指的是安全套接层协议(Security Socket Layer,SSL)和传输层安全协议(Transport Layer Security,TLS)两个协议。SSL是美国网景(Netscape)公司于1994年设计开发的传输层安全协议,用于保护Web通信和电子交易的安全。IETF(Internet Engineering Task Force,互联网工程任务组)对SSL 3.0进行了标准化,并添加了少数机制,命名为TLS 1.0,2018年8月发布了TLS 1.3(RFC 8446)。
SSL/TLS已经得到了业界广泛认可,当前流行的客户端软件、绝大多数的服务器应用以及证书授权机构等都支持SSL。
SSL协议是介于应用层和可靠的传输层协议之间的安全通信协议,其优势在于与应用层协议无关,因而高层的应用层协议(如HTTP)能透明地建立于SSL协议之上。SSL提供如下3种基本的安全服务。
1)保密性。SSL提供一个安全的“握手”来初始化TCP/IP连接,完成客户端和服务器之间关于安全等级、密码算法、通信密钥的协商,以及执行对连接端身份的认证工作。在此之后,SSL连接上所传送的应用层协议数据都会被加密,从而保证通信的机密性。
2)可认证性。实体的身份能够用公钥密码(如RSA、DSS等)进行认证。SSL服务器和SSL客户端用户可以互相确认身份。
3)完整性。消息传输包括利用安全哈希函数产生的带密钥的消息认证码(Message Authe-ntication Code,MAC)。
(2)SSL协议的内容
下面基于SSL 3.0介绍SSL协议的主要结构。SSL协议主要包括以下4种。
●SSL记录协议(SSL Record Protocol)。在客户端和服务器之间传输应用数据和SSL控制信息,可能情况下在使用底层可靠的传输协议传输之前,还进行数据的分段或重组、数据压缩、附以数字签名和加密处理。
●SSL握手协议(SSL Handshake Protocol)。这是SSL各子协议中最复杂的协议,它提供客户端和服务器认证并允许双方商定使用哪一组密码算法。SSL握手过程完成后,建立起了一个安全的连接,客户端和服务器可以安全地交换应用层数据。
●SSL修改密码规格协议。允许通信双方在通信过程中更换密码算法或参数。
●SSL报警协议。这是管理协议,通知对方可能出现的问题。
拓展资料
SSL协议的内容。
来源:本书整理。
【例2-12】 SSL VPN应用举例。
SSL协议设计的初始目的是保护HTTP,但它实际上可以保护任何一种基于TCP的应用。因此,如果组织分布的网络环境下只有基于C/S或B/S架构的应用,不要求各分支机构之间的计算机能够相互访问,则基于SSL就可以构建VPN,它可以针对具体的应用实施安全保护。目前应用最多的就是利用SSL实现对Web应用的保护。
SSL VPN一般的实现方式只需要一台服务器和若干客户端软件就可以了。一台SSL服务器部署在应用服务器前面,它负责接入各个分布的SSL客户端。
常使用的SSL VPN应用模式有:证券公司为股民提供的网上炒股、金融系统的网上银行、中小企业的ERP、远程办公或资源访问等。