一、什么是网闸

网闸技术的需求来自内网与外网数据互通的要求,比如政府的电子政务是对公众服务,与互联网连通,而内网的政府办公网络,由于保密的要求,内网若与网连通,则面临来自公网的各种威胁。安全专家给出的建议是:由于目前的安全技术,无论防火墙、UTM等防护系统都不能保证攻击的一定阻断,入侵检测等监控系统也不能保证入侵行为完全捕获,所以最安全的方式就是物理的分开,所以在公安部的技术要求中,要求电子政务的内、外网络之间“物理隔离”。没有连接,来自外网对内网的攻击就无从谈起。

但是,网络的物理隔离,给数据的通讯带来很多不便,比如工作人员出差只能接入互联网,要取得内网的文件就没有办法,只能让办公室的人把文件放在外网上。另外,内网办公系统需要从外网提供的统计数据,由于服务隔离,数据的获取也很困难。因此,随着网络业务的日益成熟,数据交换的需求提议强烈。

最初的解决办法就是人工的“传递”,用U盘或光盘在内外网之间倒换数据。随着业务的增多,数据量的扩大,人工的方式显然成为很多业务的瓶颈,在内、外网之间建立一个既符合“物理隔离”安全要求,又能进行数据交换的设备或解决方案,这就诞生了网闸技术。

网闸实现的是个安全的概念,与防火墙等网络安全设备不同的地方是他阻断通讯的连接,只完成数据的交换,没有业务的连接,攻击就没有了载体,如同网络的“物理隔离”。网闸其实就是模拟人工数据倒换,利用中间数据倒换区,分时地与内外网连接,但一个时刻只与一个网络连接,保持“物理的分离”,实现数据的倒换。这就象从前长江上的摆渡船,既没有“物理的连接”大桥,也实现了货物的交换。

其实,除了电子政务内外网的交换需求,其他各种涉密网络与公用网络的互联都有这种需求,比如:广电的编播网和互联网、电力的控制网与办公网、海关的运行网和报关查询网络、银行的业务网与网上银行网络等等。

二、网闸的实现原理

网闸是实现两个相互业务隔离的网络之间的数据交换,通用的网闸模型设计一般分三个基本部分:

Ø         内网处理单元

Ø         外网处理单元

Ø         隔离与交换控制控制单元

    三个单元都要求其软件的操作系统是安全的,也就是采用非通用的操作系统,或改造后的专用操作系统。一般为Unix BSD或Linux的变种版本,或者其他是嵌入式操作系统VxWorks等,但都要对底层不需要的协议、服务删除,使用的协议优化改造,增加安全特性,同时提高效率。

 

 

java 网闸内外通信 网闸内外网互访_数据交换

 

 

Ø         内网处理单元:包括内网接口单元与内网数据缓冲区。接口部分负责与内网的连接,并终止内网用户的网络连接,对数据进行病毒检测、防火墙、入侵防护等安全检测后剥离出“纯数据”,作好交换的准备,也完成来自内网对用户身份的确认,确保数据的安全通道;数据缓冲区是存放并调度剥离后的数据,负责与隔离交换单元的数据交换。

Ø         外网处理单元:与内网处理单元功能相同,但处理的是外网连接。

Ø         隔离与交换控制单元:是网闸隔离控制的摆渡控制,控制交换通道的开启与关闭。控制单元中包含一个数据交换区,就是数据交换中的摆渡船。对交换通道的控制的方式目前有两种技术,摆渡开关与通道控制。摆渡开关是电子倒换开关,让数据交换区与内外网在任意时刻的不同时连接,形成空间间隔GAP,实现物理隔离。通道方式是在内外网之间改变通讯模式,中断了内外网的直接连接,采用私密的通讯手段形成内外网的物理隔离。该单元中有一个数据交换区,作为交换数据的中转。

 

在内外网处理单元中,接口处理与数据缓冲之间的通道,称内部通道1,缓冲区与交换区之间的通道,称内部通道2。对内部通道的开关控制,就可以形成内外网的隔离。模型中的用中间的数据交换区摆渡数据,称为三区模型;摆渡时,交换区的总线分别与内、外网缓冲区连接,也就是内部通道2的控制,完成数据交换。

