本发明涉及加密技术领域,更具体的,涉及一种基于ssh隧道的自动加密方法、系统及服务模块。
背景技术:
网络技术的快速发展在提高企业内部工作效率的同时,也带来一个日趋严重的问题——网络信息传输安全,网络信息传输安全成为当今企业研究热点和关注焦点。
ssh隧道技术为目前企业通常采用的一种网络数据加密传输技术,ssh隧道即ssh代理或者端口转发。网络应用客户端与服务端之间并不直接通讯,而是网络应用客户端通过ssh客户端和ssh服务端与服务端进行通讯。ssh隧道将ssh客户端至ssh服务端之间的基于明文传输的网络数据通过ssh链接来进行转发,并且自动提供了相应的加密及解密服务,以防止个人隐私或者重要商业信息的泄露。
现有的ssh隧道应用技术虽然实现了对明文协议的加密传输,但是在用户使用上却存在一定的不方便性和不安全性,用户必须借助专门的ssh客户端手动创建ssh隧道,且用户在使用ssh隧道的时候,得获得连接ssh服务的账号和密码,这样使得账号和密码更多的被暴露了出来,被更多的人知道很容易造成账号和密码的泄漏,使得系统安全受到威胁。
技术实现要素:
有鉴于此,本发明提供了一种基于ssh隧道的自动加密方法及系统,通过使用重定向模块的网络重定向功能、以及sshproxy服务模块和sshserver服务模块的中间人代理功能帮助用户实现用明文协议的自动透明ssh加密传输。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种基于ssh隧道的自动加密方法,应用于sshproxy服务模块,所述方法包括:
接收数据库的重定向请求,并获取目标数据库地址;
向sshserver服务模块发送携带有认证信息的ssh隧道建立请求;
当接收到所述sshserver服务模块反馈的认证成功信息后,向所述sshserver服务模块发送所述目标数据库地址;
当接收到所述sshserver服务模块反馈的ssh隧道建立成功信息时,将用户终端发送的数据库连接请求包进行ssh加密,并将加密后的数据库连接请求包发送到所述sshserver服务模块;
接收所述sshserver服务模块反馈的连接响应包,并对所述连接响应包进行解密后将所述连接响应包发送至所述用户终端;
对所述用户终端发送的上行数据包进行加密,并将加密后的上行数据包发送到所述sshserver服务模块;
对所述sshserver服务模块发送的下行数据包进行解密,并将解密后的下行数据包发送到所述用户终端。
优选的,所述接收数据库的重定向请求,并获取目标数据库地址,包括:
启动第一监听端口,监听数据库的重定向请求;
当接收到数据库的重定向请求时,获取网络重定向票据,并根据所述网络重定向票据获取目标数据库地址。
优选的,所述方法还包括:
当所述用户终端与所述目标数据库之间的连接断开时,断开与所述sshserver服务模块之间的连接,并断开与所述用户终端之间的连接。
一种基于ssh隧道的自动加密方法,应用于sshserver服务模块,所述方法包括:
接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求;
根据所述认证信息对所述sshproxy服务模块进行认证,并向所述sshproxy服务模块发送认证成功信息;
接收所述sshproxy服务模块发送的目标数据库地址,根据所述目标数据地址与目标数据库建立连接,并向所述sshproxy服务模块发送ssh隧道建立成功信息;
接收所述sshproxy服务模块发送的数据库连接请求包,对所述数据库连接请求包进行解密,并将解密后的数据库连接请求包发送到所述目标数据库;
接收所述目标数据库反馈的连接响应包,对所述连接响应包进行加密,并将加密后的连接响应包发送到所述sshproxy服务模块;
对所述sshproxy服务模块发送的上行数据包进行解密,并将解密后的上行数据包发送到所述目标数据库;
对所述目标数据库发送的下行数据包进行加密,并将加密后的下行数据包发送到所述sshproxy服务模块。
优选的,所述接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求,包括:
启动第二监听端口,监听来自sshproxy服务模块的ssh隧道建立请求;
当接收到所述sshproxy服务模块发送的ssh隧道建立请求时,获取所述ssh隧道建立请求携带的认证信息。
优选的,所述方法还包括:
当所述用户终端与所述目标数据库之间的连接断开时,断开与所述sshproxy服务模块之间的连接,并断开与所述目标服务器之间的连接。
一种sshproxy服务模块,包括:
第一接收单元,用于接收数据库的重定向请求,并获取目标数据库地址;
第一发送单元,用于向sshserver服务模块发送携带有认证信息的ssh隧道建立请求;
第二发送单元,用于当接收到所述sshserver服务模块反馈的认证成功信息后,向所述sshserver服务模块发送所述目标数据库地址;
第一加密单元,用于当接收到所述sshserver服务模块反馈的ssh隧道建立成功信息时,将用户终端发送的数据库连接请求包进行ssh加密,并将加密后的数据库连接请求包发送到所述sshserver服务模块;
第一解密单元,用于接收所述sshserver服务模块反馈的连接响应包,并对所述连接响应包进行解密后将所述连接响应包发送至所述用户终端;
第二加密单元,用于对所述用户终端发送的上行数据包进行加密,并将加密后的上行数据包发送到所述sshserver服务模块;
第二解密单元,用于对所述sshserver服务模块发送的下行数据包进行解密,并将解密后的下行数据包发送到所述用户终端。
一种sshserver服务模块,包括:
第二接收单元,用于接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求;
认证单元,用于根据所述认证信息对所述sshproxy服务模块进行认证,并向所述sshproxy服务模块发送认证成功信息;
建立单元,用于接收所述sshproxy服务模块发送的目标数据库地址,根据所述目标数据地址与目标数据库建立连接,并向所述sshproxy服务模块发送ssh隧道建立成功信息;
第三解密单元,用于接收所述sshproxy服务模块发送的数据库连接请求包,对所述数据库连接请求包进行解密,并将解密后的数据库连接请求包发送到所述目标数据库;
第三加密单元,用于接收所述目标数据库反馈的连接响应包,对所述连接响应包进行加密,并将加密后的连接响应包发送到所述sshproxy服务模块;
第四解密单元,用于对所述sshproxy服务模块发送的上行数据包进行解密,并将解密后的上行数据包发送到所述目标数据库;
第四加密单元,用于对所述目标数据库发送的下行数据包进行加密,并将加密后的下行数据包发送到所述sshproxy服务模块。
一种基于ssh隧道的自动加密系统,包括:
重定向模块、权利要求7所述的sshproxy服务模块和权利要求8所述的sshserver服务模块;
所述重定向模块,用于对用户终端的数据库连接请求进行监测,获取所述数据库连接请求的目标数据库地址,向所述sshproxy服务模块发送重定向请求,并向sshproxy服务模块发送携带有所述目标数据库地址的重定向票据。
相对于现有技术,本发明的有益效果如下:
本发明公开了一种基于ssh隧道的自动加密方法及系统,不需要用户手动安装专门的ssh客户端,也不需要用户手动创建ssh隧道,本发明通过使用重定向模块的网络重定向功能、以及sshproxy服务模块和sshserver服务模块的中间人代理功能自动创建ssh隧道,在sshproxy服务模块和sshserver服务模块之间通过认证机制进行通信,脱离原有的用户输入账号密码的认证机制,用户不需要记忆ssh服务参数,减轻了用户的工作量,同时也避免了ssh账号密码泄露的造成的安全威胁。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种基于ssh隧道的自动加密方法的逻辑架构图;
图2为本发明实施例公开的一种基于ssh隧道的自动加密方法流程图;
图3为本发明实施例公开的另一种基于ssh隧道的自动加密方法流程图;
图4为本发明实施例公开的一种sshproxy服务模块结构示意图;
图5为本发明实施例公开的一种sshproxy服务模块结构示意图;
图6为本发明实施例公开的一种基于ssh隧道的自动加密系统结构示意图;
图7为本发明实施例公开的一种基于ssh隧道的自动加密系统应用的场景示意图;
图8为本发明实施例公开的一种基于ssh隧道的自动加密系统应用的另一种场景示意图;
图9为本发明实施例公开的一种基于ssh隧道的自动加密系统应用的又一种场景示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于ssh隧道的自动加密方法,通过使用重定向模块的网络重定向功能、以及sshproxy服务模块和sshserver服务模块的中间人代理功能帮助用户实现用明文协议的自动透明ssh加密传输。请参阅图1,图1为本发明提供的一种基于ssh隧道的自动加密方法的逻辑架构图,其中,重定向模块对用户终端的数据库连接请求进行监测,并将所述数据库连接请求重定向到sshproxy服务模块,sshproxy服务模块与sshserver服务模块之间自动建立ssh隧道,sshproxy服务模块通过ssh隧道向sshserver服务模块转发用户终端的加密数据,sshserver服务模块解密后转发至目标数据库。
下面分别从sshproxy服务模块为执行主体和sshserver服务模块为执行主体两个方面对本发明提供的技术方案进行进一步阐述。
实施例一
请参阅图2,本实施例公开了一种基于ssh隧道的自动加密方法,应用于sshproxy服务模块,所述sshproxy服务模块安装在用户的windows客户端,所述方法包括:
s101:接收数据库的重定向请求,并获取目标数据库地址;
用户终端发起数据库连接请求后,该数据库连接请求需要被重定向到sshproxy服务模块,经过sshproxy服务模块和sshserver服务模块之间的ssh隧道,发送至目标数据库。
具体的,启动第一监听端口,监听数据库的重定向请求;
当接收到数据库的重定向请求时,获取网络重定向票据,并根据所述网络重定向票据获取目标数据库地址。
目标数据库为用户终端需要连接的数据库。
s102:向sshserver服务模块发送携带有认证信息的ssh隧道建立请求;
s103:当接收到所述sshserver服务模块反馈的认证成功信息后,向所述sshserver服务模块发送所述目标数据库地址;需要说明的是,本实施例中的认证机制为:sshproxy服务模块向sshserver服务模块发送携带有ssh账号和密码的认证信息,sshserver服务模块判断ssh账号和密码是否正确,若正确,认证成功。
s104:当接收到所述sshserver服务模块反馈的ssh隧道建立成功信息时,将用户终端发送的数据库连接请求包进行ssh加密,并将加密后的数据库连接请求包发送到所述sshserver服务模块;
s105:接收所述sshserver服务模块反馈的连接响应包,并对所述连接响应包进行解密后将所述连接响应包发送至所述用户终端;
s106:对所述用户终端发送的上行数据包进行加密,并将加密后的上行数据包发送到所述sshserver服务模块;
s107:对所述sshserver服务模块发送的下行数据包进行解密,并将解密后的下行数据包发送到所述用户终端。
sshproxy服务模块将所述连接响应包发送至所述用户终端之后,用户终端与目标数据库之间的连接请求建立成功,用户终端可以基于ssh隧道进行数据库的正常访问了,sshproxy服务模块只需要将收到来自用户终端的上行数据进行加密转发到sshserver服务模块,将目标数据库返回的下行数据库进行解密再转发到用户终端即可。
需要说明的是,当所述用户终端与所述目标数据库之间的连接断开时,断开与所述sshserver服务模块之间的连接,并断开与所述用户终端之间的连接。
本实施例公开的一种基于ssh隧道的自动加密方法,不需要用户手动创建ssh隧道,通过使用重定向模块的网络重定向功能、以及sshproxy服务模块和sshserver服务模块的中间人代理功能自动创建ssh隧道,在sshproxy服务模块和sshserver服务模块之间通过认证机制进行通信,脱离原有的用户输入账号密码的认证机制,用户不需要记忆ssh服务参数,减轻了用户的工作量,同时也避免了ssh账号密码泄露的造成的安全威胁。
实施例二
请参阅图3,本实施例公开了另一种基于ssh隧道的自动加密方法,应用于sshserver服务模块,所述方法包括:
s201:接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求;
具体的,启动第二监听端口,监听来自sshproxy服务模块的ssh隧道建立请求;
当接收到所述sshproxy服务模块发送的ssh隧道建立请求时,获取所述ssh隧道建立请求携带的认证信息。
s202:根据所述认证信息对所述sshproxy服务模块进行认证,并向所述sshproxy服务模块发送认证成功信息;
s203:接收所述sshproxy服务模块发送的目标数据库地址,根据所述目标数据地址与目标数据库建立连接,并向所述sshproxy服务模块发送ssh隧道建立成功信息;
需要说明的是,sshsever服务模块还需要接收sshproxy服务模块发送的目标数据库的账号密码,才能与目标数据库建立连接。
s204:接收所述sshproxy服务模块发送的数据库连接请求包,对所述数据库连接请求包进行解密,并将解密后的数据库连接请求包发送到所述目标数据库;
s205:接收所述目标数据库反馈的连接响应包,对所述连接响应包进行加密,并将加密后的连接响应包发送到所述sshproxy服务模块;
s206:对所述sshproxy服务模块发送的上行数据包进行解密,并将解密后的上行数据包发送到所述目标数据库;
s207:对所述目标数据库发送的下行数据包进行加密,并将加密后的下行数据包发送到所述sshproxy服务模块。
需要说明的是,当所述用户终端与所述目标数据库之间的连接断开时,断开与所述sshproxy服务模块之间的连接,并断开与所述目标服务器之间的连接。
还需要说明的是,可以限制sshserver服务模块的转发目标,即,设置sshserver服务模块可以连接的数据库地址,避免用户随意翻墙,提高数据安全性。
本实施例公开的一种基于ssh隧道的自动加密方法,接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求,根据所述认证信息对所述sshproxy服务模块进行认证,认证成功后根据sshproxy服务模块发送的目标数据库地址与目标数据库建立连接,实现了用户终端与目标服务器之间的基于ssh隧道的数据自动加密传输。
实施例三
基于上述实施例一公开的一种基于ssh隧道的自动加密方法,请参阅图4,本实施例对应公开了一种sshproxy服务模块,包括:
第一接收单元301,用于接收数据库的重定向请求,并获取目标数据库地址;
所述第一接收单元301,具体用于启动第一监听端口,监听数据库的重定向请求;当接收到数据库的重定向请求时,获取网络重定向票据,并根据所述网络重定向票据获取目标数据库地址。
第一发送单元302,用于向sshserver服务模块发送携带有认证信息的ssh隧道建立请求;
第二发送单元303,用于当接收到所述sshserver服务模块反馈的认证成功信息后,向所述sshserver服务模块发送所述目标数据库地址;
第一加密单元304,用于当接收到所述sshserver服务模块反馈的ssh隧道建立成功信息时,将用户终端发送的数据库连接请求包进行ssh加密,并将加密后的数据库连接请求包发送到所述sshserver服务模块;
第一解密单元305,用于接收所述sshserver服务模块反馈的连接响应包,并对所述连接响应包进行解密后将所述连接响应包发送至所述用户终端;
第二加密单元306,用于对所述用户终端发送的上行数据包进行加密,并将加密后的上行数据包发送到所述sshserver服务模块;
第二解密单元307,用于对所述sshserver服务模块发送的下行数据包进行解密,并将解密后的下行数据包发送到所述用户终端。
当所述用户终端与所述目标数据库之间的连接断开时,所述sshproxy服务模块断开与所述sshserver服务模块之间的连接,并断开与所述用户终端之间的连接。
需要说明的是,sshproxy服务模块以服务的形式存在,依赖三方库libssh,安装在用户的windows客户端。
本实施例公开的sshproxy服务模块能够与sshserver服务模块建立ssh隧道,在sshproxy服务模块和sshserver服务模块之间通过认证机制进行通信,脱离原有的用户输入账号密码的认证机制,用户不需要记忆ssh服务参数,减轻了用户的工作量,同时也避免了ssh账号密码泄露的造成的安全威胁。实现用户终端与目标服务器之间的基于ssh隧道的数据自动加密传输。
实施例四
基于上述实施例二公开的一种基于ssh隧道的自动加密方法,请参阅图5,本实施例对应公开了一种sshserver服务模块,包括:
第二接收单元401,用于接收sshproxy服务模块发送的携带有认证信息的ssh隧道建立请求;
所述第二接收单元401,具体用于启动第二监听端口,监听来自sshproxy服务模块的ssh隧道建立请求;当接收到所述sshproxy服务模块发送的ssh隧道建立请求时,获取所述ssh隧道建立请求携带的认证信息。
认证单元402,用于根据所述认证信息对所述sshproxy服务模块进行认证,并向所述sshproxy服务模块发送认证成功信息;
建立单元403,用于接收所述sshproxy服务模块发送的目标数据库地址,根据所述目标数据地址与目标数据库建立连接,并向所述sshproxy服务模块发送ssh隧道建立成功信息;
第三解密单元404,用于接收所述sshproxy服务模块发送的数据库连接请求包,对所述数据库连接请求包进行解密,并将解密后的数据库连接请求包发送到所述目标数据库;
第三加密单元405,用于接收所述目标数据库反馈的连接响应包,对所述连接响应包进行加密,并将加密后的连接响应包发送到所述sshproxy服务模块;
第四解密单元406,用于对所述sshproxy服务模块发送的上行数据包进行解密,并将解密后的上行数据包发送到所述目标数据库;
第四加密单元407,用于对所述目标数据库发送的下行数据包进行加密,并将加密后的下行数据包发送到所述sshproxy服务模块。
当所述用户终端与所述目标数据库之间的连接断开时,所述sshserver服务模块断开与所述sshproxy服务模块之间的连接,并断开与所述目标服务器之间的连接。
需要说明的是,sshserver服务模块以服务的形式存在,依赖三方库libssh,可以安装在某一台windows主机,也可以安装在某一台linux主机,只要安装的主机能够与核心资源域的目标数据库联通即可。
本实施例公开的sshserver服务模块能够与sshproxy服务模块建立ssh隧道,在sshproxy服务模块和sshserver服务模块之间通过认证机制进行通信,脱离原有的用户输入账号密码的认证机制,用户不需要记忆ssh服务参数,减轻了用户的工作量,同时也避免了ssh账号密码泄露的造成的安全威胁。实现用户终端与目标服务器之间的基于ssh隧道的数据自动加密传输。
实施例五
基于上述实施例,请参阅图6,本实施例公开了一种基于ssh隧道的自动加密系统,包括:
重定向模块501、实施例三公开的sshproxy服务模块502和实施例四公开的sshserver服务模块;
所述重定向模块,用于对用户终端的数据库连接请求进行监测,获取所述数据库连接请求的目标数据库地址,向所述sshproxy服务模块发送重定向请求,并向sshproxy服务模块发送携带有所述目标数据库地址的重定向票据。
本实施例公开的一种基于ssh隧道的自动加密系统可以应用于以下三种场景:
场景一
数据库服务器只公开了ssh服务,请参阅图7,目标数据库所在服务器只对外开发ssh服务,数据库访问用户只有通过对外公开的ssh端口代理才能访问ssh服务所在服务器的目标数据库。
场景二
数据库在内网,请参阅图8,数据库访问用户通过ssh服务器做跳板访问内网数据库,数据库所在内网限制其他服务器直接连接,数据库访问用户只有通过对外公开的中间ssh服务器代理才能访问内网数据库。
场景三
穿过防火墙访问内网数据库,目标数据库服务器位于防火墙内侧,请参阅图9,数据库访问用户只有通过防火墙对外公布的ssh端口代理才能访问防火墙内侧数据库。
本实施例公开的一种基于ssh隧道的自动加密系统不仅适用于加密用户终端上的明文协议网络会话,同样也适用于从虚拟化平台上发起的明文协议网络会话,例如:微软的ts以远程应用的方式发起的明文协议会话,以及从云桌面上发起的明文协议网络会话等。
本实施例公开了一种基于ssh隧道的自动加密系统,不需要用户手动安装专门的ssh客户端,也不需要用户手动创建ssh隧道,本实施例通过使用重定向模块的网络重定向功能、以及sshproxy服务模块和sshserver服务模块的中间人代理功能自动创建ssh隧道,在sshproxy服务模块和sshserver服务模块之间通过认证机制进行通信,脱离原有的用户输入账号密码的认证机制,用户不需要记忆ssh服务参数,减轻了用户的工作量,同时也避免了ssh账号密码泄露的造成的安全威胁。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。