安全配置策略自动生成与验证技术研究*
2020-09-27邓永晖冯中华
周 佳,邓永晖,贾 悠,冯中华
(中国电子科技集团公司第三十研究所,四川 成都 610041)
0 引言
随着计算机网络规模的日益庞大及网络威胁的日趋严重,企业在安全方面的建设的逐步健全,部署的防火墙、网络访问控制设备、网站防护设备等日益增多,使网络环境规模和复杂度不断增加。对于安全管理员而言,通常需要管理多个安全区域,进行多种安全设备的策略配置。然而,在大规模网络中,安全设备数量种类众多,各类安全策略配置管理方法各不相同,随着安全策略控制粒度的日趋细化严格,当业务场景需求发生变化时,需要配置在这些设备之上的网络安全策略规则也相应的变得更加繁冗和复杂。这对系统配置运维工作的开展带来了极大的压力,导致大规模设备集中统一、快速配置成为一种新的配置运维需求。此外,人工智能、机器学习等先进信息技术的发展演化,促使网络信息体系向着网络化、智能化趋势发展,这也驱使网络安全配置管理向着智能化方向发展。因此,构建一种应对网络安全策略快速响应、统一配置的安全智能配置机制成为当前最为迫切的需求。
1 研究思路
网络安全配置策略的自动化生成与验证的技术研究从以下几个方面进行展开:
安全配置策略形式化描述:为信息系统设备(包括安全设备、网络设备等)的配置策略提供统一形式化的描述方式。
安全配置意图与策略映射模型构建:通过构建安全配置意图与策略映射模型,建立安全配置意图与策略之间的映射关系,从而为安全配置策略的自动生成提供支撑。
安全配置意图与策略验证:根据安全配置意图与策略模型,对安全配置意图与策略的映射关系进行验证,实现对安全配置意图与策略映射模型进一步的完善改进。
安全配置策略自动化转译:根据安全配置意图与策略映射模型,结合安全配置知识库数据,依据安全配置意图描述,将安全配置意图自动化转译为安全配置策略,避免人工配置时人为错误的发生。
安全配置策略冲突检测:根据自动化转译的安全配置策略,检测其是否具有冲突性,完成对安全配置策略的优化完善。
安全配置策略输出:根据安全配置意图与策略模型,结合网络防御意图要求,生成系统设备可操作执行的安全配置策略。
安全配置策略自动生成与验证技术的初步预期效果如图2 所示,安全配置策略自动生成与验证技术主要实现对安全配置意图通用描述文档进行机器解读,生成相应设备可实施、执行的安全配置策略。整个过程中,通过构建网络安全配置知识图谱,建立安全配置意图和安全策略之间的模型映射关系,自动生成相应设备的安全策略,并通过策略冲突检测技术等,借助人工审核的力量,进行安全策略的完善优化。
图1 安全配置策略自动生成与验证技术研究流程
图2 安全配置策略自动生成技术预期效果
2 安全配置策略形式化描述
安全配置策略,是指在安全区域里用于指导和决定如何管理、分配和控制安全相关活动的一套规则。例如,安全策略规定了当发生安全违规事件的时候,应当由谁来执行什么样的措施进行响应,以及在什么时候、由谁负责记录和审计。基于策略的管理,其主旨是通过策略机制将系统的管理和执行分开,从而提高管理系统的可伸缩性和灵活性,并使管理员把工作的着眼点放在业务需求而不是设备配置的细枝末节上,从而提高管理的效率。
安全配置策略进行形式化、规范性描述是实现安全配置策略自动生成和验证的核心。现今策略管理还没有一个统一的标准,RFC 只推出了草案,还没有形成正式的文档,没有制定策略的统一格式,也没有规定用哪种语言描述当前的策略在安全策略统一描述方面具有代表性的标准和方法。现今,对于策略框架定义语言(Policy Framework Definition Language,PFDL)[1],其定义策略的形式是“if condition,then action”。条件部分描述设备会遇到的特定情况,可以是一个用户或一个组,时间日期,应用类型,或者网络地址等。行动部分描述设备在具体情况下采取的行动。许多有关QoS 的策略都是用PFDL 定义的。对于策略定义语言(Policy Description Language,PDL)[2],其定义策略的形式是“event cause action if condition”。这些策略也是主要用于网络管理方面。这些策略被编译为java 类,并存放在目录服务器中。PDL 不支持授权策略和复合策略。对于Ponder[3],它是一种描述性的、强类型的、面向对象的语言,定义了4 种基本策略类型,包括授权策略、委托策略、义务策略、抑制策略,以及3 种复合策略,包括角色、角色间的关系和管理结构。Ponder 可以用于定义基于角色访问控制的安全策略,也可以用于定义通用的管理策略。
本研究采用比较成熟的基于Ponder 的安全配置策略形式化描述方式,该策略的语法如下:
Description:描述了策略的作用、执行过程等信息。
Type:定义了策略种类、执行方式等。
Action:为处理事件所要执行的动作。
Target:为策略执行的对象,包括对象的ID、制造商、型号等信息。
Model:为策略对象执行action 的模板,包括执行该action 所必需的参数或配置字段信息。
3 安全配置意图与策略映射模型构建及验证
3.1 基于常识和领域知识融合的知识推理技术
基于常识和领域知识融合的可证明知识推理,需要利用结构化的网络安全配置知识数据和非结构化的开源网络安全情报数据,通过使用结构化的网络安全配置知识作为先验知识的一部分,并提取非结构化开源数据相关知识描述,能够提高先验知识的丰富程度。这两种数据各有优劣,融合使用可以互相补充:结构化知识 (Structured Knowledge Source)包含大量的三元组信息(概念及其之间的关系),利于推理,但是存在覆盖度低的问题;非结构化知识 (Unstructured Knowledge Source),即纯文本,包含大量冗余的、覆盖范围广的信息,可以补充结构化知识。由于两种数据结构迥然不同,如何考虑将其转换为相同的数据形式并处理成能够被预训练模型接受的序列数据是最需要考虑的问题。
针对非结构化的开源网络安全情报知识,由于开源数据都是文章形式的描述问题,需要实现检索出真正对于问题有帮助的句子信息。首先将开源数据整理为文章,使用Spacy 工具将其打散为句子,并利用Elasticsearch 建立起索引,创造句子级别的搜索系统,随后把问题和候选答案作为查询关键词,在系统中检索相关的句子,开源数据预处理如图3所示。
图3 开源数据预处理
开源数据中的抽取结果虽然为句子,但多个句子之间存在着内在的联系,为了获取句子内部和句子间的结构化知识,使用语义角色标注(Semantic Role Labeling,SRL)对每个句子进行分析,并对多个句子的抽取结果建立边的连接(如共现程度)。
针对生成句子图问题,可以在结构化网络安全配置知识库中定位相关实体,找到所有和此实体相关的知识三元组,每个三元组作为一个节点,如果两个三元组包含相同的实体,则将两个节点连接起来。接着,对每个节点使用规则,将每个节点中的三元组转换为句子,生成句子图过程如图4 所示。
图4 生成句子图过程
于是可以根据句子图的图结构关系对句子进行拓扑排序,得到训练语料。最终,将训练语料与问题答案拼接起来,输入预训练模型(BERT 或XLNet)中进行训练和预测。
综上所述,此过程的具体运作流程为,首先根据用户提供的防御意图数据,经过文本识别技术转化成系统可以识别并理解的向量形式,将得到的向量形式经过基于图卷积的关系抽取、基于句法特征和胶囊网络的意图识别技术以及命名实体识别技术处理后,将用户的防御意图转化为系统可理解的表达形式,最后将此表达形式输入策略配置系统,并在多元知识融合知识图谱(即知识库)的辅助下,准确识别出用户身份、目的,并且根据防御意图给出精确的意图解析,为后面的策略配置提供可靠来源。
3.2 基于知识图谱的策略映射模型建立
针对安全配置意图与策略映射关系建立问题,本课题拟基于知识图谱对防御意图信息进行分解,并结合相关配置要求,建立防御意图与设备指令之间的连接,其过程如图5 所示。
图5 基于知识图谱的防御意图和策略映射关系示意
安全配置意图首先被拆分为行为动作和操作对象两大部分内容,然后基于操作对象属性进行相关行为动作和ID 等属性字段的适配,最后融合安全配置意图相关信息生成最终的安全配置策略。
基于知识图谱的意图和策略模型的映射关系如下表所示,整个意图与策略的映射存在于知识图谱中,根据相应的策略映射,生成一系列机器可以理解执行的策略指令,并且通过知识图谱,形成对应的配置策略。
3.3 安全配置意图与安全策略映射模型验证
对于安全配置意图与安全策略模型的验证,主要是通过对推理策略的准确率和召回率来实现的。准确率和召回率是信息检索、分类、识别、翻译等各个领域的两个最基本的指标。准确率为预测该类样本的准确性,越高越好;召回率为预测正确的类别C的样本对于样本集中类别C的样本的覆盖程度,越高越好。概念公式如下所示,其中P为准确率,-R为召回率。
表1 基于知识图谱的意图和策略模型的映射关系表
二分类问题可以根据真实类别和分类器预测类别是否为正例划分为:
真正例(True Positive,TP):真实类别和预测类别都是正例,即真实类别匹配到了,预测类别不匹配。
假正例(False Positive,FP):真实类别是负例,预测类别是正例,即真实类别不匹配,但预测类别匹配到了。
假负例(False Negative,FN):真实类别是正例,预测类别是负例,即真实类别匹配到了,但预测类别未匹配到。
真负例(True Negative,TN):真实类别和预测类别都是负例,即真实类别和预测类别都未匹配到。
准确率和召回率是互相影响的,理想情况下希望两者都高,但在实际情况下准确率高、召回率就低,召回率低、准确率就高。在两者都要求高的情况下,可以用宏平均(Macro-averaging,F1 值或F-score、F-measure)来衡量。F1 的获取是先统计每一个类的指标值,然后求所有类的算术平均值,即P和R的调和平均值,计算公式如下所示:
在模型的验证过程中,对于根据用户的输入推理出的策略与真实策略做比较,并记录每次测试中预测错误的策略次数,计算出每次实验的准确率与召回率,对于安全配置意图与安全策略模型整个框架的准确率要达到80%以上。
综上所述,安全配置意图与策略映射模型构建及验证的具体运作流程如图6 所示。
图6 策略配置意图与策略模型构建流程图
首先根据用户提供的意图数据(如:Z 要求区域R 执行计划B)等,经过文本识别技术转化成系统可以识别并理解的向量形式。将输入的文本识别得到的词嵌入(如:Z 要求区域R 执行计划B)输入BI-LSTM(Bi-Long Short-Term Memory,双向长短时记忆网络)的条件随机场模型中识别出文本的各个实体(人物/动作/区域/动作/计划B)。然后将上一步得到的各个实体输入基于图卷积的关系抽取模型中得到各个实体的关系(如:(执行)(Z,计划B),(范围)(区域R,计划B)),通过胶囊网络将用户的多个意图识别出来,最后将上一步得到的意图通过知识图谱与基于常识和领域知识融合的机器推理技术选择出正确的策略配置,需要补充的是对于意图和策略配置的映射关系已经存于知识图谱中。在多元知识融合知识图谱(即知识库)的辅助下,准确识别出用户身份、目的,并且根据用户的防御意图给出精确的意图解析,为后面的策略配置提供可靠来源。
4 安全配置策略自动转译技术
根据安全配置意图与配置策略的模型和映射关系,结合安全配置知识库数据,依据安全配置意图的描述,可以实现将安全配置意图自动转译为安全配置指令,从而为安全配置策略的自动化生成提供铺垫。
结合安全配置策略的形式化描述,安全配置策略自动转译技术主要完成安全配置指令向安全配置策略的转化。其转译过程如图7 所示:
图7 安全配置策略自动转译流程
安全配置策略的自动化转译,首先基于上节建立的安全配置意图与配置策略映射关系,得到安全配置指令参数。然后结合安全配置策略库信息,针对配置策略模板,生成相应的策略描述。最后,将安全配置指令中的相关参数补充到安全配置策略描述,生成可下发实施的安全配置策略。
5 配置策略冲突检测及优化
5.1 配置策略冲突检测
安全配置策略应该满足一致性条件,即策略集中任意两个策略,如果其作用的主体、目标相同,其对应的响应策略也应该是一致的,不存在相互冲突的情形,否则该策略集是不一致的,即策略之间存在冲突。对于一个策略系统来说,如果要有效地运行,选择一个高效的检测和解决冲突的方法就显得十分必要。目前几种常用的策略检测和解决的方法如下:
(1)基于多维空间的策略冲突检测[4]
基于多维空间的策略冲突检测将策略规则分为条件和动作部分,每个部分由多个属性组成,可以将每个属性看作一项,一条策略的动作部分的多个项应该能够同时执行。条件部分的每一个属性即每一项看作是多维空间中的一个轴,即一维,这样每条策略的条件部分应该对应多维空间中的一块区域,如果有两条或多条策略在多维空间中的区域有重叠,就会存在一个潜在的冲突,这时要检查它们的动作部分是否可以同时执行。
如果系统中存在n条策略,则进行一次这样的冲突检验所需要的时间为O(n2)。检测到一个冲突后,可以通过给相互冲突的策略赋予不同的优先级来进行解决,因为优先级也可以看作是条件部分的一个属性,对应多维空间中的一维,从而使冲突的策略的条件部分在多维空间中对应的区域不再重叠。
(2)基于Ponder 和角色的策略冲突检测[5]
在Ponder 语言描述的策略中,角色包含一个或多个策略,拥有该角色的主体意味着拥有该角色内的策略;当赋予主体策略时,只需要加入某个设定好的角色即可;对于策略冲突的断定可以根据两条策略的主体行为目标的覆盖范围是否重叠来判断,这种方法可以判断模态冲突,而对具体应用冲突则不能直接检测。
大多数的应用相关冲突不能通过静态语法分析的方法检查发现,曾有向策略集合中增加对策略本身进行约束的“策略的策略”,即所谓的元策略来解决应用相关冲突检测问题。但是其语法复杂,并且要求管理员根据每个冲突实例编写一定量的程序,加大了管理员的工作负担。
(3)基于有向图模型的策略冲突检测[6]
基于有向图的策略冲突检测和消解,使用有向图来表示安全策略集,每个节点表示策略的主体或目标,分支的状态转化为策略的动作。如果存在两种不同状态的切换,则存在着策略冲突。
(4)基于PDL 逻辑编程的策略冲突检测[7]
PDL(Policy Description Language,PDL)是基于事件的策略描述语言,具有语法简单和描述能力强等特点。PDL 将策略描述为事件—条件—动作(event-condition-action,ECA)规则的集合。基于PDL 策略冲突检测是通过引入动作约束来捕捉策略冲突,即动作约束规定了在特定情况下不允许一组动作同时执行,若策略的执行违反动作约束时,则可检测到相应的策略冲突。另外,基于逻辑程序(Logic Programming)的方法也可以对PDL 策略进行冲突检测与消解,利用逻辑推理验证检测与消解结果的正确性。
经过以上对比分析,基于PDL 逻辑编程的策略冲突检测和解决方法,按照公理使用分离性逻辑程序定义策略规则的语义和冲突检测与解决,通过PDL 规范自动生成控制过程,既易于用户修改、理解,又具有机器可执行性。另外,采用静态的优先级定义和动态的逻辑推理相结合的冲突解决办法,可实现策略冲突的有效检测和高效解决,作为本研究的策略冲突检测和解决的技术途径。
5.2 配置策略优化完善
通常安全配置策略由于频繁变更、日积月累会造成很多无用策略,一方面影响系统设备的运行效率,另一方面也会存在一定的安全隐患。本课题拟利用配置策略优化完善技术,定期针对系统设备策略对象(包括地址对象、时间对象)和配置策略(包括安全策略、ACL 策略、NAT 策略、路由策略等)进行优化检查分析,梳理出各类空对象、未被应用对象、冗余策略、隐藏策略、过期策略、可合并策略、空策略等,管理员可根据分析结果再对策略进行精简和优化调整。各类优化检查标准与规则说明如下:
空对象:只有对象名,对象内容为空,则删除相应的策略;
未被应用对象:未被安全策略、ACL 策略和NAT 策略等所引用的对象,则删除相应的策略;
隐藏策略:同一策略集内,一条高优先级策略的源地址、目的地址、服务对象、时间对象完全包含或等于另外一条低优先级策略的源地址、目的地址、服务对象、时间对象,不管动作是否一致或相反,都删除低优先级的策略;
冗余策略:同一策略集内,一条低优先级策略的源地址、目的地址、服务对象、时间对象、老化时间(长短链接)完全包含高优先级另外一条策略的源地址、目的地址、服务对象、时间对象、老化时间,并且动作相同,则删除相应高优先级的策略;
可合并策略:同一策略集内,指两条源域、目的域以及动作相同的策略,源地址、目的地址、服务对象、时间对象四个元素只有一项不相同,其余均相同,则合并为一条策略;
空策略:策略引用的源地址对象、目的地址对象或服务对象有为空的对象,此类策略在实际应用中不会被匹配,则删除空策略;
过期策略:策略中会包含时间对象,当时间对象过期后,该策略会显示为过期策略,则删除相应的过期策略。
通过周期性地清理上述空策略、冗余策略、过期策略等等,完成系统设备策略的优化更新,提升设备运行效率和安全性。
6 结语
本文对安全配置策略自动生成与验证技术进行研究,包括安全配置策略描述、安全策略模型的构建与验证、安全策略自动转译技术和策略检测技术,通过构建安全策略的形式化描述,建立安全配置意图与配置策略映射模型及映射关系,利用安全配置策略模板,结合网络安全知识图谱信息,自动化生成网络安全配置意图对应的配置策略,并利用策略冲突检测和智能化管理技术实现对网络安全配置策略的完善优化。通过配置策略自动生成与验证技术可以快速解析、转化、生成安全配置策略,减轻系统配置管理压力,提供配置管理效率,提升安全策略智能计算生成能力,促进安全配置管理向自动化、智能化发展。