还有一种方式是取消数据交换区,分别交互控制内部通道1与内部通道2,形成二区模型。

二区模型的数据摆渡分两次:先是连接内、外网数据缓冲区的内部通道2断开,内部通道1连接,内外网接口单元将要交换的数据接收过来,存在各自的缓冲区中,完成一次摆渡。然后内部通道1断开,内部通道2连接,内外网的数据缓冲区与各自的接口单元断开后,两个缓冲区连接,分别把要交换的数据交换到对方的缓冲区中,完成数据的二次摆渡。

 

 

java 网闸内外通信 网闸内外网互访_java 网闸内外通信_02

 

 

内部通道一般也采用非通用网络的通讯连接,让来自两端的可能攻击终止于接口单元,从而增强网闸的隔离效果。所以内部通道一般选用网络、SCSI、IDE、USB、PCI等方式。

网闸设计的目的,是隔离内外网业务连接的前提下,实现安全的数据交换。也就是安全专家描述的:协议落地,数据交换。

三、隔离概念的变化

严格地讲,物理隔离因该没有物理通讯连接,也包括无线通讯,消除了通讯的可能,入侵就没有了载体,但同时数据交换也成了难题。

网闸在发展过程中,对隔离的定义也经历了几个过程:

1.         物理隔离:模拟人工交换的过程,必须在内外网的节点机上进行数据交换,不能实现网络上任意计算机的数据交换。

2.         网络隔离:在简单交换的基础上,对文件传输协议的数据打包交换,实现了网络上任意信息点的数据交换。

3.         协议隔离:能对文件协议代理,就可以对其他应用协议代理,如Http,实现了应用数据的直接交换。

    物理隔离是指只有文件级交换的网闸,网络隔离与协议隔离是隔离概念的进一步弱化,根据要隔离网络的安全性要求,选择不同的隔离技术。但把协议隔离当作物理隔离保证安全就成了网闸产品技术的误区了。

四、网闸设计中的误区

网闸利用隔离业务连接阻断用户业务连接,完成数据的交换。但是由于网闸两端的网络出口,直接连在内外网的节点上,没有其他的中间代理,各种应用协议连接直接到达网闸的接口,从用户角度来讲,看到的是一个内外网互通服务,好像在内外网间建立了连接,只是时延大一些,也就是说建立了逻辑的连接。网闸好像是一个网络堡垒机。

java 网闸内外通信 网闸内外网互访_数据交换_03

 

 

 

大多数网闸厂家在设计网闸产品时,为了方便客户业务的方便,在内外网接口上解析各种应用协议,一方面剥离成数据,另一面有恢复成应用协议,网闸可以根据安全检测的结果,合乎要求的让通过,不合要求的就阻断。这样不仅仅实现数据的交换,而且实现了业务应用的代理访问,有些网闸产品实现了外网的访问者访问内网的服务器。这种解析不仅有覆盖常见应用协议的趋势,而且对数据库的访问也代理通过,为缓冲区溢出、SQL注入等攻击提供了生存的温床。网闸成了名副其实的集装箱摆渡。

由于应用协议的解析,应用可以通过网闸,攻击也有了载体,网闸的安全就依赖于网闸的安全检测技术。物理隔离的含义是作为攻击载体的应用协议被中断,入侵与攻击才没有进入的路径,隔离达到安全的目的。所以网闸要“破坏”是业务的协议,而不是代理。这比如:火车可以通过摆渡继续整列车行进,而网闸因该把货物的组合彻底打散,这边是用火车,到了对岸,用汽车还是马车就不一定了。基于这种方式,网络攻击行为中比较难探测的分散隐藏就不容易了。

网闸的安全检测技术与目前各种安全网关类产品的检测技术应该一致,所以若能通过网闸建立业务连接的话,网闸的功能就与用防火墙等安全网关类设备建立的网络连接是同样的安全效果了。

因此,解析应用协议,成为应用代理的网闸实际上成为一个逻辑上的安全网关,满足了数据交换的功能,但失去了网络隔离的效果。

五、网闸安全原则的定义

网闸对业务协议的解析给网闸带来新的安全问题,所以不是说功能越丰富越好,从网闸处于网络中的位置,以及要实现的目的,网闸应该有自己的安全设计原则。

