防火墙产品原理与应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-10 16:27:10

点击下载

作者:张艳,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

防火墙产品原理与应用

防火墙产品原理与应用试读:

前言

随着越来越多重要的信息应用以互联网作为运行基础,用户面临的威胁形形色色,各类网络安全问题日益突出,计算机病毒、协议缺陷、系统脆弱性、各类攻击等直接导致网络安全形势日趋严峻。如何有效地防御网络安全威胁,让网络连接更安全?

防火墙技术作为保护计算机网络安全的最常用技术之一,在不危及内部网络数据和其他资源的前提下,允许本地用户使用外部网络资源,并将外部未被授权的用户屏蔽在内部网络之外,从而解决因连接外部网络所带来的安全问题。

防火墙产品经历了怎样的发展历程?防火墙产品的各项防护功能是如何实现的?本书就是带着这些问题展开陈述的。

本书是信息安全产品技术丛书之一。本书在产品需求、发展历程、实现原理、技术标准、应用等几方面均有翔实的描述。与此同时,本书力求实用,收集了许多实际数据与案例,期望能够给读者在防火墙产品的安全防护技术和标准的了解方面予以一定的帮助。

本书的主要编写成员均来自公安部计算机信息系统安全产品质量监督检验中心,他们常年从事防火墙产品等信息安全产品的测评工作,对防火墙产品有深入的研究。部分作者全程参与了新型防火墙产品标准从规范、行标到国标的制定、修订工作,因此,本书在标准介绍和描述方面具有一定的权威性。

本书由顾健作为丛书主编,负责把握全书技术方向,第1章由张艳编写,第2章由俞优、沈亮编写,第3章由张艳编写,第4、5章由沈亮、陆臻编写。此外,顾建新、王志佳、冯婷婷、武滕等同志也参与了本书资料的收集和部分编写工作。由于编写人员水平有限和时间紧迫,本书不足之处在所难免,恳请各位专家和读者不吝批评指正。

本书的编写得到了北京天融信网络安全技术有限公司、华为技术服务有限公司和珠海经济特区伟思有限公司的大力协助,在此表示衷心的感谢!编者

第1章 综述

信息化时代的飞速发展为人们的生活带来了越来越多的便捷,但是,网络互联互通的开放性特性极大地方便了各种资源的联网,开创和拓宽了共享资源的途径,同时,随着人类在经济、工业、军事领域方面越来越多地依赖信息化管理和处理,由于信息网络在设计上对安全问题的忽视,以及爆发性应用背后存在的使用和管理上的脱节,使互联网中信息的安全性逐渐受到严重威胁,实用和安全矛盾逐渐显现。随着越来越多重要的信息应用以互联网作为运行基础,信息安全问题已经成为威胁民生、社会、甚至国家安全的重要问题。

1.1 为什么要防火墙产品

1.1.1 网络面临的安全威胁

随着计算机网络的普及,各类网络安全问题日益突出。自莫里斯蠕虫病毒出现以来,病毒的数量呈爆炸式增长,病毒传播的趋利性日益突出,病毒的破坏性及反查杀能力不断增强。安全漏洞数量增长较快,系统或软件的严重级别漏洞增多,各类安全漏洞并未引起足够的重视。

近年来计算机网络面临的威胁越来越多,人为的攻击事件数量呈剧烈上升趋势。然而,各种信息在公共通信网络上存储、传输,可能会被怀有各种目的的攻击者非法窃听、截取、篡改或毁坏,从而导致不可估量的损失。对于银行系统、商业系统、政府或军事领域而言,这些比较敏感的系统或部门对公共通信网络中存储与传输的数据安全问题尤为关注。

1.网络协议和软件的安全缺陷

互联网的基石是TCP/IP协议簇,该协议簇在实现上力求效率,而没有考虑安全因素,因为那样无疑会增大代码量,从而降低TCP/IP的运行效率,所以说TCP/IP本身在设计上就是不安全的。

2.计算机病毒

计算机病毒是专门用来破坏计算机正常工作,具有高级技巧的程序。它并不独立存在,而是寄生在其他程序之中,它具有隐蔽性、潜伏性、传染性和极大的破坏性。随着网络技术的不断发展、网络空间的广泛运用,病毒的种类急剧增加。目前全世界的计算机活体病毒达14万多种,其传播途径不仅通过软盘、硬盘传播,还可以通过网络的电子邮件和下载软件传播。只要带病毒的计算机在运行过程中满足设计者所预定的条件,计算机病毒便会发作,轻者造成速度减慢、显示异常、丢失文件,重者损坏硬件、造成系统瘫痪。

3.身份信息窃取

任何人都可能成为身份信息窃取的受害者。在某些情况下,网络罪犯通过要求在电子邮件中或从该邮件链接到的网站上提供的信息,即可直接获得有关个人信息。在其他情况下,网络罪犯通过黑客入侵企业(如零售商或政府机构等)管理的大型数据库,同时窃取许多的个人信息。

4.网络钓鱼诈骗

网络罪犯经常通过看似来自合法公司的电子邮件中的链接获取个人信息。这称为“网络钓鱼诈骗”。这些不法之徒使用来自合法公司或组织的邮件,蒙骗获取用户密码和其他信息,以便盗取用户的钱财或以用户的名义购物。

5.分布式拒绝服务(DDoS)

分布式拒绝服务是利用多台计算机同时攻击一台服务器(如网站的服务器),使服务器陷入瘫痪或停止正常运行。许多DDoS攻击可能利用多台PC发起攻击,这些PC由BOT控制者控制,将PC用作单个僵尸。

1.1.2 网络安全的实现

1.访问控制

访问控制是网络安全防御和保护的主要策略。进行访问控制的目的是保证网络资源不被非法使用和非法访问。控制用户可以访问网络资源的范围,为网络访问提供限制,只允许具有访问权限的用户访问网络资源。

2.数据加密技术

随着当前通信技术的快速发展,用户对信息的安全处理、安全存储、安全传输的需要也越来越迫切,并受到了广泛关注。信息在网络传输的安全威胁是由于TCP/IP协议所固有的,因此数据加密技术成为实现计算机网络安全技术的必然选择。

