王煜荷,王劲松*,李 懿,张洪玮,张洪豪
(天津理工大学a.天津市智能计算及软件新技术重点实验室,b.计算机病毒防治技术国家工程实验室,c.计算机科学与工程学院,天津 300384)
随着新一轮科技革命和产业变革的蓬勃兴起,数据已成为继土地、劳动力、资本和技术之后最为活跃的关键生产要素。网络规模的迅速扩大使得信息系统内的数据内容日渐增多,信息数据逐渐成为各企事业单位的核心资产,数据安全保护越来越重要。而企业数据安全面临的最大威胁,源自内部人员对于内部网络资源设备的攻击。国际数据公司(international data corporation,IDC)的一份调查统计表明,全球约有80%的企业存在内网信息安全或信息风险问题,在所有被调查的公司曾经产生过的安全隐患和事件中,超过60%的比例来自内部人员[1]。在利益的驱使下,内部人员的各种泄密和攻击事件层出不穷。
同时,网络设备所能支持的功能越来越多,导致网络配置错误经常出现。在网络设备的运行维护过程中,管理员通常依赖远程通信网络协议(teletype network,Telnet)、安全外壳协议(secure shell,SSH)、文件传输协议(file transfer protocol,FTP)、远 程 显 示 协 议(remote display protocol,RDP)等协议对设备进行远程管理,这就使网络配置管理中出现一些问题:账号管理混乱、权限管理粗放、访问控制策略不严格、无法有效审计用户操作等[2]。错误配置不仅会引发网络故障,还会影响到网络的安全运行。为了实现安全策略,管理员往往需要人工将其转化成底层的配置命令,不可避免地会出现一些非预期的配置状态,从而造成安全漏洞,成为网络安全运行的隐患[3]。
在这种严峻的情况下,如何保护好存储了企业全部核心机密的后台设备,尤其是如何更好地防范与审计内部管理人员对这些设备的访问和操作,成为保障网络数据信息安全最根本的环节。
目前主要的网络设备配置管理有2种。第1种是分散式管理,即每个管理员都直接掌握设备账号密码,可直接登录设备进行配置,这种管理方案的弊端是无法具体掌握管理员的相应操作,且管理员持有设备密码,存在泄露隐患。第2种是统一配置管理,设置一个中间服务器,所有管理员统一登录到该服务器,由该服务器代理登录设备,接管终端计算机对网络和服务器的访问。这种方法可以规避管理员持有密码带来的风险,也可以由该服务器作配置归档和审计,但这种方法也存在问题:1)由于设置了中间服务器,那么中间服务器的安全尤为重要,一旦中间服务器出现故障或被攻击,则整个网络会瘫痪,而且配置记录将会完全泄露;2)操作记录不公开,可信证据由一方掌握,那么在多方协同工作的过程中,运维人员相对处于弱势地位。
区块链是利用加密链式区块结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用智能合约来编程和操作数据的一种去中心化基础架构与分布式计算范式,具有去中心化、时序数据、集体维护、可编程和安全可信等特点[4]。本文利用区块链去中心化的特性,提出了一种基于区块链的网络配置管理模型,避免了可能出现的单点故障问题,增加攻击成本,提高整个系统的可靠性和安全性。
在网络设备的配置方面,一些学者对提高网络配置效率和配置自动化的实现进行了研究。唐启涛[5]提出一种基于信息熵的网络设备配置命令分类算法,应用在网络设备配置命令的智能修复系统中,提高了配置命令分类的效率和精度。袁晓飞[6]设计与实现了基于Web的网络设备监测管理系统,与可视化相结合,提供简单、便捷和高效的网络管理服务。文献[7]编制了基于Visual Basic脚本语言(visual basic script,VBScript)的程序,实现交换机的批量维护。
在统一的配置管理系统的研究方面,陈跃斌[8]提出了基于可扩展标记语言(extensible markup language,XML)的配置策略统一描述方法,屏蔽了设备厂商配置命令不一致的问题,在此基础上设计并实现了数据中心网络配置管理系统(configuration management system,CMS)。网络配置协议(network configuration protocol,NETCONF)是一种基于XML的网络管理协议,它提供了一种对网络设备进行配置和管理的可编程的方法。赖杨灯[9]基于NETCONF协议标准,对策略路由配置管理进行二次开发,设计了一种策略路由网络配置管理系统。文献[10]使用网络本体语言(web ontology language,OWL),基于本体信息抽取,实现对不同供应商的异构设备的网络配置管理。文献[11]提出了一种基于区块链的网络功能虚拟化(network functions virtualization,NFV)安全管理、配置和迁移体系结构,保证了网络核心配置的安全更新和迁移。文献[12]对软件定义网络(software-defined networking,SDN)的自动化配置管理进行了系统研究,设计并实现了基于SDN的配置管理软件。
“特权用户”被认为是拥有访问敏感网络、机器和应用程序的权限,以执行普通任务的人(即网络管理员)。特权访问管理(privilege access management,PAM)指一类帮助保护、控制、管理和监控对关键资产的特权访问的解决方案。在特权用户管理方面,文献[13]总结了云计算中不稳定的特权管理因素和威胁,对这一问题进行了全面地调查整理。文献[14]针对细粒度特权管理和执行问题,开发了特权管理系统(privilege management model,PRIMA),提供网格层特权管理、动态账户创建和授权策略,支持临时和动态协作场景。
区块链上记录的数据对所有用户可见且不可篡改,因此可以用区块链对访问控制的策略/权限进行管理,从而实现公开透明的访问控制。文献[15]利用区块链技术来定义访问控制系统,将访问控制策略编写成智能合约部署在区块链上,以保证访问控制策略评估的可审核性。文献[16]提供了对存储在云中服务器的数据访问控制,用基于密文-策略属性的动态属性加密方案来实现访问控制,而无需云服务提供方的参与。文献[17]基于以太坊平台使用智能合约实现对医疗数据的访问控制,将智能合约与访问控制相结合进行自动化的权限管理,实现了对不同组织的分布式医疗数据的整合和权限管理。
综上所述,对网络配置管理的研究大多基于中心化的架构,鲜有将区块链技术与配置管理相结合的研究。区块链公开透明的特点使权限管理过程公开可审计,能够防止越权行为,在访问控制领域有一定优势。
基于区块链的网络配置管理模型包含2个实体:运维人员和运维对象。
1)运维人员(管理员):对运维对象进行运行管理和维护的人员。
2)运维对象(网络设备):是运维操作的对象,包括交换机、路由器等网络设备和各种服务器。
系统架构如图1所示,运维人员通过点对点网络(peer-to-peer,P2P)互相连接,组成区块链网络,每个运维人员运行区块链的一个节点,由区块链网络作为一个整体与网络设备进行交互。其中,代理节点作为整个网络的代表,负责某一轮对网络设备的具体操作过程,代理节点由全网节点依据算法选出,各节点地位平等,公平竞争代理资格,没有中心节点存在。
图1 系统架构Fig.1 System architecture
1)单点登录。管理员只需要经过一次身份认证,就可以访问多种目标设备,实现单点登录。
2)权限控制。管理员只能访问自己已获得授权的目标设备,以“交易”作为请求信息的载体,由区块链网络所有节点共同执行判断,验证请求是否符合相应的授权规则。
3)账号管理。对账号整个生命周期进行监控和管理,账号信息记录在链下,并随着代理节点的每次操作而不断更新,实现账号动态管理。
4)配置管理。管理员把配置操作、配置前后设备状态等信息写入区块链,公开透明可追溯,以备日后审计。
2.3.1 初始化
1)确定每个管理员能够访问和操作的设备,制定网络设备的权限控制列表。
2)将所有管理员节点通过P2P网络配置成区块链网络,把权限控制列表分发给每个节点,各节点生成公私钥对并且公布公钥作为自己的身份标识符。
3)对所有设备进行编号,称为设备号(identity document,ID),记录网络设备初始状态(如互联网协议地址(internet protocol address,IP地址)、端口号、协议等能够反映该设备工作状态的字段值),把设备ID及初始状态打包写入创世区块(第1个被创建的区块)。
4)将设备的账号密码随机分发给各管理员节点,设备的初始密码由各节点各自掌握,使得设备的账号密码由全网的管理员节点共同保存,各节点只对自己保管的账号负责,不知晓其他节点情况。
2.3.2 执行过程
假设区块链中某一节点,也就是某一网络管理员想要对某一设备进行操作,那么一个完整的运维审计执行方案包含以下3个阶段:权限控制,代理节点操作和上链(即记账),核心是“代理节点操作”部分。基于区块链的配置管理方案如图2所示,3个阶段循环往复执行,每执行一轮将会进行一次运维操作,记录操作信息并打包生成新区块,更新区块链。各个阶段的详细说明如下。
图2 基于区块链的配置管理方案Fig.2 Blockchain-based configuration management scheme
1)第1阶段:权限控制。这一阶段是对传统网络设备配置过程中的权限管理的分布式实现。
①想要进行设备配置操作的管理员会向区块链网络发起交易,以交易的形式将请求信息发布至区块链网络,交易数据包括以下几部分:目标设备ID,管理员数字签名,请求进行的操作。
②区块链网络中的其他节点收到交易请求后首先进行身份认证,验证交易的签名,确认该笔交易是由合法用户发起的,且没有被篡改。
③身份认证无误后通过访问控制列表验证用户是否有相应权限,若验证通过则向代理节点集中的首位节点发送信号,否则不发送。与传统权限管理不同的是,本方案的验证过程由全网所有节点完成,而不是单个节点或某几个节点,通过这种方式可以避免串通作恶、单点故障等问题。
2)第2阶段:代理节点操作。在本模型中,代理节点负责代理用户完成配置操作,并在操作结束后将操作记录打包送进区块中,即区块是由代理节点生成并广播的,代理节点要先后完成代理操作和记账两项工作,因此代理节点的选择尤为重要。本方案拟采用改进的权益证明(proof of stake,PoS)算法对所有节点(除去发起请求的节点)进行选举产生代理节点。PoS算法是为解决工作量证明(proof of work,PoW)算法大量浪费资源问题而提出的一种替代算法,该算法与PoW算法的最大不同点在于区块的记账权由权益最高的节点获得,而不是算力最高的节点。为了避免传统的PoS算法选举周期长、选举机制复杂等缺点,本方案对PoS进行了如下改进。
①改进的PoS算法中权益根据节点积分确定,积分与节点的连续在线时长有关,节点的积分越高,被选为代理节点的概率就越大。每次选出积分最高的3个节点作为代理节点集,其中积分最高的为首位节点,其余2个为替补节点。首先令首位节点为代理节点,若首位节点不能胜任代理操作,则再从代理节点集中选取,一旦当选为代理节点,节点积分将清零。代理节点集的设置降低了节点不在线从而影响网络运转的风险。
②每个被选出的代理节点负责连续的5个块,也就是负责处理5笔请求操作,避免频繁地进行选举,提高系统运行效率和出块速度。
③引入惩罚机制,为更好地鼓励诚实节点。节点作恶被举报将会扣减积分,只有遵守协议的节点才能累积更高的积分,进而成为候选代理节点。
假设区块链中有n个候选节点,每个候选节点标号为1,2,…,i,…,n,这n个候选节点可以构成一个大的集合:N={1,2,…,i,…,n},则节点积分D的计算公式为:
式中,Oi表示节点i的连续在线时长,Ti表示节点i执行代理操作的累计时长。
则n个候选节点的总积分可以表示为:
把每个节点的积分占总积分的比重看做每个节点的权重,表示为ω1,ω2,ω3,…,ωi,…,ωn,则:
信用系数是改进算法里的一个百分比系数,是节点信用度的一种表现形式。信用系数能够在一定程度上左右节点的最终结果,保证高信用度的候选节点具有更大的优势。最终结果R的计算公式为:
式中,α是根据节点信用度产生的系数,0<α≤1,初始数值所有节点一致,修改可以根据全体管理员的投票结果决定,通过该算法,信用度较低的节点想成为代理节点需要更多的在线时长,而信用度高的节点只需要维持正常行为,从而降低作恶节点获得代理权的概率。
这一阶段执行过程的具体步骤如下:
①代理节点在收到超过半数节点的验证通过信号后,读取交易数据;
②从交易数据中得到的信息确定目标设备ID,在区块链上查找该设备的上一次操作数据,得到上一轮的代理节点信息,随后向该设备的上一轮代理节点请求设备账号密码;
③使用获得的账号密码登录到目标设备,逐条执行交易中的操作;
④操作完毕后修改设备账号密码,断开连接,注销登录状态;
⑤将设备ID、交易数据、设备结束状态等数据打包生成区块,并将区块数据广播到网络中。
3)第3阶段:上链。全网其他节点接收到广播的数据,会对打包数据进一步确认,验证其签名,只有通过验证的数据才会被记录到节点本地账本中,区块内容及说明如表1所示。如果没有通过验证,那么节点将拒绝对其签名,也不会将数据继续广播到其他节点。
表1 区块内容及说明Tab.1 Block content and description
本节主要从可用性、防篡改性和数据安全几个方面分析模型的安全性。
1)可用性。由于区块链网络是一个分布式的点对点网络,因此能在很大程度上抵抗技术失误和恶意攻击,并且每个节点都能够复制并储存一个数据副本,所以该系统避免了单点故障问题,任意一个单一的节点离线都不会对网络整体的可用性及安全性造成任何影响,比传统方法具有更高的抗风险能力。在权限控制方面,由区块链网络中的所有节点共同执行判断,这种设计方法避免了只由单一的决策者来判断,从概率学的角度提高了整个验证判断过程的安全性。这个问题可以抽象成为经典的分布式问题,即拜占庭将军问题。若系统中有n个节点,其中有f个恶意节点,f个故障节点,那么只要f<(n-1)/3,整个系统就能够对某个操作的权限问题达成一致。若某一验证节点被攻击,得出错误的结论,也无法对整体验证结论形成影响,并且验证结果在验证点之间是可查、可审、可追溯的,恶意节点就能够迅速被发现清理。
2)防篡改性。区块链系统具有不可篡改的特性,所有行为均记录在区块链上,公开透明,便于审计追查。对所有操作信息进行记录,包括输入命令与输出结果,保证在发生安全事件后,能及时追溯到具体操作的个人,实现配置的可追溯。相比于传统的系统,日志的写入都是经过全网节点共识的,增加了共识的可信度和不可抵赖性,为事后追责和系统状态恢复提供了便利。同时,定期对记录信息进行审计,对所有用户的操作行为进行分析,从源头杜绝隐患。
3)数据安全。为了保证网络设备账号和密码不会被篡改和泄露,本模型利用区块链系统去中心化特性的优势,采用了分散管理的方法。与传统的集中式管理不同,在分散管理方法中,运维对象的账号密码由区块链网络中的节点共同管理,账号的管理权分散在网络中,并随着运维过程动态变化。当有节点退出网络时,撤销其代理权限,回收其所管理的账号信息,在网络中进行重新分配。代理节点在连接到设备前首先应向相应节点请求账号密码,登录到设备后修改账号密码,由自己保管,明确账号操作者和责任人,账号随着系统的修改而变化,以此实现账号管理的动态平衡。假设有非此网络的恶意攻击者E,想要修改某设备Q1。其每次攻击成功的概率都是1/n,其中n为节点数目。这样除非E同时攻击网络中所有的节点,否则难以拿到某一时刻设备的密码,从而有效地保证了密码的安全。
本设计在以太网上做了原型验证实验,实验设备主要分为两类。一类是组成区块链网络的节点,包括运行在VMware软件中的6台Ubuntu 18.04虚拟机,这6台虚拟机运行在一台服务器上,每个都配置了千兆网卡和网际协议版本6(internet protocol version 6,IPv6)地址,能够保证节点之间的正常通信。另一类是作为操作对象的网络设备,采用网络设备模拟软件eNsp和终端仿真程序SecureCRT对网络设备的配置进行实验。eNsp运行在上述6台虚拟主机中的一台主机上,网络设备硬件环境如表2所示,AR201为路由器,S3700为交换机。
表2 网络设备硬件环境Tab.2 Network device hardware environment
为了比较基于区块链的方案和传统方案之间的效率差距,实验中另设了一台虚拟机作为传统方案中的服务器,来对比测试传统方案和基于区块链的设计随着命令数量上升处理时延的变化。由于设备状态不好观测,所以分别用传统方案的服务器和本方案的节点来配置路由器IP地址,然后通过Ping命令来实际检测当前IP地址的变化。同命令数量下处理时延对比如图3所示,测试结果表明,传统中心化方案相比于本文方案达到的时延较低,但是本文方案也达到了不错的效果,与传统方案的差距并未太大,在实现分布式和去单点故障的优点下,本文方案在对安全性要求较高并对性能要求较低的场景中,如需要严格日志审计多中心联盟场景具有一定优势。
图3 同命令数量下处理时延对比Fig.3 Comparison of processing delays with the same number of commands
下面对本设计在节点数量和命令数量方面做一个性能测试。与上面测试方式相同,配置路由器IP地址,观察Ping包的情况,但是Ping包有8 ms间隔,所以统一取中值即取Ping包变化的那一个包的时间的前4 ms为具体时延,来测试多节点固定命令数量的时延,测试时每个节点固定发送10、30、100条操作命令,图4为多节点固定命令数量处理时延对比,结果显示,操作指令数量增长会造成系统时延的增加,但是节点数量增长对时延影响不明显。这表明本模型有良好的拓展性,适合学校、军队、医院等交易数量不多但是日志审核严格的应用场景。
图4 多节点固定命令数量处理时延对比Fig.4 Multi-node fixed order quantity processing time delay
本文提出了基于区块链的网络配置管理模型,并进一步阐述了基于区块链的配置管理方案的主要流程。其核心思想是用区块链对传统网络配置管理系统中的中心化部分进行分布式改造,主要功能包括单点登录、权限控制、账号管理和配置管理。分析和验证表明,基于区块链的架构能够有效解决传统架构下面临的单点化和中心化的问题,将二值化的信任模型扩展为网状的整体信任模型,更符合实际的网络运行环境。