掌桥专利:专业的专利平台
掌桥专利
首页

规则配置方法、装置、linux主机及存储介质

文献发布时间:2024-04-18 19:58:26


规则配置方法、装置、linux主机及存储介质

技术领域

本申请涉及网络技术领域,特别是涉及一种规则配置方法、装置、linux主机及存储介质。

背景技术

防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在实际应用场景下,运维人员可能需要根据使用需求,对linux内核的IP包过滤规则进行重新配置,因此,如何对linux内核中的规则进行配置成为当前亟待解决的技术问题。

发明内容

本申请实施例的目的在于提供一种规则配置方法、装置、linux主机及存储介质,以解决上述技术问题。

一方面,提供一种规则配置方法,所述方法包括:

在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,从所述iptables规则存储模块中读取当前存储的iptables配置信息;所述linux主机上预先配置有iptables规则管理进程;

根据读取的所述iptables配置信息确定历史iptables规则集;所述历史iptables规则集中包括多条历史iptables规则,且每一所述历史iptables规则关联有对所述历史iptables规则进行配置的所述iptables规则管理进程的进程标识;

根据所述第一iptables规则和所述历史iptables规则集确定目标iptables规则;

将所述目标iptables规则写入所述iptables规则存储模块。

在其中一个实施例中,所述根据读取的所述iptables配置信息确定历史iptables规则集,包括:

通过 iptables-save 命令对所述iptables配置信息进行保存,得到字符串格式的第一配置信息;

对所述第一配置信息进行规则解析,得到历史iptables规则集,并将解析得到的所述历史iptables规则集添加至预先定义的控制类对象中;

所述根据所述第一iptables规则和所述历史iptables规则集确定目标iptables规则,包括:

根据所述第一iptables规则和所述控制类对象确定目标iptables规则。

在其中一个实施例中,每一所述历史iptables规则标注有对所述历史iptables规则进行配置的所述iptables规则管理进程的进程标识,所述根据所述第一iptables规则和所述控制类对象确定目标iptables规则,包括:

从所述控制类对象中将所述历史iptables规则集中标注有目标进程标识的历史iptables规则删除,得到通过除所述目标iptables规则管理进程以外的其他的iptables规则管理进程配置的第二iptables规则;所述目标进程标识为所述目标iptables规则管理进程的进程标识;

根据所述第一iptables规则和所述第二iptables规则生成目标iptables规则。

在其中一个实施例中,所述根据所述第一iptables规则和所述第二iptables规则生成目标iptables规则,包括:

对所述第一iptables规则标注所述目标进程标识;

将标注有所述目标进程标识的所述第一iptables规则添加到所述控制类对象中;

将所述控制类对象序列化为字符串格式的第二配置信息;

当所述第二配置信息和所述第一配置信息不一致时,将所述第二配置信息作为目标iptables规则。

在其中一个实施例中,在所述将所述控制类对象序列化为字符串格式的第二配置信息之后,所述方法包括:

当所述第二配置信息和所述第一配置信息一致时,放弃本次规则写入;

所述将所述目标iptables规则写入所述iptables规则存储模块,包括:

调用 iptables-restore接口将所述目标iptables规则导入所述iptables规则存储模块。

在其中一个实施例中,每一所述历史iptables规则标注有对应的规则配置时间;所述根据所述第一iptables规则和所述控制类对象确定目标iptables规则,包括:

对所述第一iptables规则标注目标进程标识和目标规则配置时间;所述目标进程标识为所述目标iptables规则管理进程的进程标识;

将标注有所述目标进程标识和所述目标规则配置时间的所述第一iptables规则添加到所述控制类对象中;

将所述控制类对象中标注有所述目标进程标识,且标注的规则配置时间在所述目标规则配置之前的历史iptables规则删除,得到目标iptables规则。

在其中一个实施例中,所述方法还包括:

在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,启动预先针对所述iptables规则存储模块配置的文件锁;

在将所述目标iptables规则写入所述iptables规则存储模块后,解锁所述文件锁。

另一方面,提供了一种规则配置装置,所述装置包括:

读取模块,用于在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,从所述iptables规则存储模块中读取当前存储的iptables配置信息;所述linux主机上预先配置有iptables规则管理进程;

第一确定模块,用于根据读取的所述iptables配置信息确定历史iptables规则集;所述历史iptables规则集中包括多条历史iptables规则,且每一所述历史iptables规则关联有对所述历史iptables规则进行配置的所述iptables规则管理进程的进程标识;

第二确定模块,用于根据所述第一iptables规则和所述历史iptables规则集确定目标iptables规则;

写入模块,用于将所述目标iptables规则写入所述iptables规则存储模块。

另一方面,提供了一种linux主机,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序,以实现上述任一所述的方法。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时,以实现上述任一所述的方法。