3.病毒防护

病毒防护主要包括计算机病毒的预防、检测与清除。最理想的防止病毒攻击的方法就是预防,在第一时间内阻止病毒进入系统。

4.攻击防御

攻击防御对网络及网络设备的传输行为进行实时监视,在恶意行为被发动时及时进行阻止,攻击防御可以针对特征分析及行为分析做出判断。

5.完善安全管理制度

任何网络都没有100%的安全,网络安全建设是“三分技术,七分管理”。因此,除了运用各种安全技术之外,还要建立一系列安全管理制度。制订严格的网络管理制度、安全设备的访问控制措施、机房管理制度、应急响应方案等,并加强对软件及操作的管理。

1.1.3 采用防火墙系统的必要性

从计算机网络安全技术的角度来看,防火墙是指强加于两个网络之间边界处,以保护内部网络免遭外部网络威胁的系统或者系统组合。防火墙技术作为保护计算机网络安全的最常用技术之一,当前全球约有三分之一的计算机是处于防火墙的保护之下。防火墙在不危及内部网络数据和其他资源的前提下,允许本地用户使用外部网络资源,并将外部未被授权的用户屏蔽在内部网络之外,从而解决了因连接外部网络所带来的安全问题。

1.2 防火墙发展历程

1.2.1 防火墙技术的发展

防火墙技术经历了包过滤、应用代理网关、状态检测几个重要阶段,下面简要介绍一下其技术特点。

1.包过滤技术

包过滤防火墙工作在网络层,对数据包的源及目的IP具有识别和控制作用,对于传输层,也只能识别数据包是TCP还是UDP及所用的端口信息。现在的路由器、带有路由功能的路由器以及通用操作系统基本都具有包过滤(Packet Filter)控制的能力。

包过滤防火墙具有的缺陷:(1)不支持应用层协议。假如内网用户提出这样一个需求,只允许内网员工访问外网的网页(使用HTTP协议),不允许去外网下载电影(一般使用P2P协议),这时包过滤防火墙无能为力,因为它不认识数据包中的应用层协议,访问控制粒度太粗糙。(2)不能处理新的安全威胁。它不能跟踪TCP状态,所以对TCP层的控制有漏洞。如当它配置了仅允许从内到外的TCP访问时,一些以TCP应答包的形式从外部对内网进行的攻击仍可以穿透防火墙。

2.应用代理网关技术

应用代理网关防火墙彻底隔断内网与外网的直接通信,内网用户对外网的访问变成防火墙对外网的访问,然后再由防火墙转发给内网用户。所有通信都必须经应用层代理软件转发,访问者任何时候都不能与服务器建立直接的TCP连接,应用层的协议会话过程必须符合代理的安全策略要求。

应用代理网关的优点是可以检查应用层、传输层和网络层的协议特征,对数据包的检测能力比较强。

缺点也非常明显,主要有:(1)难以配置。由于每个应用都要求单独代理进程,这就要求网管能理解每项应用协议的弱点,并能合理配置安全策略,由于配置烦琐,难以理解,容易出现配置失误,最终影响内网的安全防范能力。(2)处理速度非常慢。断掉所有的连接,由防火墙重新建立连接,理论上可以使应用代理防火墙具有极高的安全性,但是实际应用中并不可行,因为对于内网的每个Web访问请求,应用代理都需要开一个单独的代理进程,它要保护内网的Web服务器、数据库服务器、文件服务器、邮件服务器及业务程序等,就需要建立一个个的服务代理,以处理客户端的访问请求。这样,应用代理的处理延迟会很大,内网用户的正常Web访问不能及时得到响应。

3.状态检测技术

我们知道,Internet上传输的数据都必须遵循TCP/IP协议,根据TCP协议,每个可靠连接的建立需要经过“客户端同步请求”、“服务器应答”、“客户端再应答”三个阶段,我们最常用到的Web浏览、文件下载、收发邮件等都要经过这三个阶段。这反映出数据包并不是独立的,而是前后之间有着密切的状态联系,基于这种状态变化,引出了状态检测技术。

状态检测防火墙摒弃了包过滤防火墙仅考查数据包的IP地址等几个参数,而不关心数据包连接状态变化的缺点,在防火墙的核心部分建立状态连接表,并将进出网络的数据当成一个个的会话,利用状态表跟踪每一个会话状态。状态监测对每一个包的检查不仅根据规则表,更考虑了数据包是否符合会话所处的状态,因此提供了完整的对传输层的控制能力。

网关防火墙的一个挑战就是能处理的流量,状态检测技术在大大提高安全防范能力的同时也改进了流量处理速度。状态检测技术采用了一系列优化技术,使防火墙性能大幅度提升,能应用在各类网络环境中,尤其是在一些规则复杂的大型网络上。

1.2.2 防火墙发展的新技术趋势

1.高性能

随着运营商、金融、大型企业的数据中心等用户对安全的关注,对防火墙高吞吐量、高性能连接处理能力的要求越来越迫切。对动辄十吉字节,几十吉字节的流量来说,传统的硬件架构已无法满足用户的需求,因此多核处理,ASIC加速芯片处理等技术纷纷登场。

2.适用于IPv4/6环境

随着IPv6的推广与普及,一方面,现有的信息安全产品必须适应IPv6的网络环境;另一方面,随着IPv6使用时间的延伸,新的安全问题将逐渐暴露,新的安全防护技术也将逐渐产生。虽然在纯IPv6网络中,IPv6端与端的IPSec以及最终摆脱NAT的发展构架对防火墙产品的冲击影响较大,但在IPv4/6共存阶段,针对不同过渡协议混杂的背景,防火墙产品还是有着技术发展和实现的需求。

3.应用层深度控制技术

随着网络大量新业务的推出,网络带宽被越来越多的业务流量占据。防火墙用户对其业务的关注度越来越高,在此环境下,基于深度控制技术的防火墙开始越来越多被提及。此类防火墙的特点是基于用户的策略配置,业务展现友好,具有强大的应用层控制能力和内容分析能力。

4.虚拟化技术

