基于openstack实现安全组黑名单的方法及系统与流程

文档序号:25308053发布日期:2021-06-04 14:58阅读:300来源:国知局
1.本发明涉及云计算和计算机网络
技术领域
:,具体地说是基于openstack实现安全组黑名单的方法及系统。
背景技术
::2.在openstack中,虚机通过绑定安全组来限制自身与外界的通信。openstack的安全组通过linuxiptables实现,通过下发相应的iptables规则来放行或拒绝进出虚机的流量。3.安全组分为白名单和黑名单两种。白名单的默认规则是drop掉所有的流量,优先级最低,通过下发优先级更高的accept规则,来放行相应规则的流量;黑名单的默认规则是accept所有的流量,优先级最低,通过下发优先级更高的drop规则,来拒绝相应规则的流量。目前openstack仅支持安全组白名单。技术实现要素:4.本发明的技术任务是针对以上不足之处,提供基于openstack实现安全组黑名单的方法及系统,让openstack不仅支持创建安全组白名单,而且支持安全组黑名单,实现了更灵活的安全组机制。5.本发明解决其技术问题所采用的技术方案是:6.基于openstack实现安全组黑名单的方法,该方法通过扩展neutron的service‑plugin和openvswitch‑agentextension来实现安全组黑名单,7.在iptables的raw表中对虚机绑定的tap端口进行标记,根据标记,在iptables的mangle表里将进出虚机的流量导入到安全组黑名单的链中,根据黑名单规则进行匹配;未匹配到的流量将导入iptables的filter表,继续按照neutron原有的安全组规则匹配。8.该方法依据neutron的扩展性,通过service插件提供策略管理功能。用户可以仅使用安全组黑名单或白名单,也可以黑名单白名单混合使用,从而实现安全策略的灵活配置。9.进一步的,若用户指定远端安全组,则利用ipset将远端安全组的所有虚机成员设置成一个ipset。10.优选的,启用sgb策略管理模块,即neutron的service‑plugin插件,提供rest接口给用户,用户调用创建sgb策略相关接口,下发安全组规则;11.sgb策略管理模块将规则信息写入数据库模块,并通过消息通知模块将规则信息发送给sgb功能实现模块;12.sgb功能实现模块通过neutron‑openvswitch‑agentextension来实现。13.所述安全组规则包括协议号、端口、方向、远程安全组和远程cidr。14.进一步的,所述sgb功能实现模块用于管理数据平面节点(计算节点)的iptables和ipset,15.1)、在iptables的raw表里给虚机绑定的tap端口打标记;16.2)、在mangle表的neutron‑openvswi‑forward链里根据标记将发往虚机或从虚机发出的流量引导到安全组黑名单的链里;17.3)、在mangle表的安全组黑名单链里下发规则来拒绝对应的流量;18.4)、若下发的规则里指定了远端安全组,则还需要在ipset里下发规则,将绑定该远端安全组的所有虚机的ip地址聚合到一个ipset中。19.该模块通过neutron‑openvswitch‑agent的extension插件实现。20.进一步的,sgb功能模块配置好安全组黑名单规则后,从虚机出来的流量经过本机所在的计算节点的qbr桥时,会先在mangle表里匹配安全组黑名单规则,匹配到规则后,会被丢弃掉;若没匹配到安全组黑名单规则,则会将流量导入filter表里,继续匹配安全组白名单规则。21.本发明还要求保护基于openstack实现安全组黑名单的系统,包括sgb策略管理模块、sgb消息通知模块、sgb功能实现模块和sgb数据库模块来实现,22.sgb策略管理模块用于对外提供sgb相关接口,并负责sgb策略数据的配置管理,接收来自用户的sgb配置请求,并将用户sgb配置数据计入sgb策略数据库中,将策略信息通知给sgb功能实现模块,sgb功能实现模块通过neutron‑openvswitch‑agentextension来实现。23.所述配置请求包括添加、删除、修改以及查看sgb配置。24.sgb策略管理模块通过neutron的serviceplugin形式实现。25.进一步的,sgb消息通知模块得功能包括:所述sgb消息通知模块在接收到用户的sgb配置请求后,将sgb信息通知给sgb功能实现模块;接收sgb功能实现模块的请求,调用sgb策略管理模块来查询sgb信息;26.该模块通过rpc远程调用实现;27.所述sgb数据库模块用于记录用户的sgb策略配置信息,为sgb策略管理模块和sgb功能实现模块提供数据来源。28.优选的,所述sgb功能实现模块是neutron‑openvswitch‑agent的extension,运行在各个节点,接收从管理模块发来的规则信息,对iptables和ipset进行配置:29.在iptables的raw表里给虚机绑定的tap端口打标记;30.在mangle表的neutron‑openvswi‑forward链里根据标记将发往虚机或从虚机发出的流量引导到安全组黑名单的链里;31.在mangle表的安全组黑名单链里下发规则来拒绝对应的流量;32.若下发的规则里指定了远端安全组,则还需要在ipset里下发规则,将绑定该远端安全组的所有虚机的ip地址聚合到一个ipset中;33.未匹配到的流量将导入iptables的filter表,继续按照neutron原有的安全组规则匹配。34.本发明还要求保护基于openstack实现安全组黑名单的装置,包括:至少一个存储器和至少一个处理器;35.所述至少一个存储器,用于存储机器可读程序;36.所述至少一个处理器,用于调用所述机器可读程序,执行上述的基于openstack实现安全组黑名单的方法。37.本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的基于openstack实现安全组黑名单的方法。38.本发明的基于openstack实现安全组黑名单的方法及系统与现有技术相比,具有以下有益效果:39.该方法及系统通过以扩展neutron插件的形式实现安全组黑名单,弥补了openstack仅支持安全组白名单的缺陷;让openstack不仅支持创建安全组白名单,而且支持安全组黑名单,实现了更灵活的安全组机制。40.通过使用该方法及系统,可以根据用户的需求,灵活配置安全组,增加了安全组功能的灵活性和健壮性。附图说明41.图1是本发明一个实施例提供的基于openstack实现安全组黑名单的pbr实现架构图;42.图2是本发明一个实施例提供的加入sgb后openstack安全组流量走向示例模型图。具体实施方式43.下面结合附图和具体实施例对本发明作进一步说明。44.openstack作为当前开源iaas云计算的一款主流产品,获得了业界的广泛关注和普遍欢迎,特别是近年来openstack开源社区及openstack相关产品的商业化落地等方面都取得了突飞猛进的发展,但有些功能还未实现,比如安全组黑名单。安全组黑名单相对白名单能够精确拦截指定流量,有着白名单不具备的灵活性。openstack云平台现有的neutron项目仅实现了安全组白名单,用户并不能灵活高效地指定安全组策略。45.neutron负责提供openstack的网络功能,其有非常好的扩展性,本发明实施例就是以扩展的neutron插件的形式实现安全组黑名单。46.本发明实施例提供一种基于openstack实现安全组黑名单的方法,该方法通过扩展neutron的service‑plugin和openvswitch‑agentextension来实现安全组黑名单,47.在iptables的raw表中对虚机绑定的tap端口进行标记,根据标记,在iptables的mangle表里将进出虚机的流量导入到安全组黑名单的链中,根据黑名单规则进行匹配;48.若用户指定远端安全组,则利用ipset将远端安全组的所有虚机的成员设置成一个ipset;49.未匹配到的流量将导入iptables的filter表,继续按照neutron原有的安全组规则匹配。50.该方法依据neutron的扩展性,通过service插件提供策略管理功能。用户可以仅使用安全组黑名单或白名单,也可以黑名单白名单混合使用,从而实现安全策略的灵活配置。51.其实现包括sgb策略管理模块、sgb消息通知模块、sgb功能实现模块和sgb数据库模块,具体实现方式如下:52.1、启用sgb策略管理模块,即neutron的service_plugin插件,提供rest接口给用户,用户调用创建sgb策略相关接口,下发安全组规则(包括协议号、端口、方向、远程安全组和远程cidr);53.2、sgb策略管理模块将规则信息写入数据库模块,并通过消息通知模块将规则信息发给sgb功能实现模块;54.3、sgb功能实现模块运行在各个计算节点,接收从管理模块发来的规则信息,对iptables和ipset进行配置:55.1)、在raw表里对绑定安全组的虚机所在的tap口打标记:56.iptables–traw–aneutron‑openvswi‑prerouting–mphysdev‑‑physdev‑intap0861ea55‑6c–jct;57.2)、若规则里包含有远端安全组(没有则跳过本步骤),则将绑定该远端安全组的所有虚机的ip设置成一个ipset:58.ipsetcreate–existnipv4e3136d55‑3a70‑48ff‑80e2hash:netfamily;ipsetadd–existnipv4e3136d55‑3a70‑48ff‑80e2192.168.1.14192.168.2.45192.168.3.11;59.3)、在mangle表的neutron‑openvswi‑forward链里将进出虚机的流量导入sgb链里:60.iptables–tmangle–aneutron‑openvswi‑forward–mphysdev–outtap0861ea55‑6c‑‑physdev‑is‑bridged–jneutron‑openvswi‑o0861ea55‑6;61.4)、在sgb链里下发安全组黑名单规则:62.iptables–tmangle–aneutron‑openvswi‑o0861ea55‑6–ptcp–dport80–d0.0.0.0/0–jdrop;63.5)在sgb链里下发一条最低优先级规则,将未匹配到安全组黑名单规则的流量导入filter表里,继续匹配安全组白名单:64.iptables–tmangle–aneutron‑openvswi‑o0861ea55‑6–jaccept。65.4、sgb功能模块配置好安全组黑名单规则后,从虚机出来的流量经过本机所在的计算节点的qbr桥时,会先在mangle表里匹配安全组黑名单规则,匹配到规则后,会被丢弃掉;若没匹配到安全组黑名单规则,则会将流量导入filter表里,继续匹配安全组白名单规则(即openstack原生安全组)。66.本发明实施例还提供一种基于openstack实现安全组黑名单的系统,其实现上述实施例中描述的基于openstack实现安全组黑名单的方法,包括sgb策略管理模块、sgb消息通知模块、sgb功能实现模块和sgb数据库模块来实现。67.1、sgb策略管理模块,68.sgb策略管理模块对外提供sgb相关接口,并负责用户sgb策略数据的配置管理,接收来自用户的sgb配置请求(如添加、删除、修改、查看sgb配置等),并将用户sgb配置数据记入sgb策略数据库中。69.该模块通过neutron的serviceplugin形式实现。70.2、sgb消息通知模块,71.sgb消息通知模块主要包括两个功能:72.1)、在接收到用户的sgb配置请求后,将sgb信息通知给sgb功能实现模块;73.2)、接收sgb功能实现模块的请求,调用sgb策略管理模块来查询sgb信息。74.该模块通过rpc远程调用实现。75.3、sgb功能实现模块,76.sgb功能实现模块是neutron‑openvswitch‑agent的extension,负责管理数据平面节点(计算节点)的iptables和ipset,根据用户配置的sgb策略添加、删除或修改对应安全组里的规则,具体功能有:77.1)、在iptables的raw表里给虚机绑定的tap端口打标记;78.2)、在mangle表的neutron‑openvswi‑forward链里根据标记将发往虚机或从虚机发出的流量引导到安全组黑名单的链里;79.3)、在mangle表的安全组黑名单链里下发规则来拒绝对应的流量;80.4)、若下发的规则里指定了远端安全组,则还需要在ipset里下发规则,将绑定该远端安全组的所有虚机的ip地址聚合到一个ipset中。81.5)、未匹配到的流量将导入iptables的filter表,继续按照neutron原有的安全组规则匹配。82.该模块通过neutron‑openvswitch‑agent的extension插件实现。83.4、sgb数据库模块,84.sgb策略数据库负责记录用户的sgb策略配置信息,为sgb策略管理模块和sgb功能实现模块提供数据来源。85.sgb策略管理模块将策略信息通知给sgb功能实现模块,sgb功能实现模块通过neutron‑openvswitch‑agentextension来实现。86.该系统基于linuxiptables、ipset的安全组黑名单的实现方式,让openstack不仅支持创建安全组白名单,而且支持安全组黑名单,实现了更灵活的安全组机制。87.本发明实施例还提供一种基于openstack实现安全组黑名单的装置,包括:至少一个存储器和至少一个处理器;88.所述至少一个存储器,用于存储机器可读程序;89.所述至少一个处理器,用于调用所述机器可读程序,执行上述实施例中描述的基于openstack实现安全组黑名单的方法。90.本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的基于openstack实现安全组黑名单的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。91.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。92.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd‑rom、cd‑r、cd‑rw、dvd‑rom、dvd‑ram、dvd‑rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。93.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。94.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。95.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1