通过本申请提供的规则配置方法、装置、linux主机及存储介质,在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,从iptables规则存储模块中读取当前存储的iptables配置信息,根据读取的iptables配置信息确定历史iptables规则集,历史iptables规则集中包括多条历史iptables规则,且每一历史iptables规则关联有对该历史iptables规则进行配置的iptables规则管理进程的进程标识,根据第一iptables规则和历史iptables规则集确定目标iptables规则,将目标iptables规则写入iptables规则存储模块,实现了iptables规则的配置,此外,由于每一历史iptables规则关联有对该历史iptables规则进行配置的iptables规则管理进程的进程标识,所以在后续维护的过程中,维护人员根据该进程标识就可以知晓各历史iptables规则是由哪一个进程配置的,更便于后期的维护。

附图说明

图1为本申请实施例一提供的规则配置方法的流程示意图;

图2为本申请实施例一提供的确定历史iptables规则集的流程示意图;

图3为本申请实施例二提供的规则配置装置的结构示意图;

图4为本申请实施例三提供的linux主机的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

实施例一

本申请实施例提供一种规则配置方法,该方法可以应用于linux主机,linux主机可以是任意使用linux系统的电子设备,比如,其可以是任意的需要设置防火墙服务的linux服务器。

请参见图1所示,本申请实施例中的规则配置方法可以包括如下步骤:

S11:在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,从iptables规则存储模块中读取当前存储的iptables配置信息;linux主机上预先配置有iptables规则管理进程。

S12:根据读取的iptables配置信息确定历史iptables规则集;历史iptables规则集中包括多条历史iptables规则,且每一历史iptables规则关联有对该历史iptables规则进行配置的iptables规则管理进程的进程标识。

S13:根据第一iptables规则和历史iptables规则集确定目标iptables规则。

S14:将目标iptables规则写入iptables规则存储模块。

下面,对上述各步骤进行详细介绍。

本申请实施例提供的规则配置方法可以应用于任何需要对linux主机内核中的iptables规则进行配置的场景。

本申请实施例中的iptables规则可以是IP包过滤规则。

iptables规则存储模块是指linux主机内核中的用于存储iptables配置信息的模块,iptables配置信息包括规则表,规则表由规则链构成,规则链由各种iptables规则构成。

本申请实施例中的linux主机上预先配置有iptables规则管理进程,比如,可以配置1个、2个、或者多个的iptables规则管理进程。iptables规则管理进程用于实现linux主机上防火墙iptables规则的管理,具体的,用于实现iptables规则的配置,包括iptables规则添加、修改以及删除。示例性的,linux主机上预先配置有至少两个iptables规则管理进程。由于linux主机上预先配置有至少两个iptables规则管理进程,当工作中的某一iptables规则管理进程出现故障时,可以通过linux主机上的另一iptables规则管理进程对iptables规则进行配置,避免因进程故障导致无法对iptables规则进行配置的问题。

应当说明的是,还可以针对每一iptables规则管理进程预先配置其对应的进程标识,进程标识用于表明对应iptables规则管理进程的身份。方便人工review 和区分具体规则属于哪一个进程。

示例性的,可以针对各业务场景,在linux主机上预先配置其对应的iptables规则管理进程。也即,可以通过预先配置的第一iptables规则管理进程对A应用场景、B应用场景以及C应用场景的iptables规则进行配置,通过预先配置的第二iptables规则管理进程对D应用场景以及E应用场景的iptables规则进行配置。可以通过不同的iptables规则管理进程对不同应用场景的iptables规则进行配置,允许多个进程同时管理不同业务场景的iptables规则配置。

步骤S11中的目标iptables规则管理进程是指linux主机上当前需要进行iptables规则配置的一个管理进程。当需要通过该目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,可以拉起该目标iptables规则管理进程,从iptables规则存储模块中读取当前存储的iptables配置信息。

为避免读写并发问题,导致其中一个进程的写入被其他进程覆盖,可以预先针对iptables规则存储模块配置对应的文件锁,比如,/opt/iptables.lock。在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,获取并启动该文件锁,以保证此时只有目标iptables规则管理进程正在修改iptables规则存储模块中的iptables规则。后续步骤中如果出现错误终止运行,则需要解锁该文件锁,以保证可以进行下一次的iptables规则配置。

对于步骤S12,请参见图2所示,可以包括如下子步骤:

S121:通过 iptables-save 命令对iptables配置信息进行保存,得到字符串格式的第一配置信息。

S122:对第一配置信息进行规则解析,得到历史iptables规则集,并将解析得到的历史iptables规则集添加至预先定义的控制类对象中。

对应的,根据第一iptables规则和历史iptables规则集确定目标iptables规则,包括:

根据第一iptables规则和控制类对象确定目标iptables规则。