随着云时代的到来,各类云服务逐渐进入普通大众的生活。伴随着云服务而来的也有新的风险及机遇。防火墙作为基础的网络安全产品,伴随着云技术的发展,作为云服务平台的虚拟化技术也在高端防火墙产品中出现。

1.2.3 其他新型防火墙

1.Web应用防火墙

Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

Web应用防火墙具有以下四大个方面的功能。(1)审计设备:用来截获所有HTTP数据或者仅仅满足某些规则的会话。(2)访问控制设备:用来控制对Web应用的访问,既包括主动安全模式也包括被动安全模式。(3)架构/网络设计工具:当运行在反向代理模式,它们被用来分配职能、集中控制、虚拟基础结构等。(4)Web应用加固工具:这些功能增强被保护Web应用的安全性,它不仅能够屏蔽Web应用固有弱点,而且能够保护Web应用编程错误导致的安全隐患。

2.数据库防火墙

数据库防火墙技术是针对关系型数据库保护需求应运而生的一种数据库安全主动防御技术,数据库防火墙部署于应用服务器和数据库之间。用户必须通过该类防火墙才能对数据库进行访问或管理。

数据库防火墙的特点如下所述。(1)屏蔽直接访问数据库的通道:数据库防火墙部署介于数据库服务器和应用服务器之间,屏蔽直接访问的通道,防止数据库隐通道对数据库的攻击。(2)攻击保护:实时检测用户对数据库进行的SQL注入和缓冲区溢出攻击,并报警或者阻止攻击行为,同时详细审计攻击操作发生的时间、来源 IP、登录数据库的用户名、攻击代码等详细信息。(3)细粒度权限控制:按照SQL操作类型包括Select、Insert、Update、Delete,对象拥有者,以及基于表、视图对象、列进行权限控制。(4)安全审计:系统能够审计对数据库服务器的访问情况,包括用户名、程序名、IP地址、请求的数据库、连接建立的时间、连接断开的时间、通信量大小、执行结果等信息,并提供灵活的回放日志查询分析功能,可以生成报表。

3.工业控制防火墙

随着信息技术的迅猛发展,信息化在企业中的应用取得了飞速发展,互联网技术的出现,使得工业控制网络中大量采用通用TCP/IP技术,ICS网络和企业管理网的联系越来越紧密。另一方面,传统工业控制系统采用专用的硬件、软件和通信协议,设计上基本没有考虑互联互通所必须考虑的通信安全问题,工控系统的安全隐患问题日益严峻。

工业控制防火墙的特点所下所述。(1)支持专用工业通信协议:与常规防火墙不同的是,工业防火墙是基于内置工业通信协议的防护模式,由于工业通信协议通常是基于常规TCP/IP在应用层的高级开发,所以该防火墙不仅是在端口上的防护,更重要的是基于应用层上数据包深度检查,为工业通信提供独特的、工业级的专业隔离防护。(2)工业型设计:硬件安装设计、环境温度要求、功耗散热、体积接口等方面需要符合工业要求。(3)实时报警识别:由于工业生产的特殊性,任何非法的(未被允许的)访问都需要产生明确的、有效的、实时的报警信息,从而故障问题会在原始发生区域被迅速发现和正确解决,防止故障对生产网络的扩散影响。

第2章 防火墙产品的技术及实现

2.1 防火墙接入方式

防火墙接入方式多种多样,依据不同的网络环境选择最适合的接入方式。目前主要接入方式有交换模式、路由模式、混合模式、链路捆绑模式、拨号模式等,下面将分别进行介绍。

2.1.1 交换模式

在交换模式下,防火墙所有接口都为交换接口。对于同一 VLAN 的数据包在转发时不作任何改动,包括IP和MAC地址,直接把包转发出去。

当网络已经建立并成熟运行,防火墙的接入是为了增强现有网络的防御能力时,一般采用此接入模式。因为在这种模式下接入防火墙,对网络通信造成的影响最少,能够最小限度改动网络节点的网络属性(网络拓扑结构、网络设备地址等)。

在交换模式下通信,防火墙应该能够很好地支持VLAN,交换接口的工作模式可以支持ACCESS和TRUNK。对于包的转发,防火墙将不改变通信数据包的包头信息,避免各个防火区域中应用设备物理地址的刷新。

交换模式拓扑举例如图2-1-1所示。

在交换模式中,防火墙能够对协议进行深层次分析并且能够识别、处理各类封装格式,如802.1Q、QinQ、MPLS 等,以便能够在复杂的网络环境下进行更灵活的接入,处理更多的情况。下面介绍防火墙如何处理各类封装格式。图2-1-1 交换模式接入方式

1.对802.1Q封装格式的处理

IEEE802.1Q俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。

IEEE802.1Q所附加的VLAN识别信息位于数据帧中“发送源MAC地址”与“类别域(Type Field)”之间。具体内容为2字节的TPID和2字节的TCI,共计4字节。在数据帧中添加了4字节的内容,数据帧上的CRC是插入TPID、TCI后对包括它们在内的整个数据帧重新计算后所得的值。当数据帧从防火墙接口转发出去时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。TPID 的值固定为0x8100。防火墙通过 TPID 来确定数据帧内附加了基于IEEE802.1Q的VLAN信息。实际的VLAN ID是由TCI中12位的VLAN标识判断。

图2-1-2为数据包标准格式与封装了802.1Q标签的包格式对比。图2-1-2 数据帧标准格式与封装802.1Q格式

2.对QinQ的处理

在IEEE802.1Q定义的VLAN Tag域中,只有12位用于表示VLAN ID,所以设备最多可以支持4094个VLAN。但在实际应用中,尤其是在城域网中,需要大量的VLAN来隔离用户,4094个VLAN远远不能满足需求,于是QinQ技术应运而生。

QinQ报文格式如图2-1-3所示。图2-1-3 QinQ报文格式

防火墙开启端口的QinQ功能后,当该端口接收到报文,无论报文是否带有VLAN 标签,防火墙都会为该报文打上本端口ACCESS VLAN的VLAN标签,如果是TRUNK口则会打上NATIVEVLAN的VLAN标签。这样,如果接收到的是已经带有 VLAN 标签的报文,该报文就成为双标签的报文;如果接收到的是不带VLAN标签的报文,该报文就成为带有端口默认VLAN标签的报文。

