崔 桐,张江涛,郭培胜,赵克俭
(中国电子科技集团公司第28研究所,南京 210007)
一种基于协议重构的内外网逻辑隔离方法
崔 桐,张江涛,郭培胜,赵克俭
(中国电子科技集团公司第28研究所,南京 210007)
提出了一种基于协议重构的内外网逻辑隔离新方法,通过重构现有公共通信协议,形成专有协议,实现内网专有用户与公共用户隔离。在内网中,公共用户能访问外网,而专有用户与外网“逻辑隔离”。相对于物理隔离方法,这种方法在保证内网安全性能的前提下,满足了内网用户对外信息的需求,提高了信息交流的灵活度;相对于传统协议隔离方法,这种方法投入小、技术风险低,实用性更强。
网络逻辑隔离;协议重构;TCP/IP协议
当前,网络应用已渗透于社会的各个领域,网络安全问题日渐突出。对需要绝对保证安全的内部网络而言,采用物理隔离[1]是一种通用的手段,这种方法是基于内外网系统互不连通条件来保证安全,无法满足内网用户对外网的实时信息需求,且一旦隔离被打破,内网信息又容易被窃取。
协议隔离是一种结合协议控制安全机制,保障不同安全等级网络间数据交换的有效方法。目前,逻辑隔离主要功能是通过具有防火墙功能的逻辑隔离器[2,3]实现的,逻辑隔离器是一种不同网络间的隔离部件,被隔离的两端仍然存在物理上数据通道连线,但通过技术手段保证被隔离的两端没有数据通道,即逻辑上隔离。一般使用协议转换、数据格式剥离和数据流控制的方法,在两个逻辑隔离区域中传输数据。
传统协议隔离技术方案需专门定制一整套专有通信协议,这种方法耗时长、代价大,且易偏离技术发展主流路线,复用率低,技术风险大;一旦外部用户掌握了内部协议入侵逻辑隔离器,整个内网将失控,风险性极大。因此,如何找到既保证内网用户信息安全,又能使内部用户实时利用外部信息资源,投入小、实用性强的网路安全隔离方法是急需解决的问题。
随着互联网技术的迅猛发展,充分利用公共通信协议成果并加以改造重构,也可达到内外网隔离效果,这种协议隔离方法代价相对较小,应用效益更大。运用可重构理论[4],重构通信协议传递格式,提出了一种协议隔离设计新方法,实现内网公共用户能访问外部网,而外部网络用户即使掌握了专用协议,也无法通过公共通信路由器访问内网,从而实现内外网的“逻辑隔离”。最后,从功能、性能及稳定性三方面进行了测试,并在TCP/IP层进行联通及攻防试验,结果表明运用该方法设计的系统能够实现上述能力,满足用户“逻辑隔离”的需要。
“重构就是对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本”[4]。协议重构是重构理论在网络协议中的具体运用,它利用协议报文包头字段与传输具体内容无关的特性,将其重构,形成新的报文传输序列(也可以认为是一种新的协议),达到了协议隔离的效果,而不改变报文的传输内容。相对于传统协议隔离方法,这种方法灵活性、安全性更强。
1.1 协议隔离系统设计原则
在协议隔离系统设计中,系统由外网和内网两部分组成。外网假定为未知网络或互联网;内网为自主可控网络,包括若干专有区域(一组与其他网络隔绝的服务器群)、内部路由、公共通信路由,每个专有区域拥有多个公共或专有用户。内网中部署具有专有和公共通信协议的内部路由,负责专有用户之间的信息交互;专有用户间采用专有通信协议,公共用户间采用公共通信协议,专有用户与公共用户间互不协议联通。内部路由外接公共通信路由,并采用公共协议通信。公共路由与外网连接,专有网络可通过内部路由和公共通信路由保证自身信息需求。
基于协议重构的协议隔离系统体系示意图,如图1所示。内网系统由可控的内部路由、公共通信路由与两个专有区域共同组成,内部路由安装公共通信协议和专有协议,公共通信路由只安装公共通信协议。两区域内及区域间专有用户均通过内部路由,使用专用通信协议进行信息交互;公共用户使用公共协议通信,并通过内部路由、公共通信路由直接访问外网。由于不同协议访问控制,即便在同一专有区域,公共用户也无法访问专有用户端。内外网通过公共通信路由进行连接,公共通信路由是内网公共用户访问外网的唯一出口,也是外网信息进入内网的唯一入口。
图1 基于协议重构的协议隔离系统体系示意图
1.2 协议隔离系统安全性与灵活性分析
相对于物理隔离系统,基于协议重构的协议隔离系统在可控内网部署公共通信路由、内部路由双路由,这样的配置使得外网可以通过公共通信协议访问内网公共用户,但无法通过内部路由器访问使用专有协议的专有用户。即使外网获取了专有用户协议,也无法通过公共通信路由器访问到内网。这种设置防止了一旦外网破译了内网专有协议就能直接获取专有用户信息的危险。同时,网络层、传输层、应用层协议均具备可重构的特性,如 HTTP、FTP、UDP、SNMP等协议都可构建专有协议,这就为实现内网用户的多层协议防护提供了保障,安全性进一步的增强。
同时,专有协议属于可控自定义协议,它以公共协议为基础并改制,沿用包头信息和封装数据的报文格式,通过重组包头字段,改变传输数据内容的先后顺序,从而形成专有协议。对某一种协议而言,包头字段排列的多种组合方式决定了该专有协议的多样性,用户可在协议报文格式要求范围内按需处理,使得专有协议具有很高灵活性。
目前,网络各层公共协议很多,下述研究以传输层TCP/IP协议为例,将TCP/IP协议报文进行数据解包、重构与封装,着重介绍如何设计TCP/IP专有协议实现内外网按需隔离。
因为数据传输的可靠性、安全性,TCP/IP协议[6]现已成为互联网上一种最为广泛配置的协议之一,设计高性能、可扩充的TCP/IP专有协议,是确保协议隔离系统能有效、高效工作的关键。
2.1 TCP专有协议设计
在传统TCP设计体制下,为了提高报文传输的可靠性,TCP协议实施报文确认机制,要求对传送报文进行确认以证实数据的安全、完整到达。报文按数据类型进行封装,报文封装结构,见表1。将字段依据不同的类型添加到协议包头,并进行封装分帧。
表1 TCP协议报文结构
专有协议报文分数据报文和连接管理报文两种类型[7]。数据报文主要包括用于专有用户交换数据、内容检查数据和自定义可靠数据等;连接管理报文包括连接请求报文、复位连接报文、连接确认报文、连接关闭报文等。专有协议用来封装应用层数据的协议包头字段,见表2;报文包头字段含义说明,见表3。
表2 TCP协议报文包头字段
表3 报文包头字段参数含义
其中,当报文类型为请求重传报文时,RxNum表示请求重传报文的个数,SeqNum为请求重传报文的初始序列号,否则该域为标志值,低3位标志位分别表示AUT、FOP、EOP。其中,AUT报文被值位时,表示认证值有效;EOP标志位(EndofPacket)表示最后分片报文;FOP(First OfPacket)标志位表示首个分片。如果FOP、E0P均被置位则表示这是一个完整的未被分片数据报文,否则该数据报文已被分片。当建立连接请求及确认时,AuthOption-len在需要认证的报文中被赋值,否则该域用0填充,因此对于数据报文及其它的连接管理报文该值为O。
表4 报文类型值含义
2.2 IPv6专有协议设计
IPv6包由IPv6包头、扩展包头和上层协议数据单元三部分组成。IPv6包头长度固定为40字节,只包括8个必要的字段,原IPv4中所有可选字段均置于扩展包头中。通常,典型IPv6包没有扩展头,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展包头。因此,本文中仅对包头字段进行重组,见表4;报文包头字段含义说明,见表5。
表4 协议报文包头字段
表5 报文包头字段参数含义
2.3 专有用户报文传输
内网内部路由负责接收内网用户请求和反馈响应。当接受到请求后,根据TCP报文头中ID属性判断请求来源为专有用户还是公共用户。若是专有用户请求,内部路由选择专有协议传输,连接内网专有服务响应;若是公共用户请求,内部路由选择公共协议传输,并通过公共通信路由器连接外网或内网公共用户响应。
在专有服务响应过程中,路由对请求报文进行TCP/IP版本号、长度的校验,判断合法性,若报文非法,则对其不作任何处理直接丢弃;若正确无误,获取报文头信息后,判断请求报文类型。若是连接管理报文,可直接处理;若是数据报文,对照hash表是否有数据连接对象,并将报文从下层函数提供的接口中发送出去,具体流程如图2所示,公共用户响应与其类似。
图2 接收数据流程图
路由响应首先判断为数据报文或连接管理报文,然后校验套接字是否正常,若异常,放弃此响应。若正常,调用下层发送函数接口,发送数据,具体流程,如图3所示。
图3 发送数据流程图
2.4 内网用户数据传输过程
隔离网络系统通过多层协议传输数据,当数据从应用层开始依层进栈向下传送时,每一层协议将把上一层传送下来的数据封装为自身格式。当在应用层(HTTP、FTP等协议)中将数据(包括用户数据和包头)向下传送时,首先到达传输层(TCP等协议),TCP协议根据应用层的要求在TCP包头填写好各个字段,比如ID、Version、Protocol等参数,然后将包括TCP包头的段向网络层(IP等协议)传送,网络层传输层同样需要填写IP包头的各字段,如地址、协议类型等,然后将包括IP包头和TCP包头的整个数据报向下传送。以太网驱动程序,进行封装后发送。
逻辑隔离系统对稳定性和健壮性有很高要求,在开发和使用过程中需要不断地对公共协议模块、专有协议模块功能和性能进行测试和验证,并长时间的进行检验;下面从功能、性能及稳定性三方面进行了测试。
测试环境如图1所示,分别将公共协议模块、专有协议模块在内外网主机内核加载,并通过编写基于Linux系统的测试程序来检验协议功能的正确性及性能指标。其中内外网主机相关信息,见表6、表7。
表6 内外网服务器信息
表7 路由器相关信息
测试的准备工作主要步骤如下。
(1)根据系统需求,重新编译系统内核,删除多余的内核模块,最小化系统内核,提高系统运行效率;
(2)将逻辑协议程序代码文件夹分别拷贝入内外网主机系统文件目录中;
(3)在命令行下进入协议程序代码文件夹,执行Make命令,利用Makefile文件生成协议模块;
(4)编写并用gcc命令生成可执行的协议测试程序。
3.1 功能测试
对协议功能的测试主要包括协议模块在内核中的加载和卸载、建立AF-INNER套接字、套接字连接的建立与关闭、套接字发送数据和接收数据等功能的测试,即AFF-INNER套接字实现的套接字编程接口,如:Soeket、Conneet、Send、Recv、Close等的功能测试。具体测试如下。
(1)内核中加卸载协议栈模块功能测试
测试方法及步骤:分别在内外网主机系统中将编译好的协议模块使用insmod和rmmod命令加载入系统内核或从内核中卸载。
测试结果:用insmod命令加载协议栈模块后,使用lsmod命令查看系统内核模块列表;然后使用rmmod inner.ko和rmmod devinner.ko命令卸载协议模块后,再利用lsmod命令查看系统内核模块列表,发现协议模块已不在列表中存在。测试结果显示,协议模块能正常加卸载。
(2)建立AF-INNER套接字功能测试
测试方法及步骤:编写一测试程序,利用socket系统调用,创建一个AF-INNER套接字,使用gcc工具生成可执行程序,并在任一端主机系统上运行该程序。
测试结果:通过执行测试程序检验调用socket系统调用后的返回值,socket系统调用的返回结果为正值的文件描述符号。测试结果显示,socket系统调用成功创建AF-INNER套接字。
(3)发送数据功能测试
测试方法及步骤:内网主机系统运行server端测试程序,外网主机系统上运行client端测试程序。在连接建立成功后,client调用 send系统调用向server端发送一个大小为256字节的数据包,分别打印每次发送程序send()系统调用的返回值,如此重复发送10次,终止测试程序。
测试结果:测试程序打印出来的send系统调用返回的值为10个256,其返回值为每次所发送数据字节的个数。测试结果显示发送数据的功能正确。
(4)接收数据功能测试
测试方法及步骤:内网主机系统运行server端测试程序,外网主机系统运行client端测试程序。在连接建立成功后,client调用 send系统调用向server端发送一个大小为256字节的数据包,如此重复发送10次,终止测试程序。server端在连接建立成功后,利用recv系统调用接收来自client端的数据,每次接收完毕后将系统调用recv()的返回值打印出来,数据接收完毕后终止测试程序。
测试结果:server端每次调用过系统调用recv()后打印出来的函数返回值为256,为发送端测试程序每次所发送的数据字节个数。测试结果显示能够正确的接收来自发送端的报文,且没有报文丢失。
3.2 性能测试
系统性能主要指标是指数据传输的传输速率。编写测试程序,在测试程序中内网服务器端用来接收数据,外网不断重复发送大量应用数据,并在连接成功建立后,统计单位时间Δ内成功发送数据的总量,计算输出所传输的数据总量,以及Δ时间段内的传输速率,其中传输速率的计算方法为:传输速率=传输数据总量*8/Δ。测试程序分别将Δ时间段设置为5min、10min、20min、25min、30min,其输出的测试数据结果,见表8。
表8 测试数据
从测试结果看出,当连接成功建立后,平均传输速率能够达到799.9 Mb/s。
3.3 稳定性测试
在Linux内核中以模块加载形式实现协议软件,该模块必须能够在系统内核中长时间稳定地运行,且经常受到上层应用程序和内核其它功能模块的调用,所以需要对其稳定性进行测试。如果软件系统在内核中使用kmalloc分配的内存在用完后没有使用kfree释放,模块就会出现内存泄漏,随着程序运行时间的增长,将会耗光系统的内存,并最终导致系统的崩溃。在内外网主机系统上先利用insmod命令将协议所在模块注册到内核中,然后采用系统提供的top命令查看系统内存的使用情况;接着运行测试程序不断地接收和发送数据,再次使用top命令查看内存使用情况。系统在经过长时间的运行后,内存的使用趋于一个稳定值;继续运行软件系统观察其状态变化,在经过一周的测试后,所有软件稳定运行,系统内存的占用情况并未产生变化。因此可以确定没有存在内存泄漏问题,运行稳定。
提出了一种简便高效的协议隔离新方法,通过对公共通信协议报文包头字段解析并重构,建立专有传输协议,实现内外网的安全隔离,保护内网专有用户信息,同时满足内、外网能进行数据交换的需求。相对于传统隔离方法,这种重构协议隔离方法研制代价小,更灵活、更安全,可广泛应用于金融、保险、电子政务等多个内外网保密需求的行业中,前景巨大,同时可推动国产多协议路由器的研制发展。
[1]张锦玉.网络隔离系统通道协议设计与实现[D].国防科技大学,2007.
[2]马永杰,刘建平,等.网际数据隔离器的设计与实现[J].计算机应用研究,2003(3):54-56.
[3]靳禹,蔡永泉.内外网络隔离的HTTP网络访问的设计与实现[J].微计算机信息.2010(3):88-90
[4]FOWLER M.重构改善既有代码的设计[M].第一版,候捷,译.北京:中国电力出版社.2003
[5]DOUGLASE.COMER.用TCP/IP进行网际互联(卷1)[M].林瑶,蒋惠,杜蔚轩,等,译.北京:电子工业出版社,2001.
崔 桐(1981—),高级工程师,主要研究方向为WEB软件工程,数据可视化;
E-mail:heavymetalcu@126.com
张江涛(1978—),高级工程师,主要研究方向为系统总体设计和产品管理;
郭培胜(1983—),助理工程师,主要研究方向为防空作战筹划和作战指挥;
赵克俭(1958—),研究员级高级工程师,主要研究方向为指挥控制系统总体、指控系统应用软件设计开发。
Design of the Network Logic Isolation System Based on Re-constructed Protocols
CUITong,ZHANG Jiang-tao,GUO Pei-sheng,ZHAO Ke-jian
(The 28th Research Institute of CETC,Nanjing 210007,China)
The internet protocols are reconstructed to form private ones due to structure comparability. Then a novel network logic isolation system is designed based on the re-constructed private protocols. These private protocols are used to realize the network isolation among different security class systems.In inner networks,public users are able to link to the internet,but private users are rejected to send or accept the outer information.Compared with physical isolations,the logic isolation method can present internet servers for inner pubic users,and help information communion and improve the high expandability of the system.Moreover the appliedmethod is cheaper and less risky than traditional logical isolation protocols.
network logic isolation;re-constructed protocols;TCP/IP protocol
TN915
A
1673-5692(2014)03-319-06
10.3969/j.issn.1673-5692.2014.03.019
2014-03-06
2014-05-23
总装预研基金(9140A040413DZ 3800001)