一种基于流的网络接入控制方法
技术领域
本发明属于网络接入技术领域,更为具体地讲,涉及一种基于流的网络接入控制方法。
背景技术
随着各行各业的信息化程度不断提高、用户设备的日益多样化,来自于病毒、木马、外部人员甚至是内部人员的不安全因素,给网络安全管理带来的严峻的考验。
传统的网络接入控制包括802.1X(基于端口的网络接入控制)认证和动态接入控制等方式。
802.1X认证包括三部分:请求者、认证者和认证服务器。请求者是希望接入到局域网的设备(如笔记本)。认证者是一种网络设备,可以是以太网交换机或者无线接入点,负责转发认证信息、控制请求者的网络访问。认证服务器则是根据认证者的信息,对请求者进行最终的身份认证的设备。初始化阶段,请求者所连接的交换机(认证者)的端口设置为“未授权”的状态。若端口处于“未授权”状态,只允许802.1X报文通过,其它报文(如IP协议报文)都会被丢弃。请求者发起身份认证请求,认证者转发认证请求至认证服务器,开始用户身份的认证,若认证通过,请求者所连接的端口进入“已授权”状态,用户可以正常进行网络访问。
动态接入控制:根据连接到交换机端口上的设备所发送的数据包的源MAC地址,把该交换机端口动态分配到相应的VLAN。例如,Cisco设备则通过VMPS(VLANManagementPolicyServer,管理策略服务器)技术来实现动态接入控制。通过基于端口的VLAN动态分配,除了可隔离非法设备,还可以对合法设备进行进一步的划分,如不同部门间的访问隔离。
802.1X认证和动态接入控制本质上都是基于“用户身份”的接入控制。802.1X中根据用户身份信息的认证是否通过,决定设备所连接的端口状态为“已授权”还是“未授权”。动态接入控制中,使用设备的源MAC地址作为用户身份的标识,根据用户身份,把设备所连的端口分配到相应的VLAN中。
随着网络技术发展,目前现实的企业网络或者园区网络中,存在“用户身份”和“应用”的多样性,“用户身份”的多样性主要体现在企业中部门的多样性和职位的多样性,即不同的部门中有着多种职位,如划分管理层和一般员工。“应用”的多样性主要体现在部门的多样性和资源的多样性,例如各个部门中有着各自独享的不同访问等级的资源,也存在可以共享的资源。802.1X认证和动态接入控制所提供的基于“用户身份”的接入控制虽然简单,但无法适应“用户身份”多样、“应用”多样的接入控制,因此需要更加灵活定义、综合考虑的接入控制方式,适应“用户身份”和“应用”的多样性。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于流的网络接入控制方法,通过流的匹配来实现用户身份、应用类型的匹配,在多用户身份、多应用的网络环境中实现灵活多样的接入控制。
为实现上述发明目的,本发明基于流的网络接入控制方法,包括以下步骤:
S1:在信息存储器中存储系统的配置信息和状态信息,配置信息包括:流匹配项与应用的映射关系,用户身份、应用与访问权限的映射关系,每个用户身份具有的权限等级与对应密码,其中每个用户身份具有至少一个权限等级;状态信息包括:流匹配项与用户身份的映射关系,用户登录状态与当前权限等级;
S2:接入控制器从来自用户或应用资源服务器的数据包中提取流匹配项,与本地流表的流表项进行匹配,如果不存在匹配的流表项,进入步骤S3;如果存在匹配的流表项,进入步骤S12;
S3:接入控制器将数据包转发至流控制器,进入步骤S4;
S4:流控制器根据数据包中的应用流匹配项从信息存储器中存储的流匹配项与应用的映射关系查询得到应用类型,判断该应用是否为无需权限认证的默认应用,如果是,进入步骤S9,如果不是,进入步骤S5;
S5:流控制器提取数据包中的用户流匹配项,从信息存储器中存储的流匹配项与用户身份的映射关系查询得到该数据包对应的用户身份,并查询得到用户登录状态和当前权限等级,根据用户登录状态判断用户是否登录,如果未登录,进入步骤S10,如果已登录,进入步骤S6;
S6:根据步骤S4和步骤S5查询得到的用户身份和应用类型从信息存储器存储的用户、应用与访问权限的映射关系中查询得到所需访问权限,判断所需访问权限是否为“禁止访问”,如果是,进入步骤S8,如果不是,进入步骤S7;
S7:判断步骤S6查询得到的用户当前等级权限是否大于等于所需访问权限,如果是,进入步骤S9,如果不是,进入步骤S10;
S8:设置数据包所对应的流的操作为“丢弃该流”,进入步骤S11;
S9:设置数据包所对应的流的操作为“允许流通过”,进入步骤S11;
S10:设置数据包所对应的流的操作为“强转至登录和权限服务器”,进入步骤S11;
S11:流控制器根据数据包的流匹配项和判断得到的对应的流的操作,下发流表项至接入控制器,进入步骤S12;
S12:接入控制器根据流表中对应流表项的流处理流程对数据包进行操作;当接入控制器将数据包强转至登录和权限服务器,登录与权限服务器从信息存储器中查询到用户登录状态和当前权限等级,提示用户登录或权限提升,如果改变了用户登录状态或当前权限等级,登录和权限服务器在信息存储器中写入更改后的用户登录状态和当前权限等级,否则不作任何操作;本次接入控制结束。
进一步地,步骤S4前,流控制器还需判断数据包的来源地址是否合法,如果不合法,进入步骤S8,如果合法,进入步骤S4。
进一步地,所述步骤S5中用户未登录或步骤S7中用户当前权限等级小于所需访问权限时,流控制器查询得到所需访问权限,作为期待权限存储到信息存储器,在步骤S12中登录与权限服务器从信息存储器中查询得到期待权限,直接提示用户按照期待权限登录。
进一步地,所述信息存储器中还存储有用户行为参数,所述步骤S7在进入步骤S9之前,流控制器还需要判断本次访问行为是否符合用户行为参数,如果符合,则统计本次访问行为参数,存储至信息存储器,进入步骤S9;如果不符合,进入步骤S10。
进一步地,步骤S10执行前,流控制器还需要判断数据包是否属于登录和权限服务器接收类型,如果属于,进入步骤S10;如果不属于,进入步骤S8。
进一步地,步骤S12中如果登录和权限服务器改变了用户的登录状态或当前权限等级,将会把更改通知发送给流控制器,否则不作任何操作;流控制器重新查询信息存储器中的用户登录状态和当前权限等级,对接入控制器中的相应限制流表项进行删除。
进一步地,流控制器还会记录删除流表项对应的用户行为参数。
其中,用户行为参数包括访问的应用类型和最后访问时间。
本发明的发明目的是这样实现的:
本发明基于流的网络接入控制方法,每个用户身份具有至少一个权限等级,不同用户身份的用户访问不同应用时各自对应有所需访问权限,各用户可以通过不同等级的权限登录,从而实现不同应用资源的访问。当接入控制器接收到属于新流的数据包时,将其转发给流控制器,流控制器对数据包进行分析判断,包括用户是否登录、当前权限等级是否满足等,根据不同情况下发对应的流表项给接入控制器,指导接入控制器的流处理。与传统的基于用户身份的网络接入控制相比较,本发明将用户和应用统一起来,进行多级权限划分,从而实现多用户、多应用的访问控制。在由于目前复杂网络接入环境中,存在多种用户和多种应用类型,两者的范围上存在相交和不相交的部分,所以在进行权限划分的时候,把两者统一起来考虑,比把两者分开考虑再对应起来更合适。
此外,基于流的网络接入控制方法还涵盖了用户行为的合法性的分析。在用户行为的合法性分析的基础上,通过流来映射用户身份和应用,进而表征用户行为,进而实现对以往用户行为的统计、特征提取和对当前流的合法性判断。
附图说明
图1是本发明实现所需的网络接入控制系统示意图;
图2是本发明基于流的网络接入控制方法的一种具体实施方式流程图;
图3是openflow协议中流表项的结构;
图4是实施例所采用的网络接入控制系统的结构示意图;
图5是实施例中基于流的网络接入控制方法的具体实施方式流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
为更好地对本发明进行描述,先对本发明的主要相关概念进行简单的说明:
流:一系列具有相同特征的数据包的总称,相同特征通常采用匹配项进行表征,匹配项包括:源地址、目的地址等。
流表:由多个流表项组成,每个流表项就是一个转发规则。流表存储在交换机,进入交换机的数据包通过查询流表来获得流处理流程。
流表项:包括流匹配项和流处理流程。在基于流的网络接入控制系统中,流匹配项内容通常包括:流在接入控制器上的到达端口,OSI模型中的L2数据链路层、L3网络层、L4传输层。流处理流程由互不冲突的一个或多个流操作组成,流操作包括丢弃数据包、转发数据包、修改数据包头部中的L2数据链路层、L3网络层、L4传输层的内容等。本发明的实施方式中,通过L2数据链路层、L3网络层的匹配来进行用户的表征,通过L3网络层、L4传输层的匹配来进行应用的表征。匹配项中,用来匹配用户身份的部分,称为用户流匹配项,用来匹配应用的部分,称为应用流匹配项。同一个匹配项既可以作为用户流匹配项,也可以作为应用流匹配项。
图1是本发明实现所需的网络接入控制系统示意图。如图1所示,本发明实现所需的网络接入控制系统包括接入控制器、登录和权限服务器、信息存储器、流控制器。各组成设备的具体功能如下:
接入控制器,存储有流表,用于将从用户或应用资源服务器收到的数据包与流表中的流匹配项进行匹配,如果匹配,则进行对应的流处理流程,如果不匹配,就将数据包转发给流控制器进行分析。
信息存储器,存储系统的配置信息与状态信息,配置信息包括:流匹配项与应用的映射关系,用户身份、应用与访问权限的映射关系,每个用户身份具有的权限等级与对应密码,其中每个用户身份具有至少一个权限等级;状态信息包括:流匹配项与用户身份的映射关系,用户登录状态与当前权限等级。多个用户的用户身份可能相同,例如对于某个应用,有多个用户均是管理员。
流控制器,用于根据信息存储器中的信息对接入控制器转发的数据包进行分析判断,如用户是否登录、用户权限是否满足、用户行为是否合法等,得到对应的流处理操作,下发流表给接入控制器,指导接入控制器进行数据包处理。
登录和权限服务器,用于用户登录和权限提升,每次操作成功后登录和权限服务器将用户登录状态或当前权限等级的存储至信息存储器,还可以将更改通知发送给流控制器。
图2是本发明基于流的网络接入控制方法的一种具体实施方式流程图。如图2所示,本发明基于流的网络接入控制方法包括以下步骤:
S201:接入控制器从用户或应用资源服务器接收数据包,进入步骤S202。
S202:接入控制器从数据包中提取流匹配项,与本地流表的流表项进行匹配,如果不存在匹配的流表项,进入步骤S203;如果存在匹配的流表项,进入步骤S219。
S203:接入控制器将数据包转发至流控制器,进入步骤S204。
S204:流控制器判断数据包所对应的用户IP地址是否合法,如果不合法,进入步骤S205,如果合法,进入步骤S206。本实施方式中,默认应用资源服务器都是可靠的,因此只针对来自用户的数据包,对其源IP地址进行判断。本步骤的目的是保证数据包地址是正确合法的IP地址,而不是被篡改的IP地址。
S205:设置数据包所对应的流的操作为“丢弃该流”,进入步骤S218。
S206:流控制器提取数据包中的应用流匹配项,从信息存储器中存储的流匹配项与应用的映射关系查询得到应用类型ID,进入步骤S207。应用类型ID即是每个应用类型的标识,用于区分不同的应用类型。
S207:根据应用类型ID判断该应用是否为无需权限认证的默认应用,如果是,进入步骤S217,如果不是,进入步骤S208。默认应用是指一些基本网络应用,这些应用无需权限认证,即无论用户是否登录、无论用户身份具有何种等级权限都可以访问的应用。
S208:流控制器提取数据包中的用户流匹配项,从信息存储器中存储的流匹配项与用户身份的映射关系查询得到该数据包对应的用户身份ID,并查询得到用户登录状态和当前权限等级,进入步骤S209。用户身份ID即是每种用户身份的标识,用于区分不同用户身份。对于来自用户的数据包,用户流匹配项包括源IP地址、源MAC地址等;对于来自应用资源服务器的数据包,用户流匹配项包括目的IP地址、目的MAC地址等。在实际操作中,可以采用尝试的方法查询。
S209:根据用户登录状态判断用户是否登录,如果未登录,进入步骤S214,如果已登录,进入步骤S210。
S210:根据步骤S206和步骤S208查询得到的用户身份ID和应用类型ID从信息存储器存储的用户身份、应用与访问权限的映射关系中查询得到所需访问权限,进入步骤S211。
S211:判断所需访问权限是否为“禁止访问”,如果是,进入步骤S205,如果不是,进入步骤S212。“禁止访问”表示不允许属于该用户身份的任何用户以任何等级权限访问该应用。
S212:判断步骤S208查询得到的用户当前等级权限是否大于等于所需访问权限,如果是,进入步骤S213,如果不是,进入步骤S214。
S213:判断本次访问行为是否符合用户行为参数,如果是,进入步骤S216,如果不是,进入步骤S214。用户行为参数是指在之前用户进行应用资源访问的访问记录,如访问的应用类型ID和该应用最后访问时间等,如果对该应用的本次访问行为的时间与最后访问时间之差大于预定阈值,即两次访问间隔过长,即可视为本次访问行为不符合用户行为参数。本步骤的主要作用是用于对用户的访问行为进行一些控制。
S214:判断数据包是否属于登录和权限服务器接收类型,如果不属于,进入步骤S205,如果属于,进入步骤S215。本操作的目的是为了在数据包无法被登录和权限服务器接收时,直接进行丢弃,而不是在接入控制器强转至登录和权限服务器之后拒绝接收,可以减少接入控制器的不必要转发。
S215:设置数据包所对应的流的操作为“强转至登录和权限服务器”,进入步骤S218。对于用户未登录的情况,本操作是提示用户进行登录。对于当前权限等级低于所需权限等级的情况,本操作是提示用户输入更高一级权限对应的密码,从而达到所需权限等级。对于本次访问行为不符合用户行为参数的情况,本操作是提示用户重新进行权限等级确定。为了使用户能够采用一次操作就能达到所需访问权限,在用户未登录或用户当前权限等级小于所需访问权限时,流控制器查询得到所需访问权限,作为期待权限存储到信息存储器,在强转至登录与权限服务器时,登录与权限服务器就能从信息存储器中查询得到期待权限,直接提示用户按照期待权限登录。通常所用的形式为:告知用户所需访问等级,提示用户输入对应的密码。
S216:对本次访问行为参数进行统计,进入步骤S217。当网络接入控制方法中不根据访问行为参数对访问行为进行控制时,不需要执行本步骤,直接从步骤S213进入步骤S217。
S217:设置数据包所对应的流的操作为“允许流通过”,进入步骤S218。
S218:流控制器根据数据包的流匹配项和判断得到的对应的流的操作,下发流表项至接入控制器,进入步骤S219。
S219:接入控制器根据流表中对应流表项的流处理流程对数据包进行处理。可见,如果操作为“允许流通过”,则接入控制器令该数据包通过;如果操作为“强转至登录和权限服务器”,则接入控制器对数据包中相关信息进行更改,强转连接至登录和权限服务器进行登录或权限提升;如果操作为“丢弃该流”,则接入控制器将该数据包丢弃。并且如果执行了“强转至登录和权限服务器”的操作,接入控制器将数据包强转至登录和权限服务器,登录与权限服务器从信息存储器中查询到用户登录状态和当前权限等级,提示用户登录或权限提升,如果改变了用户登录状态或当前权限等级,登录和权限服务器在信息存储器中写入更改后的用户登录状态和当前权限等级,否则不作任何操作。本次接入控制结束。
并且,如果登录和权限服务器改变了用户的登录状态或当前权限等级,将更改通知发送给流控制器,否则不作任何操作;流控制器接收到更改通知后重新查询信息存储器中的用户登录状态和当前权限等级,对接入控制器中的相应限制流表项进行删除,流控制器还会在信息存储器中记录该删除流表项对应的用户行为参数。
实施例
本实施例以openflow协议为基础,说明本发明基于流的网络接入控制系统及方法。
由于本实施例采用了openflow协议,该协议规定的流表匹配项包括:
structofp_match{
uint32_twildcards;表示对以下的匹配项是否通配。例如,若wildcards的第一个bit为1时,则通配in_port这个匹配项,即表示当前流表匹配来自所有端口的流。
uint16_tin_port;表示流是从哪个端口到达openflow交换机的。
uint8_tdl_src[OFP_ETH_ALEN];表示MAC源地址。
uint8_tdl_dst[OFP_ETH_ALEN];表示MAC目的地址。
uint16_tdl_vlan;表示数据包的VLANID。
uint8_tdl_vlan_pcp;表示VLAN优先级。
uint8_tpad1[1];用于将数据填充至64位。
uint16_tdl_type;表示以太帧所承载的数据包类型。
uint8_tnw_tos;表示区分服务码。
uint8_tnw_proto;当dl_type表示当前数据包为IP数据包时,nw_proto就是IP数据包的类型;当dl_type表示当前数据包为ARP数据包时,nw_proto就是ARP数据包中的opcode。
uint8_tpad2[2];用于将数据填充至64位。
uint32_tnw_src;表示IP源地址。
uint32_tnw_dst;表示IP目的地址。
uint16_ttp_src;表示TCP/UDP的源端口。
uint16_ttp_dst;表示TCP/UDP的目的端口。
};
OFP_ASSERT(sizeof(structofp_match)==40);
图3是openflow协议中流表项的结构示意图。如图3所示,openflow协议中流表项由头域、计数器和操作组成,头域是流表项的标识,包括多个流匹配项;计数器用来计数流表项的统计数据;操作表明了与该流表项匹配的数据包应该执行的流处理流程。在实际应用中,也可以通过组合基本的openflow操作来形成符合逻辑的流处理流程。
图4是实施例所采用的网络接入控制系统的结构示意图。如图4所示,本实施例中,接入控制器采用OpenVSwitch(openflow交换机),流控制器采用典型的openflow控制器——NOX,信息存储器采用MySQL实现,登录及权限服务采用web服务器,具体为apache服务器,DHCP服务器和DNS服务器使用轻量级的dnsmasq实现。各部分之间的交互通道有两种:数据通道(虚线)和控制通道(实线)。数据通道中传输的是网络访问的数据包;控制通道中传输的是实现网络访问控制的各类信息。控制通道的两端可以都在本地(即同一台计算机上),也可以一端在本地,另外一端在远端(即两台计算机上)。各设备的主要功能如下:
MySQL,用于存储系统的配置信息和状态信息。本实施例中,MySQL中存储的各种信息均以表格形式表示,包括用户信息表、应用信息表、设备信息表、访问权限表、用户状态表。
用户信息表,记录用户账号的基本信息,其中用户身份ID用于表征用户身份,每个用户身份至少拥有一个密码,每个密码对应不同的权限等级。表1是用户信息表。
表1
应用信息表,记录具体应用的基本信息,其中应用类型ID用于表征应用类型,本实施例中,如果应用类型ID为0或未定义,则该应用为默认应用,表示即使用户没有登录都可访问该应用,其目的是为了在用户登录前,允许用户访问某些特定的资源,如DHCP服务器、DNS服务器,以确保用户能够进行基本的页面登录。表2是应用信息表。
表2
设备信息表,记录网络中所有接入控制器即OpenVSwitch连接的用户及用户状态信息,其中datapath_ID是用户所在OpenflowVSwitch的全网唯一标识。本实施例中,选用MAC地址和IP地址作为用户流匹配项。期待权限是在用户未登录或当前权限等级不够时,流控制器从访问权限表中查询得到的所需访问权限。表3是设备信息表。
表3
访问权限表,记录具有某种用户身份的用户访问某应用所需的访问权限,表4是访问权限表。
表4
用户行为表,记录用户行为特征,其中行为参数用于标识用户行为,行为参数包括但不限于:曾经访问过的受保护资源的应用类型ID(普通的资源都是没有应用类型ID来标识的)及其最后访问时间。一个登录账号可以对应多个应用类型ID,表明该用户对应用类型ID所表征的应用进行了访问;而每个用户的每个应用类型ID都有相应的最后访问时间。表5是用户行为表。
登录账号 |
MAC地址 |
行为参数1 |
行为参数2 |
…… |
行为参数X |
|
|
|
|
|
|
|
|
|
|
|
|
表5
NOX,根据来自dnsmasq、Apache、OpenVSwitch和MySQL的全网信息,通过向openflow交换机下发流表的形式,控制网络中的流的处理行为,同时也会对MySQL中的信息做一些更新维护。本实施例中,NOX包括三个功能模块:新流处理模块、访问限制解除模块、流移除统计模块。
Dnsmasq,提供DNS缓存和DHCP服务功能,为准备入网的用户终端进行IP分配、DNS解析。此外,还为NOX提供MAC地址与IP地址的对应列表(dhcp列表)。当NOX收到来自OpenVSwitch的新流的时候,会进行多项的检查,其中第一项是根据MAC地址查询相应的IP地址。若IP地址为空或者不匹配,则通过读取dnsmasq中的dhcp列表,对MySQL中的IP地址进行更新。如果IP仍然不匹配,则丢弃该流。
Apache,向用户提供登录页面和权限提升页面,并返回相应的操作结果。本实施例中,结果的返回包括以下方式:其一,把结果以页面的形式返回至用户终端,告知用户操作是否成功;其二,若操作成功,apache则更新MySQL中的设备信息表,包括MAC地址、IP地址与用户身份的映射关系、当前权限等级等;其三,若操作成功,apache则向NOX发送用户状态更改通知,NOX收到通知后,重新查询数据库中该用户的信息,进行相应的流表修改,例如删除限制该用户网络访问的相关流表项。本实施例中对NOX的通告使用RESTfulwebserviceAPI来实现,即NOX以http的形式向外提供API,apache在用户终端状态发生变更的时候,以RESTfulAPI的形式向NOX发送用户终端相关的消息通知。
图5是实施例中基于流的网络接入控制方法的具体实施方式流程示意图。如图5所示,本实施例中,基于流的网络接入控制方法的步骤如下:
Step1:OpenVSwitch收到来自用户的数据包,而且找不到相匹配的流表项,则该数据包所对应的流为NewFlow(新流)。
Step2:OpenVSwitch把Step1中的数据包不匹配以Packet-inEvent(数据包进入)的形式通告NOX。
Step3~4:NOX向MySQL发起一系列的质询DatabaseQuery(数据库质询),MySQL对质询进行回复DatabaseReply(数据库回复)。发起的质询包括:
根据新流的MAC地址在MySQL中查询相应的IP地址,即IP地址是否存在或者和流的IP地址是否匹配,主要是为了检验当前用户的IP地址是否由dnsmasq进行分配。
如果数据包的IP地址不合法,即IP地址不存在或者和流的IP地址不匹配,则转入Step5~7。
如果数据包的IP地址合法,NOX则从数据包中提取应用流匹配项和用户流匹配项,向MySQL发起对用户身份ID和应用类型ID对应的所需访问权限、用户当前权限等级、用户登录状态、用户行为参数等信息的质询。本实施例中,对于用户流匹配项,NOX质询采用源MAC地址、源IP地址,或者目的MAC地址、目的IP地址。对于应用流匹配项,不同应用对应的流匹配项个数和类型都不尽相同,因此NOX会将所有流匹配项都生成质询发送给MySQL。
MySQL根据NOX的质询信息在所存储的应用信息表、设备信息表、访问权限表和用户行为表中进行查询,将得到的结果返回给NOX。转入步骤Step8。
Step5~7:通过Step5~7,NOX对dnsmasq发起最新的DHCP列表的质询,同时把质询结果更新到MySQL中。具体步骤包括:
Step5:NOX向dnsmasq进行DHCPQuery(DHCP质询)。
Step6:dnsmasq向NOX进行DHCPReply(DHCP回复)。
Step7:NOX向MySQL进行DatabaseWrite(数据库修改)。
Step8:NOX向OpenVSwitch发送OFPFC_ADD(添加流表项)。NOX根据对MySQL、dnsmasq的质询结果进行判断,根据不同情况,下发对应的流表项,告知OpenVSwitch如何处理当前流。本发明中主要包括四种情况:用户IP地址不合法,流处理流程为Step9'';用户IP地址合法但是用户未登录或,流处理流程为Step9~16;用户IP地址合法但是用户当前权限等级小于所需访问等级,流处理流程为Step9~16;用户权限满足,流处理流程为Step9'。
为了减少OpenVSwitch不必要的转发,如果用户未登录或权限不满足时,还需要对数据包类型进行判断。本实施例中,由于登录和权限服务器采用的是web服务器,所接收的数据包类型为http流,那么如果数据包类型不为http流,则流处理流程为Step9'';只有当数据包类型为http流时,才执行Step9~16。
此外,当用户权限满足时,NOX还会进行用户行为参数的判断,如果本次访问行为不符合用户行为参数,流处理流程为Step9~16,进行权限提升,只有符合用户行为参数时,才执行Step9'。并且在执行过后,对本次用户访问行为参数进行统计,更新至MySQL的用户行为表,即记录访问的应用类型和最后访问时间。
Step9~15:OpenVSwitch则通过修改数据包头部的形式,把http流重定向至Apache服务器上,Apache服务器提示用户进行登录或权限提升。具体步骤包括:
Step9:OpenVSwitch向Apache发送ModifiedHTTPRequestFlow(被修改的HTTP请求流)。
Step10:Apache向OpenVSwitch回复HTTPReplyFlow(HTTP回复流),此消息中包括对用户进行登录或权限提升的提示消息。
Step11:OpenVSwitch向对应用户转发ModifiedHTTPReplyFlow(被修改的HTTP回复流)。
Step12:用户向OpenVSwitch发送HTTPRequestFlow(HTTP请求流),此消息中包括登录或权限提升的认证消息,即用户的账号和权限密码等。
Step13:OpenVSwitch修改Step12中HTTPRequestFlow(HTTP请求流)的头部,向Apache转发ModifiedHTTPRequestFlow(被修改的HTTP请求流)。
Step14:Apache向OpenVSwitch再次回复HTTPReplyFlow(HTTP回复流),此消息中包括用户是否成功登录或权限提升的消息。
Step15:OpenVSwitch向对应用户转发ModifiedHTTPReplyFlow(被修改的HTTP回复流),通知用户是否成功登录或权限提升。
Step16:当用户在Apache服务器中成功登录或权限提升,Apache服务器将更改后的用户登录状态和当前权限等级写入MySQL。
Step17~22:本实施例中,当用户在Apache服务器中成功登录或权限提升,Apache服务器将更改情况告知NOX,NOX对接入控制器中的流表进行相应修改。本实施例中,Step17~22由NOX中的访问限制解除模块执行,具体步骤包括:
Step17:Apache服务器以RESTfulAPI(更改通知)告知NOX,此消息中包括用户对应的IP地址。
Step18:NOX根据IP地址,向MySQL发送DatabaseQuery(数据库质询)。
Step19:MySQL向NOX发送DatabaseReply(数据库回复),包括用户IP地址对应的datapath_id,即用户连接的OpenVSwitch。
Step20:NOX向查询得到的OpenVSwitch发送OFPT_STATS_REQUEST(状态查询),来获取相关流表项信息。
Step21:OpenVSwitch向NOX回复OFPT_STATS_REPLY(状态回复),来返回相关流表项信息。
Step22:NOX从流表中过滤出与该用户相关的、访问限制状态发生变化的流表项并删除,向OpenVSwitch发送OFPFC_DELETE命令(流表项移除命令)。
当流表项被删除时,NOX会接收到来自于OpenVSwitch的FlowRemovedMessage(流表项移除消息),NOX中的流移除统计模块根据流表项中的匹配项,在MySQL中查询得到登录账号、应用类型ID等,在用户行为表中更新用户行为参数。
Step9':用户权限满足,正常转发该流。
Step9'':丢弃该流。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。