3.对MPLS报文的处理

MPLS(多协议标签交换)独立于第二层和第三层协议,提供了一种方式,将IP地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。

MPLS报文格式如图2-1-4所示。图2-1-4 MPLS报文格式

当防火墙工作在透明模式,开启MPLS穿透功能时,对通过防火墙的MPLS报文进行安全策略控制;关闭MPLS穿透功能时,防火墙将直接转发MPLS报文。当防火墙工作在路由模式,直接丢弃报文。

2.1.2 路由模式

在这种模式下,防火墙类似于一台路由器转发数据包,将接收到数据包的源MAC地址替换为相应接口的MAC地址,然后转发。该模式适用于每个区域都不在同一个网段的情况。和路由器一样,防火墙的每个接口均要根据区域规划配置IP地址。同时,防火墙可以在设置了IP的VLAN之间进行路由转发。

路由模式拓扑举例如图2-1-5所示。图2-1-5 路由模式接入模式

2.1.3 混合模式

这种模式是路由模式和交换模式的结合。

在很多用户网络中,网络基础设施的建设是先于网络安全建设进行的,当用户打算进行网络安全建设时,往往会发现由于初期的网络设计不周全而导致一些关键应用是依赖于网络拓扑的。因此在对这些关键应用进行安全防护时,安全设备必须采用交换模式,特别是透明模式接入,而对另外一些应用可能就要采用路由模式接入,这样在同一个网关设备上就需要透明模式和路由模式共存。

透明模式支持把同一网段的网络区域划分为不同的防火区,主要适用于基于业务的IP分配方案,可以将同一应用业务的服务器和客户机通过同一网段连接起来,以提高整体网络的通信性能。路由模式支持将路由信息转发到其他防火区,减少防火墙应用带来的网络管理的工作量。网络卫士防火墙路由模式提供完整的静态路由功能,对于中小规模的内部网络完全可以代替内网路由器。如果这两种工作模式不能混合在一起同时工作,用户网络将会出现由于被割裂而无法实施安全设备接入的困局。同时,防火墙支持NAT工作模式。防火墙甚至可以提供路由+透明+NAT 混合模式,可以保证不会因为引入安全需求而破坏用户现有网络的完整性,防火墙可以友好地支持网络扩展,方便防火墙接入各种复杂的网络环境,以满足用户网络多样化的部署需求。

混合模式拓扑举例如图2-1-6所示。图2-1-6 混合模式接入模式

2.1.4 链路捆绑模式

链路捆绑是指将多个物理端口捆绑在一起,成为一个逻辑端口,以实现出/入流量在各成员端口中的负荷分担。逻辑链路的带宽增加了大约n-1倍(n为聚合的路数)。聚合后,可靠性大大提高,因为n条链路中只要有一条可以正常工作,则这个链路就可以工作。链路聚合还可以实现负载均衡。防火墙可以根据用户配置的端口负荷分担策略决定报文从哪一个成员端口发送到对端的交换机。当防火墙检测到其中一个成员端口的链路发生故障时,就停止在此端口发送报文,并根据负荷分担策略在剩下链路中重新计算报文发送的端口,故障端口恢复后再次重新计算报文发送端口。聚合链路可以通过预先设置的负载均衡算法将流量分配给聚合链路内不同的物理接口,实现链路级的负载均衡功能,也可防止单条链路转发速率过低而出现丢包的现象。防火墙上参与聚合的物理接口具备相同的属性,如相同的速度、单双工模式等。

使用链路捆绑接入模式对网络在增加链路带宽、实现链路传输弹性和冗余等方面是很有效的。

2.2 访问控制与地址转换

2.2.1 访问控制技术

1.访问控制概述

1)定义

访问控制是针对越权使用资源的防御措施,是网络安全防范和保护的主要策略,主要任务是保证网络资源不被非法使用和非常访问,也是保证网络安全的核心策略之一。

2)基本概念

访问控制涉及三个基本概念,即主体、客体和访问授权。(1)主体:它是一个主动的实体,包括用户、用户组、终端、主机或一个应用,主体可以访问客体。(2)客体:它是一个被动的实体,对客体的访问要受控。它可以是字节、字段、记录、程序、文件,或者是一个处理器、存储器、网络接点等。(3)授权访问:指主体访问客体的允许,授权访问对每一对主体和客体来说是给定的。例如,授权访问有读写、执行,读写客体是直接进行的,而执行是搜索文件、执行文件。对用户的访问授权是由系统的安全策略决定的。

在一个访问控制系统中,区别主体与客体很重要。首先由主体发起访问客体的操作,该操作根据系统的授权被允许或被拒绝。另外,主体与客体的关系是相对的,当一个主体受到另一主体的访问,成为访问目标时,该主体便成为客体。按用户身份及其所归属的某预定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用。访问控制通常用于系统管理员控制用户对服务器、目录、文件等网络资源的访问。

2.访问控制常用技术

访问控制包括入网访问控制、网络权限控制、目录级控制以及属性控制等多种手段。

1)入网访问控制

入网访问控制为网络访问提供了第一层访问控制。它控制哪些用户能够登录到服务器并获取网络资源,控制准许用户入网的时间和准许他们在哪台工作站入网。用户的入网访问控制可分为三个步骤:用户名的识别与验证、用户口令的识别与验证、用户账号的默认限制检查。三道关卡中只要任何一关未过,该用户便不能进入该网络。对网络用户的用户名和口令进行验证是防止非法访问的第一道防线。为保证口令的安全性,用户口令不能显示在显示屏上,口令具有复杂度要求,比如,长度应不少于6个字符,口令字符最好是数字、字母和其他字符的混合等,用户口令必须保密存储或传输等。

用户还可采用一次性用户口令,也可用便携式验证器(如智能卡)来验证用户的身份。网络管理员可以控制和限制普通用户的账号使用、访问网络的时间和方式。

2)权限控制

