基于端口控制的网络安全隧道建立方法与流程

文档序号:16276697发布日期:2018-12-14 22:37阅读:297来源:国知局
基于端口控制的网络安全隧道建立方法与流程
本发明涉及网络领域,尤其涉及一种主要应用在“对被隔离的内网中的网络服务进行访问”或者“不同内网之间的程序互相进行访问”的基于端口控制的网络安全隧道建立方法。
背景技术
:目前为了让内网的网络服务能被公开访问,主要依赖于防火墙和路由上建立端口映射,这样会造成一些缺乏安全保障的网络服务被公开到互联网而导致安全隐患。而在跨不同内网互访的技术方案主要依赖vpn,标准的vpn在一些复杂环境中会受到协议限制,而非标准的方案又依赖于模拟网卡等底层驱动方案,多网卡的模式下也会部分程序存在兼容性问题,此外vpn环境下也会导致连入的客户端访问权限过大导致安全隐患。上述方案虽然可以通过ip策略,多重防火墙来进行约束,但是同时大大增加了部署的复杂性。技术实现要素:本发明的目的是针对现有技术的缺陷,提供一种基于端口控制的网络安全隧道建立方法,采用集中化管理,在安全性方面可提供高约束性的映射管理,也可以使用高度灵活的按需动态配置功能。本发明是通过如下技术方案实现的:一种基于端口控制的网络安全隧道建立方法,包括:在远程客户端和网络映射器之间建立桥接主控;远程客户端与桥接主控建立安全连接;应用程序连接网络映射器,网络映射器收到请求后获得目标远程客户端id和对应目标地址,网络映射器与桥接主控建立安全连接;网络映射器向桥接主控发送映射请求命令,桥接主控对该命令进行权限检测,并检测远程客户端id是否连接;桥接主控为当前的网络映射器请求连接动态生成包含对应关系的随机数,向对应远程客户端的命令通道发送启动连接命令,并等待远程客户端连接;远程客户端接收到桥接主控发送的启动连接命令,向目标地址发起连接;连接成功后,远程客户端与桥接主控建立新的连接,桥接主控将远程客户端新创建的数据连接与之前网络映射器发起的数据连接逻辑上关联起来,并负责为两个连接进行数据转发。作为优选,应用程序通过tcp协议连接网络映射器。所述应用程序连接网络映射器映射的本地端口,网络映射器收到连接请求后,查询配置信息,获得目标远程客户端id和对应目标地址。另外,所述应用程序也可通过udp协议连接网络映射器。所述应用程序向网络映射器映射的本地端口发送udp数据包,网络映射器获取该数据包的源信息,维护一个内存映射表,记录该udp源与安全隧道的关系,如果已经存在,那么获取该隧道句柄,如果不存在,查询配置信息,获得目标远程客户端id和对应目标地址。所述远程客户端为每一个创建的udp应用程序提供一个接受超时记录,当该udp应用程序在单位时间内没有接收到数据的情况下,将强制关闭远程客户端与桥接主控建立的新连接。本发明的远程客户端rc与桥接主控bc建立安全连接时,远程客户端发送包含远程客户端id和密码的登录命令,桥接主控通过验证后发送验证成功回复,并保持这个连接并把该远程客户端id和隧道的网络通讯句柄保存在内存记录中,作为该远程客户端的命令通道。本发明的远程客户端rc或网络映射器nm与桥接主控bc建立安全连接时,包括如下步骤:客户端向桥接主控指定端口创建连接;客户端利用rsa算法动态生成客户端密钥和客户端公用密钥;客户端使用服务器密钥对客户端公用密钥加密,获得客户端公用密钥编码;将握手标识附加客户端公用密钥编码的二进制序列作为初次握手数据包以dp数据包发送给桥接主控;桥接主控收到初次接收到的dp数据包对握手标识进行检测,并使用客户端密钥解密客户端公用密钥编码获取客户端公用密钥;桥接主控随机生成8字节的关键密钥作为des算法的密钥,桥接主控使用客户公用密钥对关键密钥进行加密,生成关键密钥编码;桥接主控使用服务器密钥对关键密钥编码进行签名生成关键密钥签名;桥接主控将关键密钥编码和关键密钥签名的二进制序列拼接并以dp数据包返回客户端;客户端收到后使用客户端公用密钥和关键密钥签名对关键密钥编码进行校验,并使用客户端密钥解密关键密钥编码,获得关键密钥;安全隧道初始完成,客户端和桥接主控都拥有关键密钥,后续所有的dp数据包都必须使用关键密钥按照des算法进行加密或解密。本发明的有益效果是:该基于端口控制的网络安全隧道建立方法通过端口远程映射技术,来访问原本无法直连,跨内网段,跨防火墙的网络服务,mpot采用集中化管理,在安全性方面可提供高约束性的映射管理,也可以使用高度灵活的按需动态配置功能,该方案不需要使用基于操作系统驱动层的vpn方案,在复杂的多层网络中也不需要在不同的防火墙或者网关上进行额外设置。附图说明:图1为本发明的基于端口控制的网络安全隧道的结构示意图;图2为本发明的基于端口控制的网络安全隧道建立方法的流程图。具体实施方式:下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易被本领域人员理解,从而对本发明的保护范围做出更为清楚明确的界定。如图1所示,本发明基于端口控制的网络安全隧道(mpot)主要是建立跨网络的通讯隧道,采用可扩展的通讯协议(bridgenetprotocal,简称bnp),由三层的服务架构组成,包括远程客户端(remoteclient,简称rc)、桥接主控(bridgecontroller,简称bc)、网络映射器(netmapper,简称nm)。mpot体系中,bridgecontroller作为公开服务器,remoteclient和netmapper都是连接客户端。如图2所示,一种基于端口控制的网络安全隧道建立方法,包括:在远程客户端和网络映射器之间建立桥接主控;远程客户端与桥接主控建立安全连接;应用程序连接网络映射器,网络映射器收到请求后获得目标远程客户端id和对应目标地址,网络映射器与桥接主控建立安全连接;网络映射器向桥接主控发送映射请求命令,桥接主控对该命令进行权限检测,并检测远程客户端id是否连接;桥接主控为当前的网络映射器请求连接动态生成包含对应关系的随机数,向对应远程客户端的命令通道发送启动连接命令,并等待远程客户端连接;远程客户端接收到桥接主控发送的启动连接命令,向目标地址发起连接;连接成功后,远程客户端与桥接主控建立新的连接,桥接主控将远程客户端新创建的数据连接与之前网络映射器发起的数据连接逻辑上关联起来,并负责为两个连接进行数据转发。bnp可扩展网络协议说明:1、通讯包控制规范bnp协议使用tcp进行流式数据传递,以数据包(dp)作为最小传输单元,每个数据包使用开头2个字节(unsignedshort网络字节顺序)表示数据包长度,后续紧跟实际的数据正文,如下表所述2、安全连接规则每个作为公开服务器的bc,需要使用rsa(2048)加密算法生成一对密钥服务器密钥serverprikey和服务器公用密钥serverpubkey,并将serverpubkey发放给连接该bc的rc和nm客户端,其数据连接步骤如下:s1:客户端向bc指定端口创建tcp连接;s2:客户端利用rsa(1024)算法动态生成的一对密钥客户端密钥clientprikey和客户端公用密钥clientpubkey;s3:客户端使用serverpubkey加密clientpubkey,获得客户端公用密钥编码clientpubkeyencocded;s4:将握手标识附加clientpubkeyencocded的二进制序列作为初次握手数据包,以dp数据包发送给bc服务器;s5:服务器bc收到初次接收到的dp包对握手标识进行检测,并使用clientprikey解密clientpubkeyencocded获取clientpubkey;s6:服务器随机生成8字节的关键密钥exkey作为des算法的密钥;s7:服务器使用clientpubkey对exkey进行加密,生成关键密钥编码exkeyencoded;s8:服务器使用serverprikey对exkeyencoded进行签名生成关键密钥签名exkeysigned;s9:服务器将exkeyencoded和exkeysigned的二进制序列拼接并以dp包返回客户端;s10:客户端收到后使用clientpubkey和exkeysigned对exkeyencoded进行校验,并使用clientprikey解密exkeyencoded,获得exkey;s11:安全隧道初始完成,客户端和服务端都拥有exkey,后续所有的dp包都必须使用exkey按照des算法进行加密和解密。3、可扩展命令规范bnp命令是mpot服务间进行控制消息传递的标准,在安全隧道内传输,每条命令都必须在一个单独的加密dp包中一次性传输完成。bnp命令采用格式化文本作为基本传输格式,包括但不限于xml、json等。每个可扩展命令以名称和参数列表组成,下面以json举例作为说明。每个命令都对应一个返回的结果响应后续涉及到相关命令的说明将简化为login{user,password}这样的格式。mpot服务说明:1、bridgecontroller服务说明bc服务为mpot架构中的主控服务端,处于每个客户端都能访问到的网段或者互联网上,在包括上所提供的安全隧道服务功能之外,还提供了用户管理和端口管理功能。(1)用户管理功能包括remoteclient用户(rcid)和netmapper用户(nmid)两种,分别对用rc客户端和nm客户端登录使用,bc服务器维护了包含rcid和nmid账号信息和密码信息的记录表。(2)端口管理功能作为mpot专利架构的核心,用来维护mpot映射规范。端口管理针对每个rcid设置,分为如下几种模式:a、全开放模式。在该模式下,rcid可以接受任意nmid对任意端口的映射请求。b、可控性端口映射。在该模式下bc管理端给每个rcid维护一张远程端口定义表、一张nmid权限控制表、特权nmid表。这些关系表采用包括但不限于数据库、配置文件等方式进行保存。远程端口定义表包含目标名targetname和目标地址targetaddress(每一个rcid都对应一张逻辑上的映射表),如下表所示:targetnametargetaddressnettype(端口类型)webainnerhost:80tcpdatabaseainnerip:1433tcpdatabasebinnerip:1521tcpnmid权限控制表,如下表所示:nmidtargetnamenmid1webanmid2databaseanmid3databaseb特权nmid映射表,如下表所示:rcidnmid4nmid5nmid6在可控端口映射模式下,每个nm客户端按照预定义的targetname申请端口映射,拥有特权模式的nmid可对该rc客户端任意端口的映射请求。2、remoteclient服务说明每一个rc客户端使用rcid主动连接bc主控服务器,接收bc的访问控制命令,按照命令完成与目标端口通讯的数据交换任务。3、netmapper服务说明每一个nm客户端维护一张端口映射的配置表,配置表采用包括但不限于数据库、配置文件等方式进行保存,如下表所示:在本地监听端口,当接收本地程序的数据连接请求后,使用nmid主动连接bc主控服务器,bc根据权限和配置信息,通知remoteclient创建映射的通讯隧道。mpot连接步骤说明:mpot所有连接都按照前文描述的安全连接规则创建连接,客户端已经拥有预先配置的服务端连接公钥serverpubkey,下面提及的命令都按照前文可扩展命令规范进行命令传递和响应。1、remoteclient初始化步骤s1、rc与bc建立安全连接;s2、rc发送包含rcid和密码的登录命令login{rcid,password};s3、bc通过验证后发送验证成功的回复,login{succeed},并保持这个连接并把该rcid和隧道的网络通讯句柄保存在内存记录中,作为该rc的commandchannel。2、netmapper初始化步骤s1、根据nm端的配置文件(参看netmapper服务说明),侦听所对应的udp或者tcp端口。本发明的基于tcp端口控制的网络安全隧道建立方法,包括如下步骤(tcp模式连接步骤):s1、应用程序(例如图示中的webbrowser、datebaseapplication、rdpclient)通过各自端口连接nm映射的本地端口(参见netmapper初始化步骤s1);s2、nm在收到连接请求后,查询配置信息,获得目标rcid和对应目标地址(假如当前nmid不拥有特权,则获得目标rcid和bc服务器中配置的targetname);s3、nm与bc创建安全连接;s4、nm发送包含nmid和密码的登录命令login{nmid,password};s5、bc对nmid进行验证,发送验证成功的命令login{succeed};s6、nm发送映射请求命令,包含目标rcid和目标地址(或targetname)map{rcid,tcpmode,targetaddress/targetname};s7、bc对该nmid请求的地址和目标进行权限检测,在nmid不拥有特权模式下,bc将targetname转换为targetaddress;s8、bc检测rcid是否已经连接(通过remoteclient初始化步骤s3建立的命令通道commandchannel);s9、bc为当前的nm请求连接动态生成包含对应关系的随机数connectiontoken;s10、向对应rc的commandchannel,发送启动连接命令,并等待rc的启动连接startconnect:{connectiontoken,targetaddress};s11、rc接收到bc发送的startconnect命令,根据参数中targetaddress,向目标地址发起tcp连接;s12、假如s11成功连接targetaddress,那么rc向bc建立新的连接,该连接不再发送rcid的登录请求命令,而是发送连接成功通知命令newconnect{connectiontoken,succeeded};s13、bc通过connectiontoken的关系,将rc新创建的数据连接与之前nm发起数据连接逻辑上关联起来,并负责为rc两个连接进行数据转发;s14、rc为targetaddress的连接和与bc的newconnect连接进行数据转发。本发明的基于udp端口控制的网络安全隧道建立方法,与tcp不同,udp不存在逻辑上的链路,mpot基于tcp的安全隧道,所以必须让udp通过tcp转发,应用程序对于tcp和udp的处理模式存在很大的差别,tcp基于逻辑链路,而udp基于来源地址的记录(从哪个[ip:端口]获取,那么就回发给哪个[ip:端口]),mpot在处理udp的时候采用了额外的管理机制来保持udp的兼容性。s1、应用程序向nm映射的本地端口发送udp数据包;s2:nm获取该udp数据包的源[ip:端口]信息;s3、nm维护一个内存映射表,记录udp源[ip:端口]和隧道的关系,nm在该表中根据udp的源进行查询,如果已经存在,那么获取该隧道通讯句柄(或对象),假如没有找到,那么按照tcp模式连接步骤的s3-s13基本相同;其中,s6步骤中的参数改为udpmode:map{rcid,udpmode,targetaddress/targetname};s11步骤中,rc只需要创建一个udp客户端套接字socket,而不需要向targetaddress完成连接;与tcp模式连接步骤的s14步骤不同,rc客户端为targetaddress和bc的newconnect连接数据转发采用了超时记录机制,为避免udp包导致的tcp连接的资源消耗,rc客户端给每一个创建的udp客户端socket提供一个接受超时记录,当改udp客户端在5-10分钟(这个超时时间可根据需要调整)没有接收到数据的情况下,将强制关闭rc与bc的newconnect连接。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1