在本申请实施例中,可以通过调用iptables-save 命令读取iptables规则存储模块中的iptables配置信息,并将其保存为字符串格式的第一配置信息SSave,通过iptables-save 命令实现iptables配置信息的保存,程序运行的速度更快,执行准确性更高。需要说明的是,可以将所述第一配置信息SSave保存至其他的备份文件中,而无需保存至iptables规则存储模块中。对第一配置信息进行规则解析包括:获取每个规则表下的规则链的统计信息,获取每个规则链下的iptables规则的规则内容和针对该规则标注的进程标识,由此,便可得到历史iptables规则集。

在本申请实施例中,每一历史iptables规则标注有对该历史iptables规则进行配置的iptables规则管理进程的进程标识,通过这种方式,可以实现历史iptables规则与进程标识的关联,每一历史iptables规则标注的进程标识用于表明该历史iptables规则之前是通过哪一个iptables规则管理进程配置的。

示例性的,在本申请实施例中,可以通过iptables的comment功能为各历史iptables规则标注对应的进程标识。

本申请实施例中的控制类对象是预先定义的,比如可以定义为对象Status。

下面,对根据第一iptables规则和控制类对象确定目标iptables规则的过程进行说明。

在第一种可选的实施方式中,可以从控制类对象中将历史iptables规则集中标注有目标进程标识的历史iptables规则删除,得到通过除目标iptables规则管理进程以外的其他的iptables规则管理进程配置的第二iptables规则;目标进程标识为目标iptables规则管理进程的进程标识;根据第一iptables规则和第二iptables规则生成目标iptables规则。

可以理解的是,在从控制类对象中将历史iptables规则集中标注有目标进程标识的历史iptables规则删除后,当前的控制类对象中就只剩通过除目标iptables规则管理进程以外的其他的iptables规则管理进程配置的第二iptables规则。

为便于区分各iptables规则所属的iptables规则管理进程,还可以对第一iptables规则标注目标进程标识,也即,本申请实施例中的根据第一iptables规则和第二iptables规则生成目标iptables规则,包括:

对第一iptables规则标注目标进程标识,将标注有目标进程标识的第一iptables规则添加到控制类对象中,此时的控制类对象由标注有目标进程标识的第一iptables规则,和标注有其他进程标识的第二iptables规则组成,其他进程标识是指除所述目标iptables规则管理进程以外的其他iptables规则管理进程对应的进程标识。将当前的控制类对象序列化为字符串格式的第二配置信息SRestore。当第二配置信息SRestore和第一配置信息SSave不一致时,将第二配置信息作为目标iptables规则。此时,可以通过iptables-restore命令将目标iptables规则写入iptables规则存储模块。

同样的,可以通过iptables的comment功能对第一iptables规则标注目标进程标识。需要说明的是,当第一iptables规则中本身就标注有其他的iptables规则管理进程的其他进程标识时,应当将这部分进程标识删除,并在该第一iptables规则中标注目标进程标识。

为避免资源浪费,在一些实施例中,当第二配置信息SRestore和第一配置信息SSave一致时,可以放弃本次规则写入。

在第二种可选的实施方式中,历史iptables规则集中的每一历史iptables规则除了标注有对应的iptables规则管理进程的进程标识之外,还标注有该规则的规则配置时间,规则配置时间可以是将该规则写入iptables规则存储模块的时间。对于此种情况,根据所述第一iptables规则和控制类对象确定目标iptables规则,包括:

对第一iptables规则标注目标进程标识和目标规则配置时间T1,目标进程标识为所述目标iptables规则管理进程的进程标识,目标规则配置时间可以是当前时间,以表明该规则是在T1时间点配置的,将标注有目标进程标识和目标规则配置时间的第一iptables规则添加到控制类对象中,此时的控制类对象由历史iptables规则集和标注有目标进程标识和目标规则配置时间的第一iptables规则组成,此时,将控制类对象中标注有目标进程标识,且标注的规则配置时间在目标规则配置T1之前的历史iptables规则删除,此时的控制类对象中剩下的iptables规则即为目标iptables规则。

需要说明的是,linux主机上预先配置的多个iptables规则管理进程,可以管理互不相同的表规则或链规则,多个iptables规则管理进程在相同的表规则或链规则上的默认规则相同。比如,均为先默认拒绝,然后添加允许规则,或者默认允许,然后添加拒绝规则。

在本申请实施例中,由于可以基于进程标识进行iptables规则的删除,所以可以保证iptables规则存储模块中不会存在大量重复的规则。另外,各个iptables规则管理进程可以独立实现iptables配置功能,互不影响。

最后需要说明的是,在本申请实施例中,可以通过调用 iptables-restore接口将目标iptables规则导入iptables规则存储模块,相比于通过生成添加命令和删除命令的方式实现目标iptables规则的写入而言,由于单条iptables-restore 命令是一个事务,直接通过iptables-restore接口实现目标iptables规则的写入可以减少中间状态的不安全情况,实际步骤量较少,易于实现和调试。