网络的权限控制是针对网络非法操作所提出的一种安全保护措施。用户和用户组被赋予一定的权限。网络控制用户和用户组可以访问哪些目录、子目录、文件和其他资源。

3)目录级安全控制

网络应允许授权用户对目录、文件、设备的访问。用户在目录一级指定的权限对所有文件和子目录有效,用户还可进一步指定对目录下的子目录和文件的权限。对目录和文件的访问权限一般有八种:系统管理员权限、读权限、写权限、创建权限、删除权限、修改权限、文件查找权限、访问控制权限。用户对文件或目标的有效权限取决于以下两个因素:用户的受托者指派、用户所在组的受托者指派、继承权限屏蔽取消的用户权限。一个网络管理员应当为用户指定适当的访问权限,这些访问权限控制着用户对服务器的访问。八种访问权限的有效组合可以让用户有效地完成工作,同时又能有效地控制用户对服务器资源的访问,从而加强了网络和服务器的安全性。

4)属性安全控制

网络系统管理员应给文件、目录等指定访问属性。属性安全在权限安全的基础上提供更进一步的安全性。网络上的资源都应预先标出一组安全属性。用户对网络资源的访问权限对应一张访问控制表,描述用户对网络资源的访问能力。属性设置可以覆盖已经指定的任何受托者指派和有效权限。属性往往能控制以下几个方面的权限:向某个文件写数据、复制一个文件、删除目录或文件、查看目录和文件、执行文件、隐含文件、共享、系统属性等。

5)服务器安全控制

网络允许在服务器控制台上执行一系列操作。用户使用控制台可以装载和卸载模块,可以安装和删除软件等操作。网络服务器的安全控制包括可以设置口令锁定服务器控制台,以防止非法用户修改、删除重要信息或破坏数据;可以设定服务器登录时间限制、非法访问者检测和关闭的时间间隔。

3.访问控制策略

1)自主访问控制(Discretionary Access Control,DAC)

自主访问控制又称为随意访问控制。DAC是在确认主体身份及所属组的基础上,根据访问者的身份和授权决定访问模式,对访问进行限定的一种控制策略。所谓自主,是指具有被授予某种访问权力的用户能够自己决定是否将访问控制权限的一部分授予其他用户或从其他用户那里收回授予的访问权限。使用这种控制方法,用户或应用可任意在系统中规定谁可以访问其资源,这样,用户或用户进程就可有选择地与其他用户共享资源。它是一种对单独用户执行访问控制的过程和措施。

2)强制访问控制(Mandatory Access Control,MAC)

强制访问控制依据用户和数据文件的安全级别来决定用户是否有对该文件的访问权限。在强制访问控制中,每个用户及文件都被赋予一定的安全级别,用户不能改变自身或任何客体的安全级别,只有系统安全员可以确定用户和组的访问权限。系统通过比较用户和访问文件的安全级别来决定用户是否可以访问该文件。此外,强制访问控制不允许一个进程生成共享文件,从而访止进程通过共享文件将信息从一个进程传到另一进程。但是强制访问控制由于过于偏重保密性,对其他方面如系统连续工作能力、授权的可管理性等考虑不足,造成管理不便,灵活性差。

3)基于角色的访问控制(Ro1e-Based Access Control,RBAC)

角色访问策略是根据用户在系统中表现的活动性质而定的,角色是访问权限的集合,用户通过赋予不同的角色而获得角色所拥有的访问权限。角色访问策略是一种有效而灵活的安全措施。通过定义模型各个部分,可以实现DAC和MAC所要求的控制策略。

2.2.2 地址转换技术

1.地址转换概述

1)定义

NAT(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为公有(合法)IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。

私网IP地址是指内部网络或主机的IP地址,公网IP地址是指在互联网上全球唯一的IP地址。RFC 1918为私有网络预留出了以下三个IP地址块。

A类:10.0.0.0~10.255.255.255

B类:172.16.0.0~172.31.255.255

C类:192.168.0.0~192.168.255.255

上述三个范围内的地址不会在互联网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。

NAT 最初的设计目的是用于实现私有网络访问公共网络的功能,后扩展到实现任意两个网络间进行访问时的地址转换应用,这里将这两个网络分别称为内部网络(内网)和外部网络(外网),通常私网为内部网络,公网为外部网络。

2)作用(1)解决IPv4地址不足问题

互联网发展至今,广泛使用的地址格式是IPv4。IPv4使用32位表32达一个地址,地址最大范围就是2,约为43亿。以IP创始初期可被联网的设备来看,这样的一个空间已经很大,很难被短时间用完。然而,事实远远超出人们的想象,计算机网络在此后几十年里迅速壮大,网络终端数量呈爆炸式增长,加上互联网数字分配机构(IANA)向超大型企业/组织分配的IP地址浪费严重,很多被分配出去的地址没有被真实使用,地址消耗很快。因此网络地址转换(NAT)开始被用来减少IPv4地址的消耗,延长IPv4的生命周期。(2)隐藏企业的私有网络,并保护内网主机

使用网络地址转换(NAT)后,内网主机使用私网地址,而对外网却显示一个或多个公网地址,内网主机不直接暴露在公网上,避免被扫描探测和直接访问,从而增强网络的安全性。

3)优缺点

地址转换的优点在于,在为内部网络主机提供“隐私”保护的前提下,实现了内部网络的主机通过该功能访问外部网络的资源,但它也有一些缺点:(1)由于需要对数据报文进行IP地址的转换,涉及IP地址数据报文的报头不能被加密。在应用协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的FTP连接,否则FTP协议的port命令不能被正确转换。(2)网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其他网络,则很难指出究竟哪一台主机是恶意的,因为主机的IP地址被屏蔽了。

2.地址转换实现