使用网闸的目的是为了隔离业务的同时,进行安全的数据交换。从安全服务的角度讲,网闸开通的服务种类越少,被攻击的可能性越小,网闸可交换的数据类型越少,隐含攻击的可能越小。网闸的安全原则定义为:

Ø         单一服务:只完成数据文件的交换,只完成文件形式的数据交换。其他的服务一律关闭

Ø         定向交换:在数据交换时指定接收人、发送人

网闸不支持应用协议解析,不透传业务应用,只进行文件数据的摆渡,对于Http、SMTP、FTP等协议无法通过,数据库的访问就更加不能通过,网闸只起到数据的摆渡,不支持应用的互通,应用协议的终止,让入侵、攻击彻底失去了传播的载体。

定义了安全原则的网闸安全性分析:

Ø         指定内外网的发送与接收人:数据交换是提供点到点的数据交换服务,方便数据交换的审计,方便问题定位到源头。避免第三者冒充、截获信息重放等攻击的发生。

Ø         只选择文件级的交换:采用文件级交换,而不是数据包级交换,是因为文件相对信息完整,避免蠕虫式的分片隐藏。交换的信息单元之间没有关联,无需网闸进行信息还原、重组(这需要大量的缓冲区)。

Ø         只选择文件交换,内外网没有通讯的连接,来自外网的黑客远程攻击因为没有遥控线路而难以实现,对内网的业务进行攻击只有发自内网本身的病毒、蠕虫,这就实现了和人工数据摆渡同样的安全效果。

Ø         文件的内容安全可以对发送者身份认证来保证。文件附着的病毒、蠕虫、木马等的检测是静态检测,可以通过对交换文件格式的规范,让他们难以躲藏。实际系统中,网闸可以根据应用系统对安全级别的要求,选择×××换无格式文本文件,Word等有格式的文档文件,压缩文件,可执行文件等交换文件的格式,降低交换文件隐藏病毒、木马的机会。

java 网闸内外通信 网闸内外网互访_java 网闸内外通信_04

 

 

 六、通过网闸实现业务自动交换的方法

使用网闸,只提供数据的文件的点到点交换,这对于支持内外网大量数据通讯的应用是显然不够的,如何实现应用的转换呢?

尽管网闸的安全原则定义了不做业务协议解析的原则,保障网闸隔离业务的效果。但对于业务本身可以设立自己的代理服务器,通过要交换数据的翻译,实现业务的自动交换。

java 网闸内外通信 网闸内外网互访_外网_05

 

 

 

Ø         在内外网设立业务数据交换的代理服务器,在内外网的代理服务器成对出现,目的是建立业务访问的逻辑连接代理。

Ø         代理服务器把业务的数据转换成可以交换的数据文件,并且指定交换的发送人与接收人为内外网的代理服务器。

从业务应用的角度来看,这种业务数据代理方式与厂家在网闸中实现的协议解析有些相似,都实现了业务访问的内外网互通,但从整个网络的安全角度上看,是有根本区别的:

Ø         通过网闸没有应用协议,业务应用在内外网中间是中断的。

Ø         业务数据交换代理是针对每个需要内外网大量数据交换的业务开发的,业务针对性强,认证、加密等方式各不相同,由于业务开发的认证、加密属于私密处理,每个应用都不相同,被攻击的可能比较小。即使有攻击,也只能针对本业务,不会扩展到内网的其他业务。

Ø         与进行协议解析相比,网闸解析协议开通的是一类协议的所有应用,而业务代理是针对一个应用的开通。协议原理比较公开,被利用攻击的可能性较高,即使使用安全的用户身份确认技术,也不能与应用不同而改变,当应用增多时,危险增大。而代理服务的数据转换是业务本身开发的,根据业务本身的安全级别要求,采取各自的身份确认机制,与应用的融合性好,对业务使用者本身的权限管理也比较严格,对资源的安全管理粒度也比较细。

 

网闸的设计目标:保证业务通讯隔离的基础上,实现数据交换,其关键是安全性的延续,所以网闸的设计重点不仅是隔离与交换的控制逻辑设计上,而且包括业务代理的实现模式上。通过网闸实现业务数据自动交换的原理模型应如下

 

java 网闸内外通信 网闸内外网互访_数据_06