应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

实施例二

基于同一发明构思,本申请实施例提供一种规则配置装置,请参见图3所示,包括:

读取模块301,用于在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,从所述iptables规则存储模块中读取当前存储的iptables配置信息;所述linux主机上预先配置有iptables规则管理进程;

第一确定模块302,用于根据读取的所述iptables配置信息确定历史iptables规则集;所述历史iptables规则集中包括多条历史iptables规则,且每一所述历史iptables规则标注有对所述历史iptables规则进行配置的所述iptables规则管理进程的进程标识;

第二确定模块303,用于根据所述第一iptables规则和所述历史iptables规则集确定目标iptables规则;

写入模块304,用于将所述目标iptables规则写入所述iptables规则存储模块。

进一步地,第一确定模块302用于通过 iptables-save 命令对所述iptables配置信息进行保存,得到字符串格式的第一配置信息;对所述第一配置信息进行规则解析,得到历史iptables规则集,并将解析得到的所述历史iptables规则集添加至预先定义的控制类对象中。第二确定模块303用于根据所述第一iptables规则和所述控制类对象确定目标iptables规则。

进一步地,每一所述历史iptables规则标注有对所述历史iptables规则进行配置的所述iptables规则管理进程的进程标识,第二确定模块303用于从所述控制类对象中将所述历史iptables规则集中标注有目标进程标识的历史iptables规则删除,得到通过除所述目标iptables规则管理进程以外的其他的iptables规则管理进程配置的第二iptables规则;所述目标进程标识为所述目标iptables规则管理进程的进程标识;根据所述第一iptables规则和所述第二iptables规则生成目标iptables规则。

进一步地,第二确定模块303用于对所述第一iptables规则标注所述目标进程标识;将标注有所述目标进程标识的所述第一iptables规则添加到所述控制类对象中;将所述控制类对象序列化为字符串格式的第二配置信息;当所述第二配置信息和所述第一配置信息不一致时,将所述第二配置信息作为目标iptables规则。

进一步地,第二确定模块303还用于在所述第二配置信息和所述第一配置信息一致时,放弃本次规则写入。

进一步地,写入模块304用于调用 iptables-restore接口将所述目标iptables规则导入所述iptables规则存储模块。

进一步地,每一所述历史iptables规则标注有对应的规则配置时间,第二确定模块303用于对所述第一iptables规则标注目标进程标识和目标规则配置时间;所述目标进程标识为所述目标iptables规则管理进程的进程标识;将标注有所述目标进程标识和所述目标规则配置时间的所述第一iptables规则添加到所述控制类对象中;将所述控制类对象中标注有所述目标进程标识,且标注的规则配置时间在所述目标规则配置之前的历史iptables规则删除,得到目标iptables规则。

进一步地,所述装置包括文件锁启动模块和文件锁解锁模块,文件锁启动模块用于在需要通过目标iptables规则管理进程将第一iptables规则写入linux主机的iptables规则存储模块中时,启动预先针对所述iptables规则存储模块配置的文件锁;文件锁解锁模块用于在将所述目标iptables规则写入所述iptables规则存储模块后,解锁所述文件锁。

需要说明的是,出于描述简洁的考量,上述实施例中描述过的内容在本实施例中不再赘述。

实施例三

基于同一发明构思,本申请实施例提供一种linux主机,linux主机可以是任意使用linux系统的电子设备,比如,其可以是任意的需要设置防火墙服务的linux服务器。

linux主机包括处理器401和存储器402,存储器402中存储有计算机程序,处理器401和存储器402通过通信总线实现通信,处理器401执行该计算机程序,以实现上述实施例一中方法的各步骤,在此不再赘述。可以理解,图4所示的结构仅为示意,电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。

处理器401可以是一种集成电路芯片,具有信号处理能力。上述处理器401可以是通用处理器,包括中央处理器(CPU)、网络处理器(NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器402可以包括但不限于随机存取存储器(RAM),只读存储器(ROM),可编程只读存储器(PROM),可擦除只读存储器(EPROM),电可擦除只读存储器(EEPROM)等。

本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD卡、MMC卡等,在该计算机存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器401执行,以实现上述实施例一中方法的各步骤,在此不再赘述。

需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 商品活动规则的配置方法、装置、电子设备及存储介质
  • 主机节点状态确定方法、装置、主机节点及存储介质
  • 一种规则的实时处理方法、装置、规则引擎及存储介质
  • 存储空间配置方法、装置、计算机设备及存储介质
  • 同步配置的方法、同步配置的装置、存储介质和处理器
  • linux系统配置信息查看方法、装置及计算机可读存储介质
  • 配置规则的验证方法及装置、存储介质、电子装置
技术分类

06120116493578