基本网络地址转换(Basic NAT)是一种将一组IP地址映射到另一组IP地址的技术,这对终端用户来说是透明的。网络地址端口转换(NAPT)是一种将群体网络地址及其对应TCP/UDP端口翻译成单个网络地址及其对应TCP/UDP端口的方法。这两种操作,即传统NAT提供了一种机制,将只有私有地址的内部领域连接到有全球唯一注册地址的外部领域。图2-2-1描述了一个基本的NAT应用。图2-2-1 地址转换的基本过程(1)内网用户主机(192.168.1.3)向外网服务器(1.1.1.2)发送的IP报文通过NAT设备。(2)NAT设备查看报头内容,发现该报文是发往外网的,将其源IP地址字段的私网地址192.168.1.3转换成一个可在外网上选路的公网地址20.1.1.1,并将该报文发送给外网服务器,同时在NAT设备的网络地址转换表中记录这一映射。(3)外网服务器给内网用户发送的应答报文(其初始目的IP地址为20.1.1.1)到达NAT设备后,NAT设备再次查看报头内容,然后查找当前网络地址转换表的记录,用内网私有地址192.168.1.3替换初始的目的IP地址。

上述的NAT过程对终端(如图中的Host和Server)来说是透明的。对外网服务器而言,它认为内网用户主机的IP地址就是20.1.1.1,并不知道有192.168.1.3 这个地址。因此,隐藏企业的私有网络。

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用Overload。

1)静态地址转换

静态地址转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

2)动态地址转换

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上外网的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式。

3)端口多路复用

端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换(Port Address Translation,PAT)。采用端口多路复用方式,内部网络的所有主机均可共享一个合法外部IP地址,实现对外网的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自外网的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

3.地址转换技术应用

1)Easy IP

Easy IP功能是指进行地址转换时,直接使用接口的外网IP地址作为转换后的源地址,能够最大程度的节省IP地址资源。它也可以利用访问控制列表控制哪些内部地址可以进行地址转换。

2)NAPT(Network Address Port Translation)

NAPT(网络地址端口转换)是端口多路复用地址转换的一种变形,它允许多个内部地址映射到同一个公有地址上,也可称之为“多对一地址转换”。NAPT同时映射IP地址和端口号:来自不同内部地址的数据报文的源地址可以映射到同一外部地址,但它们的端口号被转换为该地址的不同端口号,因而仍然能够共享同一地址,也就是“私网IP地址+端口号”与“公网IP地址+端口号”之间的转换。

如图2-2-2所示,三个带有内部地址的数据报文到达NAT设备,其中报文1和报文2来自同一个内部地址,但有不同的源端口号,报文1和报文3来自不同的内部地址,但具有相同的源端口号。通过NAPT映射,三个数据报的源IP地址都被转换到同一个外部地址,但每个数据报都被赋予了不同的源端口号,因而仍保留了报文之间的区别。当各报文的回应报文到达时,NAT 设备仍能够根据回应报文的目的IP地址和目的端口号来区别该报文应转发到的内部主机。

采用NAPT可以更加充分地利用IP地址资源,实现更多内部网络主机对外部网络的同时访问。目前,NAPT支持两种不同的地址转换模式:图2-2-2 NAPT基本原理示意图

1)不关心对端地址和端口转换模式

在该模式下,NAT 设备通过建立三元组(源地址、源端口号、协议类型)表项来进行地址分配和报文过滤。即只要是来自相同源地址和源端口号的报文,不论其目的地址是否相同,通过 NAPT 映射后,其源地址和源端口号都被转换为同一个外部地址和端口号,并且NAT设备允许外部网络的主机通过该转换后的地址和端口来访问这些内部网络的主机。这种模式可以很好地支持位于不同NAT设备之后的主机间进行互访。

2)关心对端地址和端口转换模式

在该模式下,NAT 设备通过建立五元组(源地址、源端口号、协议类型、目的地址、目的端口号)表项为依据进行地址分配和报文过滤。即对于来自相同源地址和源端口号的报文,若其目的地址和目的端口号不同,通过 NAPT 映射后,相同的源地址和源端口号将被转换为不同的外部地址和端口号,并且 NAT设备只允许这些目的地址对应的外部网络主机通过该转换后的地址和端口来访问这些内部网络的主机。这种模式安全性好,但是不便位于不同NAT设备之后的主机间进行互访。

4.内部服务器

NAT 隐藏了内部网络的结构,具有“屏蔽”内部主机的作用,但是在实际应用中,可能需要给外部网络提供一个访问内网主机的机会,如给外部网络提供一台Web服务器,或是一台FTP服务器。NAT设备提供的内部服务器功能,就是通过静态配置“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,实现公网IP地址到私网IP地的“反向”转换。例如,可以将20.1.1.1:8080配置为内网某Web服务器的外部网络地址和端口号,供外部网络访问。

如图2-2-3所示,外部网络用户访问内部网络服务器的数据报文经过 NAT设备时,NAT 设备根据报文的目的地址查找地址转换表项,将访问内部服务器请求报文的目的IP地址和端口号转换成内部服务器的私有IP地址和端口号。当内部服务器回应该报文时,NAT 设备再根据已有的地址映射关系将回应报文的源IP地址和端口号转换成公网IP地址和端口号。图2-2-3 内部服务器基本原理示意图

5.DNS mapping

在一般情况下,DNS服务器和访问私网服务器的用户都在公网,通过在NAT设备的公网接口配置内部服务器,可以将公网地址、端口等信息映射到私网内的服务器上,使得公网用户可以通过内部服务器的域名或公网地址来访问内部服务器。但是,如图2-2-4所示,如果DNS服务器在公网,私网的用户希望通过域名来访问私网的Web服务器,则会由于DNS服务器向私网用户发送的响应报文中包含的是私网服务器的公网地址,导致收到响应报文的私网用户无法利用域名访问私网服务器。通过在设备上配置DNS Mapping可以解决该问题。图2-2-4 NAT DNS Mapping工作示意图

DNS Mapping是通过配置“域名+公网IP地址+公网端口号+协议类型”的映射表,建立内部服务器域名与内部服务器公网信息的对应关系。在配置了NAT的接口上,设备检查接收到的DNS响应报文,根据报文中的域名查找用户配置的DNS Mapping映射表,并根据表项内的“公网地址+公网端口+协议类型”信息查找内部服务器地址映射表中该信息对应的私网地址,替换DNS查询结果中的公网地址。这样,私网用户收到的DNS响应报文中就包含了要访问的内部服务器的私网地址,也就能够使用内部服务器域名访问同一私网内的内部服务器。

