发明内容
本发明解决的技术问题是提供一种认证网关,不仅对设备进行身份认证,而且该认证网关采用基于数字证书的PKI认证体系对访问应用系统的用户进行身份认证,使得只有身份认证通过的用户才能穿过认证网关访问应用系统,未通过的用户无法访问应用系统;为此,本发明还要提供一种该认证网关的数据处理方法。
为解决上述技术问题,本发明认证网关包括IP层监控模块、身份认证模块、路由模块、管理配置模块、审计模块和用户消息通知模块;该认证网关与用户终端、适配服务器、应用系统实现信息交互;
所述IP层监控模块基于路由软件的Netfilter框架的iptables的数据报文选择系统改造而成,该IP层监控模块负责实现对进入IN端口的IP层数据包进行解析、监控,决定是否允许其通过,此过程相对于接入用户完全透明;
所述身份认证模块由认证客户端和认证服务端(即认证服务器)两部分组成,通过自定义的IP层专有认证通讯协议,采用challenge/reply认证模式,实现对用户身份的基于X.509证书的本地认证功能,认证服务端包括一个已认证用户列表,其上记载着已认证身份且在“活跃期”的用户的信息;
所述路由模块,由管理BGP-4和BGP-4+协议的Bgpd子模块、管理RIPv1,v2协议的Ripd子模块、管理RIPng协议的Ripngd子模块、管理OSPFv2协议的Ospfd子模块、管理OSPFv3协议的ospf6d子模块组成,实现动态路由器的全部功能,包括IP数据报文转发、基于OSPF、BGP协议的路由表动态更新功能;
所述用户消息通知模块在用户通过所述认证网关的身份认证并得到相应的授权后,将用户信息及时通知给适配服务器;
所述管理配置模块主要完成对用户、管理员基本信息和证书的管理,并能够完成对路由信息的配置和实时监控所述认证网关的功能;
所述审计模块完成两种日志功能:基于syslog日志协议的远程日志功能和本地日志功能;
所述认证网关在运行时,各模块组合如下:
IP层监控模块在IN端口对由外网到达认证网关意欲进入应用系统的IP数据包进行监控,当检测到IP数据包的源IP地址及用户信息在“已认证用户列表”中并不存在时,IP层监控模块通过系统调用实现和身份认证模块的组合;
当身份认证模块在对用户进行身份认证后,将调用消息通知接口实现和用户消息通知模块的组合,同时调用日志发送接口发送日志信息实现和审计模块的组合;
当用户通过身份认证后,所述认证网关通过系统调用实现和路由模块的组合,并通过路由模块转发数据;
所述认证网关采用全IP架构,其中:IP层监控模块、身份认证模块和路由模块工作在IP层,实现对应用系统透明和IP层互联功能;管理配置模块、用户消息通知模块、审计模块工作在应用层,提供对认证网关管理、审计及用户消息通知功能。
本发明认证网关的监听、认证、路由流程步骤如下:
1)IP层监控模块在IN端口对IP数据包进行侦测,当检测到IP数据包的源IP地址在“已认证用户列表”中并不存在时,即有未认证的或已过认证“活跃期”的源IP地址访问内网时,立即通知身份认证模块进行认证,并丢弃该IP数据包;
2)身份认证模块发送“认证请求”到该IP地址,要求该地址所在的用户示证,“认证请求”包括当前认证session号,认证随机数信息;
3)认证客户端收到服务端发出的“认证请求”,用自己的私钥对认证随机数进行签名,并附上自己的证书,组成“签名回应”数据包,将“签名回应”包发送给认证服务端;
4)认证服务端接收到客户端发出的“签名回应”,首先使用根证书对“签名回应”数据包中的用户证书进行验证,通过验证的,就使用该证书对签名进行验签,验签成功则向已认证用户列表中添加该用户信息,并加盖时间戳,同时反馈认证通过的消息给IP监控模块,发出容许该IP地址在“活跃期”内通过的指令,允许用户通过认证网关访问应用系统;
5)否则,反馈认证失败的消息,并禁止该IP访问应用系统;
6)认证服务端在每一个经过认证的IP地址即将超过认证“活跃期”时,重复从2)到5)的操作,保证了用户与应用系统通信过程中的定时自动认证,而且不影响网络资源的使用;
7)除了步骤6)的重新认证策略即定时重新认证,还可以选择另一种重新认证策略方案:即在用户通过认证后,根据网络流量来判断用户是否仍处在活跃状态,流量大于某一阀值的则认为活跃,小于某一阀值的则认为不活跃,已经处于不活跃状态的IP地址的用户,其信息从已认证用户列表中删除,再次访问的时候则要求重新认证;
8)认证通过后,IP层监控模块就将该IP地址的数据包的处理权移交给路由模块,由路由模块实施对该IP地址的数据包的路由转发操作。
本发明的有益效果是:所述认证网关工作在IP层,对应用透明,可实现应用网关的快速部署;在IP层上对IP设备及设备用户进行基于数字证书的身份认证,确保对可信网络的安全保护;在IP层上对数据进行转发,保证数据通讯的通畅;在认证的过程中,采用基于PKI认证体系的身份认证,保证认证的可靠性。
具体实施方式
如图1所示,本发明认证网关包括IP层监控模块、身份认证模块、路由模块、管理配置模块、审计模块和用户消息通知模块;该认证网关与用户终端、适配服务器、应用系统实现信息交互。
所述IP层监控模块基于路由软件的Netfilter框架的iptables的数据报文选择系统改造而成,该IP层监控模块负责实现对进入IN端口的IP层数据包进行解析、监控,决定是否允许其通过,此过程相对于接入用户完全透明。
所述身份认证模块由认证客户端和认证服务端(即认证服务器)两部分组成,通过自定义的IP层专有认证通讯协议,采用challenge/reply认证模式,实现对用户身份的基于X.509证书的本地认证功能,认证服务端包括一个已认证用户列表,其上记载着已认证身份且在“活跃期”的用户的信息;
所述路由模块,由管理BGP-4和BGP-4+协议的Bgpd子模块、管理RIPv1,v2协议的Ripd子模块、管理RIPng协议的Ripngd子模块、管理OSPFv2协议的Ospfd子模块、管理OSPFv3协议的ospf6d子模块组成,实现动态路由器的全部功能,包括IP数据报文转发、基于OSPF、BGP协议的路由表动态更新功能;
所述用户消息通知模块在用户通过所述认证网关的身份认证并得到相应的授权后,将用户信息及时通知给适配服务器;
所述管理配置模块主要完成对用户、管理员基本信息和证书的管理,并能够完成对路由信息的配置和实时监控所述认证网关的功能;对用户的管理,需通过适配服务器中的日志服务器与授权模块的协调工作来实现;
所述审计模块完成两种日志功能:基于syslog日志协议的远程日志功能和本地日志功能。
本发明认证网关在运行时,各模块组合如下:
组合1:IP层监控模块在IN端口对由外网到达认证网关意欲进入应用系统的IP数据包进行监控,当检测到IP数据包的源IP地址及用户信息在“已认证用户列表”中并不存在时,IP层监控模块通过系统调用实现和身份认证模块的组合。
组合2:当身份认证模块在对用户进行身份认证后,将调用消息通知接口实现和用户消息通知模块的组合,同时调用日志发送接口发送日志信息实现和审计(日志)模块的组合。
组合3:当用户通过身份认证后,认证网关通过系统调用实现和路由模块的组合,并通过路由模块转发数据。
本发明认证网关各模块运行时的控制描述如下:运行IP层监控模块,实现对IP包的监控、解析;运行路由模块,实现对IP包的路由转发;运行管理配置模块,实现对用户信息、路由信息的管理、配置和监控;运行认证服务器即认证服务端,监听认证协议信息;认证服务器在用户通过认证后,调用用户消息通知模块通知应用系统;认证服务器在用户通过认证后,同时调用审计(日志)模块,发送日志信息。
本发明认证网关层次模型遵循网络协议栈分层式的体系模型,采用模块化和对象式的混合编程,使用代码复用技术和统一模块结构,确保系统的可扩展性、易维护性、高效性和高可靠性,其层次模型如图2所示。
整个认证网关采用全IP架构,其中:IP层监控模块、身份认证模块和路由模块工作在IP层,从而实现了对应用系统透明和IP层互联功能;管理配置模块、用户消息通知模块、审计(日志)模块工作在应用层,提供了对本发明认证网关管理、审计及用户消息通知功能。
本发明认证网关数据处理流程描述如下:
在客户端通过本发明认证网关访问应用系统的一次完整的过程中,所述认证网关对数据进行处理的流程经历了如下阶段:监控阶段、身份认证阶段、用户消息通知阶段和路由转发阶段。
监控阶段:如图1所示,IP层监控模块在IN端口处监控IP数据包,如果当前数据包的源IP地址及用户信息在“已认证用户列表”中存在时,则将该IP包放行至路由模块,由路由模块进行路由;如果不存在,则IP层监控模块通过系统调用启动身份认证模块,由身份认证模块发起对该IP地址的用户的身份认证请求,进入认证阶段。监控阶段数据处理流程如图3所示。
身份认证阶段:身份认证模块启动后,向用户发起基于数字证书的身份认证,详细的身份认证过程将在后续的身份认证详细工作流程中叙述,此处仅描述认证结果的处理过程,其处理过程如下(如图4所示):
身份认证模块向IP层监控模块和用户返回认证结果;
若认证失败,则IP层监控模块拒绝用户访问请求,丢弃后续的该用户的数据包;
若认证成功,则身份认证模块向已认证用户列表中添加该用户信息,并加以时间戳。IP层监控模块参照已认证用户列表中的信息,准予后续的该用户的数据包通过。
监控阶段、身份认证阶段完成了对用户访问应用系统时的身份认证和控制功能,只有具有访问权限的用户,其访问数据才能通过认证网关,到达应用系统,而不是仅仅根据访问设备的IP地址来决定是否允许其IP包通过。
用户消息通知阶段:当用户通过认证后,需要通过适配服务器(适配服务器不属于本发明认证网关的组成部件,而是所述认证网关的运行支持环境部件)通知应用系统进入相应的对用户临时授权,容许用户访问应用系统。用户消息通知阶段数据处理流程如图5所示,其流程描述如下:
用户消息通知模块将通过认证用户信息(包括IP地址、用户证书ID号等信息)通知给适配服务器;适配服务器将用户登录信息通知应用系统,触发应用系统进行相应的授权动作;用户根据授权,使用权限范围内的应用系统资源;同时所述认证网关写日志,记录此次用户登录信息。
路由转发阶段:路由转发阶段的数据处理过程遵循通用的路由协议,根据目标IP地址进行路由,其工作流程如图6所示。
用户消息通知阶段、路由转发阶段实现了对用户使用应用系統资源时的权限管理功能和路由功能。
下面对IP层监控和身份认证两个关键阶段的数据处理工作流程作进一步详细描述。
IP层监控阶段详细工作流程。
一个数据包通过Netfilter系统的过程如图7所示。
数据包从左边进入系统,进行IP校验以后,数据包经过第一个钩子函数NF_IP_PRE_ROUTING[1]进行处理;然后就进入路由代码,路由代码判断该数据包是转发还是发给本机。若是发给本机的,则该数据经过钩子函数NF_IP_LOCAL_IN[2]处理以后传递给上层协议;若该数据包是转发的,则它被NF_IP_FORWARD[3]处理,然后交由最后一个钩子函数NF_IP_POST_ROUTING[4]处理,再传输到网络上。
本地产生的数据经过钩子函数NF_IP_LOCAL_OUT[5]处理妥当后,进行路由选择处理,然后经由NF_IP_POST_ROUTING[4]处理,发送到网络上。
本发明认证网关,在NF_IP_PRE_ROUTING[1]处挂接IP监控处理函数,实现对IP包进行监控解析的功能,以及用户身份是否需要认证的识别功能,其处理流程如图8所示,处理步骤如下:
第一步:判断是否是路由协议信息即对UDP头的协议字段进行判断,如果是则不做任何操作,ip_rcv函数继续向下运行,即将该数据放行;否则进入第二步;
第二步:判断是否为自定义的认证协议包即判断skb->nh.iph->protocol字段,如果是则不做任何操作,放行数据;否则进入第三步;
第三步:判断是否是到达本机IP的数据,如果不是则进入第五步;如果是则进入第四步;
第四步:判断是否是从管理端口接收到的数据即判断skb->dev->name字段,如果是则放行,否则丢弃该sk_buff;
第五步:对源地址即skb->nh.iph->saddr字段进行判断,在内核态的“已通过认证IP链表”中如果有该IP地址就不做任何操作,ip_rcv函数继续向下运行,即将该数据放行,否则将该sk_buff丢弃,同时将该IP地址通知身份认证模块,由身份认证模块对该IP地址的用户发出认证请求。
由于在监控过程中加入了源IP地址是认证网关还是客户端的判断,所以,不会出现认证网关互相要求认证的情形。
身份认证阶段详细工作流程。
当身份认证模块收到监控模块传来的要求对客户端用户进行认证的通知后,向客户端发出认证请求,开始认证过程。其处理流程如图9所示,具体过程如下:
身份认证模块的认证服务端发出一个请求给身份认证模块的认证客户端,要求认证客户端传送该端用户的证书ID号;
认证客户端响应认证服务端发出的请求,将用户证书ID号送给认证服务端进行处理;
认证服务端收到证书ID号后,生成随机数传送给认证客户端;
认证客户端的用户收到由认证服务端传来的随机数后,使用用户X.509证书进行签名,并将签名和证书一起传给认证服务端;
认证服务端进行验签,如果通过,则向已认证用户列表中添加该用户信息,并加盖时间戳,同时反馈认证通过的消息给认证客户端,发出容许该IP地址在“活跃期”内通过的指令,允许用户的数据通过所述认证网关访问应用系统;
否则,反馈认证失败的消息,并禁止该IP访问应用系统。
本发明认证网关的监听、认证、路由流程步骤如下:
1)IP层监控模块侦测到,进入IN端口的当前IP数据包的源IP地址在“已认证用户列表”中并不存在时,即有未认证的或已过认证“活跃期”的源IP地址访问内网时,立即通知身份认证模块进行认证,并丢弃该IP数据包;
2)身份认证模块发送“认证请求”到该IP地址,要求该地址所在的用户示证,“认证请求”包括当前认证session号,认证随机数等信息;
3)认证客户端收到服务端发出的“认证请求”,用自己的私钥对认证随机数进行签名,并附上自己的证书,组成“签名回应”数据包,将“签名回应”包发送给认证服务端;
4)认证服务端接收到客户端发出的“签名回应”,首先使用根证书对“签名回应”数据包中的用户证书进行验证,通过验证的,就使用该证书对签名进行验签,验签成功则向已认证用户列表中添加该用户信息,并加盖时间戳,同时反馈认证通过的消息给IP监控模块,发出容许该IP地址在“活跃期”内通过的指令,允许用户通过认证网关访问应用系统;
5)否则,反馈认证失败的消息,并禁止该IP访问应用系统;
6)认证服务端在每一个经过认证的IP地址即将超过认证“活跃期”时,重复从2)到5)的操作,保证了用户与应用系统通信过程中的定时自动认证,而且不影响网络资源的使用;
7)除了步骤6)的重新认证策略即定时重新认证,还可以选择另一种重新认证策略方案:即在用户通过认证后,根据网络流量来判断用户是否仍处在活跃状态,流量大于某一阀值的则认为活跃,小于某一阀值的则认为不活跃,已经处于不活跃状态的IP地址的用户,其信息从已认证用户列表中删除,再次访问的时候则要求重新认证;
8)认证通过后,IP层监控模块就将该IP地址的IP包的处理权移交给路由模块,由路由模块实施对该IP地址的IP包的路由转发操作。
本发明认证网关设有用户接口、外部接口、内部接口。
所述用户接口主要为管理接口和硬件接口,分别描述如下:管理接口向管理员提供基于IE浏览器模式的管理界面,使管理配置变得简明、方便;硬件接口向外提供三个RJ45接口,分别为连接公网的IN端口、连接应用系统的OUT端口和连接适配服务器的M即管理配置端口。其中,IN RJ45端口:向接入用户提供100M网络接口;OUT RJ45端口:向应用系统提供100M网络接口;M RJ45端口:向管理系统提供管理配置、消息通知和审计端口。
所述外部接口包括和客户端服务器通讯接口,主要为用户消息通知模块接口,其接口定义如下:
●int Build_Connection(int*sockFd,char*ip);
功能说明:建立网络连接
参数: int*sockFd[OUT] 连接描述符指针
char*ip[IN] IP地址指针
●int Send_Msg(int*sockFd,unsigned char*pMsg,int msgLen);
功能说明:发送数据报文
参数: int*sockFd[IN] 连接描述符指针
unsigned char*pMsg[IN] 数据报文指针
int msgLen 数据报文长度
还包括和授权系统通讯接口,和授权系统的用户信息数据结构接口定义如下:
●插入用户信息数据报文,其内容如下表所示;
命令码4bytes |
名字32bytes |
证书ID号32bytes |
开始日期8bytes |
结束日期8bytes |
开始时间6bytes |
结束时间6bytes |
签名策略4bytes |
●删除用户信息数据报文,其内容如下表所示;
证书ID号132bytes | …… |
证书ID号n32bytes |
其中:
命令码标志有:INSERT(插入)、DELETE(删除)两种标识。
int Rcv_User_Msg(int*sockFd,unsigned char*pMsg,int msgLen);
功能说明:接收用户数据,并按命令码进行相应操作
参数: int*sockFd[IN] 连接描述符指针
unsigned char*pMsg[IN] 用户数据报文指针
int msgLen 用户数据报文长度
内部接口。由于本发明认证网关程序模块工作状态有用户态和内核态两种,其内部接口主要为通过系统调用实现工作在内核态的IP层监控模块和工作在用户态的身份认证模块进行消息通讯。
所述内部接口为IP层监控和身份认证模块系统调用接口,由于本发明认证网关身份认证模块工作在用户态,同时IP层监控模块工作在内核态,当IP层监控模块监听到有新IP出现,或者检查到IP地址已过了“活跃期”时,将通过系统调用通知身份认证模块进行认证,其接口描述如下:
asmlinkage int sys_rzwgSYSCALL(char*buf,int buflen,unsigned int access);
功能:系统调用接口
输入:char*buf【IN/OUT】 数据缓冲区指针
int buflen【IN/OUT】 数据缓冲区长度
unsigned int access【IN】 操作类型
返回值:0 成功
非0 失败
本发明为服务器形态的认证网关。电源模块采用双电源冗余设计,各独立单元功率为150W,为系统提供50%功率冗余。电气特性:电压允许范围180-240V,电流瞬时波动时间小于1S。液晶显示屏提供设备状态显示窗口。