吴雅云,洪瑞安,庄绍燕
中国人民解放军第一八零医院信息科软件研发室,福建 泉州 362000
基于网闸隔离的双机通讯底层及其在B/S架构系统中的应用
吴雅云,洪瑞安,庄绍燕
中国人民解放军第一八零医院信息科软件研发室,福建 泉州 362000
随着信息网络技术的应用以及关键业务系统的扩展,B/S架构系统以“维护和升级方式简单、成本降低、选择更多”的优势,逐渐成为业务系统的主流[1]。网络的开放性和自由性使得信息数据可能会被破坏或入侵,网络数据安全特别是军队数据安全随之成为关注的焦点[2]。随着军队对信息安全重视程度的提升,网闸等物理隔离设备在军队医院得到了引进和推广。我院合理地利用网闸文件摆渡功能,自主研发了一套采用JAVA语言开发的双机(特指部署通讯服务的不可信端服务器和可信端服务器)通讯底层,并以此为基础开发了一系列B/S架构的医疗业务网站。本文主要阐述了网闸摆渡原理,双机通讯底层的设计思想、实现过程及其在B/S架构系统中的应用,旨在为基于网闸的B/S架构系统的开发提供一些经验。
1.1 隔离功能
网闸能够在两个独立网络之间创建一个物理隔断,网络IP包、系统命令及网络协议等不能从一个网络自由流向另外一个网络,从而在可信端和非可信端之间建立有效防护,可信网络中的计算机和不可信网络中的计算机不会有实际连接。在实现物理隔断的同时,通过协议检查、内容审查、用户审计等手段,可实现可信网络和不可信网络之间的数据、资源和信息的安全交换[3]。
1.2 应用模式
(1)代理模式。该模式可拆除数据包通过各种通讯协议添加的“包头包尾”,将数据还原成原始部分,避免数据被攻击、入侵[4]。
(2)摆渡模式。网闸本身的文件同步系统默认任何程序都无法访问文件同步目录,不能向目录写入或读取文件。以C盘为例,在不可信端服务器创建文件同步目录C:wan_send和C:wan_rev,在可信端服务器创建文件同步目录C:inter_send和C:inter_rev,文件摆渡功能指得是:在不可信端,当文件同步系统允许程序在C:wan_send内创建文件,网闸会自动将C:wan_send内的文件摆渡到可信端C:inter_rev,C:wan_send内的文件则被删除;当文件同步系统允许程序在C:inter_send内创建文件,网闸会自动将C:inter_send内的文件摆渡到可信端C:wan_rev,C:inter_send内的文件则被删除。
(1)B/S架构。在B/S架构下,软件的业务逻辑可完全在应用服务器端实现,用户表现可完全在Web服务器端实现,客户端只需浏览器即可进行业务处理。B/S架构在数据安全性、一致性、实时性、溯源性,服务响应及时性和网络应用限制方面较C/S架构系统有很大优势。
(2)JAVA语言。JAVA语言具有面向对象、结构中立、安全、可移植、性能高等特点[5]。我们主要考究其安全性,一方面在JAVA语言里,象指针和释放内存等C++功能被删除,可避免指针操作中容易产生的错误以及非法内存操作,防止程序员使用“特洛伊”木马等手段访问对象的私有成员;另一方面,当JAVA语言用于创建浏览器页面时,能够结合浏览器本身功能,安全性更高。JAVA语言在机器上执行前,要经过多次测试,代码校验、代码段格式检查,指针操作检测等。
选择用JAVA语言编写双机通讯底层。
3.1 设计思想
在可信端和非可信端各启动一个Tomcat程序,装载通讯监听服务器InitServlet,利用网闸文件同步系统配置Tomcat.exe可访问inter_send、inter_rev、wan_send、wan_ rev。InitServlet利用文件消息机制DirectoryWatcher对inter_ send、inter_rev、wan_send、wan_rev 4个文件夹进行监测,确定是否有新请求文件或响应文件产生。
ServiceInvoker入口类具有类似Tomcat多线程[6]处理机制的特点,是不可信端网络层对后端服务程序的调用接口,主要功能是判断当前发起请求的服务器是可信端还是不可信端:若是不可信端,以唯一进程编码打包请求文件,加密后发送到wan_send文件夹里;网闸的文件摆渡功能自动把wan_send的请求文件摆渡到inter_rev中;InitServlet检测到inter_rev的请求文件,启动可信端ServiceInvoker,解密解析请求文件,调用ServiceProvider可信端响应前端服务来实例化类并调用指定方法,将方法返回的结果打包成响应文件,加密后发送到inter_send文件夹里;网闸的文件摆渡功能自动把inter_send的申请文件摆渡到wan_rev中;InitServlet检测到inter_rev的响应文件,启动不可信端ServiceInvoker,解密解析响应文件,以常用类型转换响应结果返回给网络层调用,完成一次不可信端发起的请求-响应服务。若是可信端,可信端ServiceInvoker直接通过ServiceProvider实例化指定的类,调用方法后以常用类型返回结果,减少网闸文件摆渡的往返次数。
3.2 双机通讯底层的实现
首先,双机的Tomcat应用服务器通过初始化类InitServlet,启动双机通信监听服务,主要监听双机通信文件,做请求业务与响应业务的桥接,即利用网闸特性进行文件监听摆渡,实现双机的数据通信与业务往来。
不可信端通过请求类ServiceInvoker来进行业务请求,业务请求的处理方法是多线程技术,这样不可信端可以不断地发送请求业务,不必等待某个申请响应结束后再发送申请。加载请求类ServiceInvoker时创建哈希表定义的请求池,每调用一次ServiceInvoker就开辟新的请求线程,将请求业务需要的类名、方法名、参数以一定的协议打包;调用加密类把请求业务封装成以唯一进程编码命名的XML加密流文件,将进程编码放入请求池记录请求产生时间;然后通过调用双机通信接口,自动把加密流文件发送到可信端服务监听接口,完成一次请求线程。
可信端的InitServlet接收到不可信端的请求加密流文件,通过多线程技术处理这些请求业务。加载响应服务类ServiceProvider时创建哈希表定义的响应池,当接收到请求文件时开辟新的响应线程;通过解密类解密请求业务的XML加密流文件,得到需要的类名、方法名、参数,将请求文件的进程编码名放入响应池并记录响应开始时间;然后应用响应服务类ServiceProvider调用已定制好的类和方法,经过处理后的业务结果集以一定的协议打包;通过加密类将其自动封装成对应请求进程编码命名的XML加密流文件,调用双机通信接口,返回给不可信端的服务监听接口,删除响应池中对应的进程编码记录。
最后,可信端的InitServlet接收到可信端响应回来的XML加密流文件,删除请求池中对应的进程编码记录,开辟新线程调用解密类,解密后的数据存放到指定类型的变量中,方便不可信端做读取展示的业务。
整个网闸隔离的双机交互对调对于应用双机通讯底层的程序员来说是透明的,可信端与不可信端间的文件传输由网闸实现,监听服务等待处理网闸摆渡来的文件,而响应业务只处理解密后认定的类和方法,不需要握手认证也比较安全。通过多线程处理技术,可有次序地执行多个任务,避免死锁和长时间等待;可信端和不可信端会分别定时扫描响应池和请求池中是否存在一些超时业务,并对超时业务回复为空对象,表明通讯失败或超时。
在开发B/S架构系统时,一般地,网络层JSP页面直接调用后台类的语句示例如下:
为了实现网闸隔离环境下不可信端计算机对可信端数据库进行实时访问,网络层JSP页面调用双机通讯底层语句示例如下:
物理隔离网闸不存在依据协议转发的信息包,数据文件只进行无协议“摆渡”[7]。双机通讯底层将数据文件打包封装在底层,程序员在顶层调用极为方便。为提高安全系数,B/S架构系统采用数据库-控制层-网络层的3层架构,通过双机通讯底层将网络层与控制层隔断,网络层只能调用控制层中固有的类和方法,否则请求文件将被丢弃,返回为空的响应文件,这样可以防止黑客通过篡改网站页面语句直接访问数据库。
网闸与不可信端服务器(以军综网为例)、可信端服务器(以医院网为例)的连接方法,见图1。
图1 B/S架构系统部署图
在不可信端和可信端服务器上各安装网闸文件同步系统,创建文件同步目录(inter_send、inter_rev、wan_send、wan_rev),配置允许访问程序Tomcat.exe。
医疗业务系统ROOT所在的WEB.XML文件做如下配置:
另需在可信端和不可信端医疗业务系统ROOT所在的classes文件夹中增加transfer.properties文件。
可信端的transfer.properties文件做如下配置:
双机通讯底层也适合单机运行,即如果架设一般形式的网站,将医疗业务系统ROOT所在的transfer.properties文件做如下配置:
Web_type=10。
基于网闸隔离双机通讯底层开发的B/S架构系统在满足安全条件的同时,既保证了网络间业务数据交换的顺利进行,又保证了网络的可靠性和安全性[8]。我院在此基础上已经研发了全军网络医疗服务系统、全军网络医疗管理中心网站、互联网医药检验检查信息查询系统、互联网体检预约查询系统等,为广大官兵用户提供了方便、快捷的医疗服务,建立了良好的网络安全防护机制,有利于提升医院数字化水平和数据库安全系数[9]。
[1] 钱敬.B/S架构中的数据推送设计与实现[J].电脑知识与技术, 2013,9(10):2356-2359.
[2] 吴雅云,陈雪红,李秀美.军队医院网络安全隐患及防范[J].军事训练医学,2010,4(2):13-14.
[3] 赵妍,邵伟.浅谈网闸在医院中的应用[J].中国医疗设备,2013, 28(5):92-93.
[4] 孙利,徐亮,吴辞文.一种基于HTTP包识别的网络安全设备联动的方法[J].微电子学与计算机,2013,30(1):114-122.
[5] 王纯.JAVA与图书馆信息服务[J].情报杂志,2001,(6):38-39.
[6] 宋玲玲,刘冲,喻金,等.基于C++ Builder环境的多线程技术在工业双相机控制中的应用[J].工业控制计算机,2013,26(2):91-95.
[7] 胡春.计算机网络安全现状及对策[J].电脑知识与技术,2010, 6(5):1079-1080.
[8] 周玉叶,周夏青.基于网闸的医院网络安全应用[J].台州学院学报,2013,35(3):12-16.
[9] 李成安.医院信息网络安全管理[J].电脑知识与技术,2013, 9(1):32-34.
Computer-to-Computer Communication Bottom with its Application in B/S Architecture System Based on Gap Isolation
WU Ya-yun, HONG Rui-an, ZHUANG Shao-yan
Software Research and Development Room, Department of Information, The 180thHospital of PLA, Quanzhou Fujian 362000, China
目的 在网闸隔离环境下开发B/S架构系统,实现不可信端计算机对可信端数据库的实时友好访问。方法 结合网闸文件摆渡功能,应用JAVA语言研发双机通讯底层,继而开发B/S架构系统。结果 基于网闸隔离双机通讯底层开发的B/S架构系统,可以实现多台不可信端计算机对可信端计算机的实时访问,同时保证网络数据的安全。结论 基于网闸隔离的双机通讯底层在B/S架构系统的构建中发挥着重要作用。
网闸隔离;服务器;双机通讯;B/S架构;数据安全
Objective To develop the B/S architecture system to implement the real-time and friendly access from untrusted computers to trusted databases. Methods The B/S architecture system was developed with computer-to-computer communication bottom which was designed with JAVA language and the ferry function of gap fles. Results The real-time access from untrusted computers to trusted computers has been implemented with the B/S architecture system which was developed with the computer-to-computer communication bottom based on gap isolation and can ensure the security of network data. Conclusion The computer-to-computer communication bottom based on gap isolation plays an important role in the establishment of B/S architecture systems.
gap isolation; server; computer-to-computer communication; B/S architecture; data security
TP393.03
A
10.3969/j.issn.1674-1633.2014.06.011
1674-1633(2014)06-0031-03
2013-12-20
2014-05-15
作者邮箱:wuyayun@163.com