6.NAT支持的特殊协议

NAT不仅实现了一般的地址转换功能,同时提供了完善的地址转换应用级网关(Application Layer Gateway,ALG)机制,使其可以支持一些特殊的应用协议,而不需要对NAT平台进行任何的修改,具有良好的可扩充性。这些特殊协议的报文载荷里携带了地址或端口信息,该信息也可能需要进行地址转换。可支持的特殊协议包括文件传输协议(File Transfer Protocol,FTP)、点到点隧道协议(Point-to-Point Tunneling Protocol,PPTP)、互联网控制消息协议(Internet Control Message Protocol,ICMP)、域名系统(Domain Name System,DNS)、Internet定位服务(Internet Locator Service,ILS)、实时流协议(Real Time Streaming Protocol,RTSP)、会话发起协议(Session Initiation Protocol,H.323、SIP)、基于TCP/IP 的网络基本输入输出系统(NetBIOS over TCP/IP,NetMeeting 3.01、NBT)等。

2.3应用层控制

本节对几种常用的应用层协议的通信过程进行简单分析,并对常见的协议识别方法进行简单的说明。

2.3.1应用层协议分析

本节主要对HTTP协议、文件传输协议(File Transfer Protocol,FTP)协议、SMTP协议和邮件协议3(Post Office Protocol Version 3,POP3)协议的通信过程进行简单的分析。

1.HTTP协议

HTTP是一个属于应用层的面向对象的协议,它是基于传输控制协议(Transfer Control Protocol,TCP)的可靠传输,采用的是客户端/服务器的工作模式。

在HTTP通信过程中,首先由客户端向服务器发起建立连接的请求,通过TCP三次握手来完成,如图2-3-1所示。

然后客户端向服务器发出请求,告诉服务器想得到的信息。服务器通过响应返回客户端需要的信息,最后通过TCP四次握手关闭连接,如图2-3-2所示。

从而完成一次基本的通信过程。

在该通信过程中,HTTP请求报文中的请求方法字段表示了对所请求资源的操作类型,通常包括GET、OPTION、HEAD、POST、TRACE、CONNECT、DELETE和PUT;URL(Uniform Resource Locator)是统一资源定位符,指出了请求资源的路径;头标题域用来说明浏览器、服务器或者报文主体的一些信息。图2-3-1 TCP三次握手过程图2-3-2 TCP关闭连接过程

HTTP响应报文,其中一部分内容跟请求报文一样,不一样的部分主要是状态码和解释状态码的短语。状态码是表示当服务器收到客户端的请求报文之后给出的一个响应状态,表示请求是否被理解或被满足。解释状态的短语是对前面状态码的进一步说明。

2.FTP协议

FTP是一种文件传输协议,它支持两种模式:一种是Standard(Active主动模式),一种是 Passive(PASV 被动模式)。Standard 模式是 FTP 的客户端发送PORT命令到FTP服务器。Passive模式是FTP的客户端发送PASV命令到FTP服务器。两种方式中数据和控制连接都是分开传输的,唯一的区别在于主动模式由服务器端发起数据链路的连接请求,而被动模式由客户端发起数据链路的连接请求。

如图2-3-3所示,它表示了FTP一个完整的通信过程。从图中可以看到FTP通信过程中它的控制链路和数据链路不是在同一个端口进行通信的,而是在两个不同的端口独立进行通信。图2-3-3 FTP连接图

首先由客户端向服务器发起控制连接的请求,当和服务器建立控制连接成功之后,在主动模式的客户端将会发起一个端口号给服务器,告诉当前这次传输服务器所使用的数据传输端口,服务器收到这个信息后就向客户端发起数据连接请求,成功后进行当前的这次数据传输。在当前传输完成之后,该数据链路就被拆除了,如果客户端进行一次新的传输,则向服务器发送一个新的端口,重新建立连接。在整个过程中,控制链路的连接一直都存在,直到 FTP 的整个通信过程结束,而数据链路每次输出就需要建立一次新的连接。而被动模式过程和上述通信过程差不多,只是由客户端发起数据链路的建立请求。

在FTP 交互的过程中,客户端通过命令字来告诉服务器相关的信息,常用的访问控制命令有USER、PASS、CWD、QUIT等8种;传输参数命令有PORT、PASV、TRPE、STRU、MODE 5种;FTP 服务命令有 RETR、STOR、LIST、ABOR等12种。服务器则通过一些状态码告诉客户端当前服务器的反馈状态。

3.SMTP协议

SMTP是一种可靠且有效的电子邮件传输协议。SMTP是建模在FTP文件传输服务上的一种邮件服务,SMTP服务器在默认端口25上监听客户请求,主要用于传输系统之间的邮件信息。

SMTP 交互过程比较简单,首先客户端向服务器的SMTP 服务端口发起请求,通过三次握手建立连接。然后服务器返回220的状态码,告诉客户端当前已经准备好服务。客户端收到该状态码,向服务器发出HELO或者EHLO的命令,告诉服务器该客户端需要的服务类型,其中HELO是默认的SMTP服务,EHLO要求除了默认的服务之外还要支持扩展服务。当服务器告诉客户端它所支持的服务之后,双方用命令字和状态码进行交互。

SMTP常用的命令字及其功能如表2-3-1所示。表2-3-1 SMTP常用的命令字及其功能

SMTP协议中常用到的状态码有:220表示服务就绪、221表示服务关闭传输信道、250表示要求的邮件操作完成、550表示要求的邮件操作未完成邮箱目前不可以用、354表示开始邮件输入以结束。

4.POP3协议

POP3全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持客户端远程管理在服务器上的电子邮件。适用于C/S结构脱机模型的电子邮件协议,脱机模型即不能在线操作。POP 不支持对服务器邮件进行扩展操作,此过程需要更高级的IMAP4协议来完成。支持POP协议使用ASCII码来传输数据消息,这些数据消息可以是指令,也可以是应答。

POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用 ASCII 码表示。服务器响应是由一个单独的命令行组成或多个命令行组成,响应第一行以ASCII文本+OK或-ERR(OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。

在协议中有三种状态:认证状态,处理状态和更新状态。当客户机与服务器建立连接时,客户机向服务器发送自己身份(这里指的是账户和密码)并由服务器成功确认,即客户端由认可状态转入处理状态;在完成列出未读邮件等相应的操作后客户端发出quit命令,退出处理状态,进入更新状态;开始下载未阅读过的邮件到计算机本地之后,最后重返认证状态,确认身份后,断开与服务器的连接。具体原理如下:

等待连接身份确认quit命令

重返认证状态。

2.3.2 基本协议识别方法

协议识别就是通过侦查目标网络的数据流,经过一定的分析后确定该数据流使用的协议类型。本节对几种协议识别的方法进行简单的说明。

1.基于端口的协议识别

基于端口识别技术是比较常见的识别方法,它利用的是不同协议使用不同端口号的特点来进行识别。传统的应用层协议识别算法只利用端口号一维信息,它根据各个应用层协议在IANA中注册的端口号来识别协议。例如,某个TCP流使用了端口号81、8080或者443,则将其标记为Web流量。

这种识别方法有一个默认的前提,即操作系统和应用软件都是在假定严格遵守注册端口规范的情况下编写的。在协议规范公开的同时已经设定好该协议默认使用的通信端口并且假定使用者都会遵守这些规范。因此,该算法所能识别的协议数量为在IANA 中注册端口号的协议的数量,但是由于新出现的协议都不在IANA 中注册其端口号,算法所能识别的协议在总协议数量中所占的比重越来越少。

在协议识别的准确性方面,随着网络协议的发展,这种协议识别方法出现了越来越多的问题。主要表现在:(1)不适用固定通信端口进行通信。例如,P2P软件下载(BT、电驴等),很多客户端为了避免被禁止使用而采用了动态端口设定的方式。(2)复用公开端口进行私有协议通信。如QQ使用80端口并且数据包中没有明显特征字串。(3)采用已知公开协议的传输工具。比如迅雷使用80端口并使用HTTP协议进行传输。

2.模式匹配算法的协议识别

目前模式匹配方式主要分为单模式匹配和多模式匹配。单模式匹配是指一次只能在文本串中对一个模式串进行匹配;多模式匹配是指可同时对多个模式串进行匹配。

1)单模式匹配算法

单模式匹配算法目前发展得已经比较成熟,算法也很多,不同的算法专注的性能也不太一样。

• KMP算法

KMP 算法是1977年由 Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt (V.R.Pratt)三人设计的线性时间字符串匹配算法。这个算法不用计算变迁函数δ,匹配时间为 Θ(n),只用辅助函数 π[1,m],它是在Θ(m)时间内,根据模式预先计算出来的。数组π使得我们可以按需要“现场”有效计算(在平摊意义上来说)变迁函数δ。粗略地说,对任意状态q=0,1,…,m和任意字符a∈Σ,π[q]的值包含了与a无关但在计算δ(q,a)时需要的信息。由于数组π只有m个元素,而δ有Θ(m∣Σ∣)个值,所以通过预先计算π而不是δ,使得时间减少了一个Σ因子。[1]

KMP 算法是通过分析模式字符串,预先计算每个位置发生不匹配时所需GOTO的下一个比较位置,整理出来一个next数组,然后在上面的算法中使用。

• BM算法

BM算法是最简单的单模式匹配算法,通过一个二重循环来求解单模式串匹配问题,不需要任何预处理过程,并且除了模式串和目标串之外不需要额外数据结构。其过程为开始时将待比较的主串与模式串的左端对齐,然后从左向右一次开始比较。当在某次比较中发现字符不匹配时,该算法采用两个启发性的规则,即坏字符规则和好后缀规则来决定模式串应该移动的字符数。其特点直观简单,但设计多次回溯,算法效率低。

• BF算法

BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。

首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。

该算法最坏情况下要进行M(N-M+1)次比较,时间复杂度为0(MN)。

举例说明:

S: ababcababa

T: ababa

BF算法匹配的步骤如下:

2)多模式匹配算法

多模式匹配算法在很多领域都有重要应用,如拼写检查、语言翻译、数据压缩、搜索引擎、网络入侵检测、计算机病毒特征码匹配等,这里就介绍AC多模式匹配算法。

AC算法的核心思想是构造词典的自动机(可以使用trie树来实现),其算法复杂度是0(m+k+z),m是文本长度,k是所有pattern长度之和,z是字符串中出现pattern的个数。

举例子来说,Pattern P={he;she;his;hers},AC算法将建立如图2-3-4所示的字典树(或者成为keyword tree)。图2-3-4 字典树建立示例

其中 node 中有数字的表示在词典(pattern)中,每一条边表示一个字符,同一个节点指出的不同边拥有不同的字符标签。字典树的构建相当简单,只需要逐个 pattern 插入就可以了(当然有其他改进的算法和改进的数据结构,如double-trie)(1)foreach pattern in P{p1,p2,…,pn}(2)start at the Root(ⅰ)如果从根节点出发的路径在Pi结束之前结束,创建为Pi中每一个没有结束的字符创建节点。否则继续搜索;(ⅱ)创建Pi的终止节点,设置唯一标识。

一旦字典树构建结束,查找过程跟我们平时查字典的过程是一样的,从根节点一步步向下查,直到找到该词或者没有节点为止。但是,从以上过程我们发现其复杂度是O(mk),这显然不是想要的结果。因此,我们要建立一个自动机:

自动机由状态(states)和行动(action)组成,在本例中:

State:字典树的节点,初始状态为0

Action:action由3个函数决定:(1)goto 函数 g(q,a),它表示如果当前状态是 q,输入输入字符是 a,那么下一个状态是g(q,a)。(ⅰ)如果边edge(q,r)标记为a,那么g(q,a)=r(ⅱ)如果a不输入0状态的出边g(0,a)=0,g(q,a)=$(空)(2)failure函数f(q),对q不为0的状态,failure函数表示在状态q失配,f(q)是状态机中的一个节点,标记为 pattern 中某个 pattern 恰当的最长后缀(如图2-3-5中的he)。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载