网络文件系统的演化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络文件系统的演化相关的知识,希望对你有一定的参考价值。
参考技术A网络文件系统(NFS)是文件系统之上的一个网络抽象,来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。虽然 NFS 不是第一个此类系统,但是它已经发展并演变成 UNIX系统中最强大最广泛使用的网络文件系统。NFS 允许在多个用户之间共享公共文件系统,并提供数据集中的优势,来最小化所需的存储空间 。
NFS:与以往一样有用并在不断演变
网络文件系统(NFS)从1984 年问世以来持续演变,并已成为分布式文件系统的基础。当前,NFS(通过 pNFS 扩展)通过网络对分布的文件提供可扩展的访问。探索分布式文件系背后的理念,特别是,最近 NFS 文件进展。 第一个网络文件系统 — 称为 File Access Listener — 由 Digital Equipment Corporation(DEC)在 1976 年开发。Data Access Protocol(DAP)的实施,这是 DECnet 协议集的一部分。比如 TCP/IP,DEC 为其网络协议发布了协议规范,包括 DAP。
NFS 是第一个现代网络文件系统(构建于 IP 协议之上)。在 20 世纪 80 年代,它首先作为实验文件系统,由 Sun Microsystems 在内部完成开发。NFS 协议已归档为 Request for Comments(RFC)标准,并演化为大家熟知的 NFSv2。作为一个标准,由于 NFS 与其他客户端和服务器的互操作能力而发展快速。
标准持续地演化为 NFSv3,在 RFC 1813 中有定义。这一新的协议比以前的版本具有更好的可扩展性,支持大文件(超过 2GB),异步写入,以及将 TCP 作为传输协议,为文件系统在更广泛的网络中使用铺平了道路。在 2000 年,RFC 3010(由 RFC 3530 修订)将 NFS 带入企业设置。Sun 引入了具有较高安全性,带有状态协议的 NFSv4(NFS 之前的版本都是无状态的)。今天,NFS 是版本 4.1(由 RFC 5661 定义),它增加了对跨越分布式服务器的并行访问的支持(称为 pNFS extension)。
令人惊讶的是,NFS 已经历了几乎 30 年的开发。它代表了一个非常稳定的(及可移植)网络文件系统,它可扩展、高性能、并达到企业级质量。由于网络速度的增加和延迟的降低,NFS 一直是通过网络提供文件系统服务具有吸引力的选择。甚至在本地网络设置中,虚拟化驱动存储进入网络,来支持更多的移动虚拟机。NFS 甚至支持最新的计算模型,来优化虚拟的基础设施。 NFS 允许计算的客户 — 服务器模型(见图 2)。服务器实施共享文件系统,以及客户端所连接的存储。客户端实施用户接口来共享文件系统,并加载到本地文件空间当中。
在 Linux中,虚拟文件系统交换(VFS)提供在一个主机上支持多个并发文件系统的方法(比如 CD-ROM 上的 International Organization for Standardization [ISO] 9660,以及本地硬盘上的 ext3fs)。VFS 确定需求倾向于哪个存储,然后使用哪些文件系统来满足需求。由于这一原因,NFS 是与其他文件系统类似的可插拔文件系统。对于 NFS 来说,唯一的区别是输入/输出(I/O)需求无法在本地满足,而是需要跨越网络来完成。
一旦发现了为 NFS 指定的需求,VFS 会将其传递给内核中的 NFS 实例。NFS 解释 I/O 请求并将其翻译为 NFS 程序(OPEN、ACCESS、CREATE、READ、CLOSE、REMOVE 等等)。这些程序,归档在特定 NFS RFC 中,指定了 NFS 协议中的行为。一旦从 I/O 请求中选择了程序,它会在远程程序调用(RPC)层中执行。正如其名称所暗示的,RPC 提供了在系统间执行程序调用的方法。它将封送 NFS 请求,并伴有参数,管理将它们发送到合适的远程对等级,然后管理并追踪响应,提供给合适的请求者。
进一步来说,RPC 包括重要的互操作层,称为外部数据表示(XDR),它确保当涉及到数据类型时,所有 NFS 参与者使用相同的语言。当给定架构执行请求时,数据类型表示可能不同于满足需求的目标主机上的数据类型。XDR 负责将类型转换为公共表示(XDR),便于所有架构能够与共享文件系统互操作。XDR 指定类型字节格式(比如 float)和类型的字节排序(比如修复可变长数组)。虽然 XDR 以其在 NFS 中的使用而闻名,当您在公共应用程序设置中处理多个架构时,它是一个有用的规范。
一旦 XDR 将数据转换为公共表示,需求就通过网络传输给出传输层协议。早期 NFS 采用 Universal Datagram Protocol(UDP),但是,今天 TCP 因为其优越的可靠性而更加通用。
在服务器端,NFS 以相似的风格运行。需求到达网络协议栈,通过 RPC/XDR(将数据类型转换为服务器架构) 然后到达 NFS 服务器。NFS 服务器负责满足需求。需求向上提交给 NFS 守护进程,它为需求标示出目标文件系统树,并且 VFS 再次用于在本地存储中获取文件系统。整个流程在图 3 中有展示。注意,服务器中的本地文件系统是典型的 Linux 文件系统(比如 ext4fs)。因此,NFS 不是传统意义上的文件系统,而是访问远程文件系统的协议。
对于高延迟网络,NFSv4 实现称为 compound procedure 的程序。这一程序从本质上允许在单个请求中嵌入多个 RPC 调用,来最小化通过网络请求的 transfer tax。它还为响应实现回调模式。 从客户端的角度来说,NFS 中的第一个操作称为 mount。Mount 代表将远程文件系统加载到本地文件系统空间中。该流程以对 mount(Linux 系统调用)的调用开始,它通过 VFS 路由到 NFS 组件。确认了加载端口号之后(通过 get_port 请求对远程服务器 RPC 调用),客户端执行 RPC mount 请求。这一请求发生在客户端和负责 mount 协议(rpc.mountd)的特定守护进程之间。这一守护进程基于服务器当前导出文件系统来检查客户端请求;如果所请求的文件系统存在,并且客户端已经访问了,一个 RPC mount 响应为文件系统建立了文件句柄。客户端这边存储具有本地加载点的远程加载信息,并建立执行 I/O 请求的能力。这一协议表示一个潜在的安全问题;因此,NFSv4 用内部 RPC 调用替换这一辅助 mount 协议,来管理加载点。
要读取一个文件,文件必须首先被打开。在 RPC 内没有 OPEN 程序;反之,客户端仅检查目录和文件是否存在于所加载的文件系统中。客户端以对目录的 GETATTR RPC 请求开始,其结果是一个具有目录属性或者目录不存在指示的响应。接下来,客户端发出 LOOKUP RPC 请求来查看所请求的文件是否存在。如果是,会为所请求的文件发出 GETATTR RPC 请求,为文件返回属性。基于以上成功的 GETATTRs 和 LOOKUPs,客户端创建文件句柄,为用户的未来需求而提供的。
利用在远程文件系统中指定的文件,客户端能够触发 READ RPC 请求。READ 包含文件句柄、状态、偏移、和读取计数。客户端采用状态来确定操作是否可执行(那就是,文件是否被锁定)。偏移指出是否开始读取,而计数指出所读取字节的数量。服务器可能返回或不返回所请求字节的数量,但是会指出在 READ RPC 回复中所返回(随着数据)字节的数量。 NFS 的两个最新版本(4 和 4.1)对于 NFS 来说是最有趣和最重要的。让我们来看一下 NFS 创新最重要的一些方面。
在 NFSv4 之前,存在一定数量的辅助协议用于加载、锁定、和文件管理中的其他元素。NFSv4 将这一流程简化为一个协议,并将对 UDP 协议的支持作为传输协议移除。NFSv4 还集成支持 UNⅨ 和基于 Windows? 的文件访问语义,将本地集成 NFS 扩展到其他操作系统中。
NFSv4.1 介绍针对更高扩展性和更高性能的并行 NFS(pNFS)的概念。要支持更高的可扩展性,NFSv4.1 具有脚本,与集群化文件系统风格类似的拆分数据/元数据架构。如 图 4 所展示的,pNFS 将生态系统拆分为三个部分:客户端、服务器和存储。您可看到存在两个路径:一个用于数据,另一个用于控制。pNFS 将数据布局与数据本身拆分,允许双路径架构。当客户想要访问文件时,服务器以布局响应。布局描述了文件到存储设备的映射。当客户端具有布局时,它能够直接访问存储,而不必通过服务器(这实现了更大的灵活性和更优的性能)。当客户端完成文件操作时,它会提交数据(变更)和布局。如果需要,服务器能够请求从客户端返回布局。
pNFS 实施多个新协议操作来支持这一行为。LayoutGet 和 LayoutReturn 分别从服务器获取发布和布局,而 LayoutCommit 将来自客户端的数据提交到存储库,以便于其他用户使用。服务器采用 LayoutRecall 从客户端回调布局。布局跨多个存储设备展开,来支持并行访问和更高的性能。
数据和元数据都存储在存储区域中。客户端可能执行直接 I/O ,给出布局的回执,而 NFSv4.1 服务器处理元数据管理和存储。虽然这一行为不一定是新的,pNFS 增加功能来支持对存储的多访问方法。当前,pNFS 支持采用基于块的协议(光纤通道),基于对象的协议,和 NFS 本身(甚至以非 pNFS 形式)。
通过 2010 年 9 月发布的对 NFSv2 的请求,继续开展 NFS 工作。其中以新的提升定位了虚拟环境中存储的变化。例如,数据复制与在虚拟机环境中非常类似(很多操作系统读取/写入和缓存相同的数据)。由于这一原因,存储系统从整体上理解复制发生在哪里是很可取的。这将在客户端保留缓存空间,并在存储端保存容量。NFSv4.2 建议用共享块来处理这一问题。因为存储系统已经开始在后端集成处理功能,所以服务器端复制被引入,当服务器可以高效地在存储后端自己解决数据复制时,就能减轻内部存储网络的负荷。其他创新出现了,包括针对 flash 存储的子文件缓存,以及针对 I/O 的客户端提示 (潜在地采用 mapadvise 作为路径)。 虽然 NFS 是在 UNⅨ 和 Linux 系统中最流行的网络文件系统,但它当然不是唯一的选择。在 Windows? 系统中,ServerMessage Block [SMB](也称为 CIFS)是最广泛使用的选项(如同 Linux 支持 SMB一样,Windows 也支持 NFS)。
最新的分布式文件系统之一,在 Linux 中也支持,是 Ceph。Ceph 设计为容错的分布式文件系统,它具有 UNⅨ 兼容的 Portable Operating System Interface(POSⅨ)。您可在 参考资料 中深入了解 Ceph。
其他例子包括 OpenAFS,是 Andrew 分布式文件系统的开源版(来自 Carnegie Mellon 和 IBM),GlusterFS,关注于可扩展存储的通用分布式文件系统,以及 Lustre,关注于集群计算的大规模并行分布式文件系统。所有都是用于分布式存储的开源软件解决方案。 NFS 持续演变,并与 Linux 的演变类似(支持低端、嵌入式、和高端性能),NFS 为客户和企业实施可扩展存储解决方案。关注 NFS 的未来可能会很有趣,但是根据历史和近期的情况看,它将会改变人们查看和使用文件存储的方法。
关于网络安全攻防演化博弈的研究小议
1. 拉高视角,从宏观看网络安全攻防
伴随着信息化的发展,网络安全的问题就一直日益突出,与此同时,网络安全技术也成为研究热点,直到今日也没有停止。
从微观来看,网络安全技术研究指的是针对某项或某几项指标的完善,例如:
- 针对WEB系统漏洞的挖掘和利用,以及与此相应的日志采集以及关键点审计技术,例如RASP和WAF,核心指标是精确率和召回率
- 恶意代码作者为了躲避病毒AV的静态和动态检测机制,通过隐写、混淆、多态等手段隐藏恶意代码的表征行为,与此对应的,病毒查杀厂商通过研究相应的反混淆、动态沙箱、插桩等技术,希望更有效地提取恶意代码的表征行为
在关注具体技术研究的同时,我们也需要意识到,网络安全策略的研究在某种程度上比技术研究更为重要,特别是对于同样的技术采用不同的安全策略会取得不同的效果。
网络安全中攻防对抗的本质可以抽象为攻防双方的策略依存性,而这种策略依存性正式博弈论的基本特征,因而可以考虑应用博弈论来解决网络安全攻防对抗的问题。
在学术界,博弈论应用于网络安全处于发展阶段,相关的学术研究脉络有:
- 国外学者 Stakhanova等人,通过随机博弈、不完全信息博弈等模型来进行入侵意图、目标和策略的推理
- Reddy指出关于入侵检测的研究主要且多数建立在一次性博弈分析的基础上
- SHEN Shi-gen认为考虑到真实场景中攻击的重复性,将其视为一个重复的多阶段博弈的过程显然更为合理
- Agaha等建立了无线传感器网络中基于重复博弈理论的攻防模型
- 朱建明提出了基于博弈论对信息安全技术进行评价的模型,其研究侧重于信息安全机制的优化配置
- 孙薇等人建立了信息安全攻防的博弈模型,分析防守方和攻击方的复制动态及进化稳定策略,其模型考虑到现实社会中的有限理性,引入了演化博弈来研究攻防对抗的规律
2. 网络安全攻防系统动力学模型
在信息网络中,由于不同的攻击者和防御者对信息安全知识的不同理解和反应,因此产生了不同的预测和决策机制。
每个参与者获得不同的收益,随着时间的推移,每个参与者通过学习成功者的经验,不断改进自己的安全策略,形成新的攻防形势。
在参与者不断改进攻防策略的内在驱使下,随着网络安全技术不断进步,企业对系统的持续调整,都会使信息安全问题呈动态进化趋势,进而形成了不断进化的网络安全体系。
用系统动力学对相关问题的演化博弈进行仿真,可以从全局整体考察博弈均衡背后的动态特性,而演化博弈论的分析则对建模和制定相应的决策起到至关重要的作用。
0x1:系统边界的定义
清晰的界定系统的边界是模型成功与否的关键步骤。界定系统的边界必须紧紧围绕建模目的以及研究对象,真正将关注点放在核心问题上,可以考虑忽略非重要的因素。研究的对象是网络中攻防双方的演化博弈系统。
从参与者结构来看,系统内存在两类个体:
- 防守方
- 攻击方
从演化的范围来看,系统演化包括:
- 防守方之间的学习
- 防守方竞品之间的互相学习
- 攻击方之间的学习
- 0day披露后,在攻击者社群中迅速传播,攻击者会竞相模仿
- 防守方和攻击方之间的对抗
- 安全攻防知识的对抗
- 信息不对称的对抗,例如防守方不知道攻击者采取了何种IDS技术
从影响因素来看,根据演化博弈模型的分析框架,系统影响因素应包括:
- 防守方收益
- 防守方成本
- 针对某个攻击向量的攻击,防守方需要投入大量的研发成本
- 防守方为了防住一个点,往往需要建设一个面
- 攻击方收益
- 攻击方成本
网络中攻防演化博弈系统的构成要素如下表所示:
0x2:基本假设
模型的基本假设如下:
- 攻防双方演化博弈系统限定在网络上的攻防双方,在根据对方的策略集采取采取策略演。不考虑攻防双方角色的转化以及蜜罐技术等其他因素。
- 攻击方和防守方对信息资产的价值认可是相同的
- 在足够长的时间内,攻击者的技术水平和防守方的技术水平没有绝对差距,即攻防技术的研究是对等的
- 攻击方和防守方通过社会网络,能够各自充分了解同质群体采取行动的效用,即攻击方和防守方都各自能够了解自己的群体,并互相学习
- 防守方采取的行动是完全有效的
0x3:模型符号系统构建
网络安全演化博弈系统动力学模型由4个流位、2个流率、13个中间变量、和3个外部变量构成,如下图所示,
- 流位变量
- defensenoinvest:防守方放弃信息安全投资的概率
- defenseinvest:防守方选择进行信息安全投资的概率
- attacknoaction:攻击方放弃攻击的概率
- attackaction:攻击方选择采集攻击的概率
- 流率变量
- 中间变量
- 外部变量
- P1:信息安全资产价值,同时也是防守收益
- P2:攻击方收益,根据前面的攻防等效假设,P1=P2
- C1:防守方信息安全投入成本,表示防守方投入设备、人力和无形资产等全部的价值
- C2:攻击方成本,表示攻击方在人力、设备和法律惩罚方面产生的投入
0x4:博弈系统演进动力方程分析
根据上述流图,构建的博弈树如下图所示:
计算防守者的期望收益和平均收益:
当投入效益和不投入效益不相等时,效益差的防守者会模仿效益好的防守者。
设采取投入策略与采取不投入策略人的比例是时间的函数,分别表示为 p(t) 和 1-p(t)。
投入策略的动态变化速度可以用如下复制动态方程表示:
同理,计算攻击者的情况:
模型稳定性分析,令:
求出博弈系统的平衡状态,得到:
其中,X1、X2、X3、X4为鞍点,X5为中心点,系统不存在演化稳定均衡,只要有微小的变化,系统就会受到重大的影响。
这说明网络安全问题仅靠技术的投入是无法得到彻底解决的。攻防双方两大阵营永远在不断的动态博弈中,而驱动这种博弈的源动力,就来自于攻击者攻击收益的变化,这常常伴随着某些黑产变现手段的出现和繁盛,例如:
- 加密货币
- 基于非对称算法的勒索病毒
- 简易有效的0/Nday漏洞披露
- SEO污染的买房市场繁荣
- 挖矿收益
因为源源不断地收益诱惑这个源动力的存在,会让攻击者群体不断升级演进己方的技术,自然这会打破某一时期存在的短暂纳什均衡。
攻击方通过打破纳什均衡在获得超额收益后,会有一小部分防守者率先升级防御技术,投入防御产品研发,进而获得了更好的防御效果,之后,防守群体中的其他个体会进行学习与模仿,最终,攻防群体重新达到一个新的纳什均衡。
此后,下一轮的新的扰动与动态演化又开始了。
0x5:模型检验
系统动力学模型是对真实世界系统抽象和简化的结果,并不是真实世界系统的复制品,所以从再现客观世界真实情况来看,任何模型都不是完全正确的。只要模型在既定的假设下有效接近真实世界的系统,完成既定条件下的目标,那么就可以认为模型的构建具有客观性、合理性和实用性。
1. 系统边界检验
系统边界测试主要是检查系统中重要的概念和变量是否为内生变量,同时测试系统的行为对系统边界假设的变动是否敏感。
用系统动力学对演化博弈建立的目的,是研究网络攻防演化过程中系统内部影响因素的动态特征,并通过这些影响因素找出网络攻防的优化策略集。
模型的边界是在继承前期网络攻防博弈的相关研究成果基础上,根据建模目的和现实系统的实际情况而确定的。该模型包含了与所研究问题密切相关的重要因素,并摒除了对系统影响较小的因素,因此对网络攻防演化博弈的系统边界是合理、有效的。
2. 有效性检验
有效性检验是为了验证模型所获信息与行为是否反映了实际系统的特征与变化规律,通过模型的分析研究能否正确认识与理解所要解决的问题。在现实的网络环境中,攻防双方都根据对方的行动采取相应的策略。
1)攻防处于均势初始状态的演化
如果初始状态为:
- 防守方都进行有效安全投资
- 攻击方都进行攻击
那么经过一段时间演化,攻防对抗不断交替升级,防守方始终处于滞后循环的状态。
2)守强攻弱的初始状态的演化
如果初始状态时,防守方都进行了有效安全投资,攻击方没有相对收益,那么经过一段时间演化,攻击方攻击概率都将降为0。
通过仿真实验,假设攻击方初始状态为0.9,经过演化攻击方进行攻击概率迅速降至0,
初始防守概率为1,攻击概率为0.9,之后的概率演进
3)攻强守弱的初始状态的演化
如果初始状态为攻击方都采取攻击行动,防守方受到损失,经过一段时间演化,防守方都将进行安全投资。
系统仿真中假设所有攻击方都进行攻击,防守方初始状态为0.1时,经过有演化迅速达到1的均衡状态,
初始攻击概率为1,防守概率为0.1,之后的概率演进
现实世界中第三种情况占了绝大多数,网络安全中防守技术的的起步比攻击技术要晚,防守技术以及防守产品落地时,攻击方往往已经处于上峰优势地位很久了。这个时候防守方会呈现追赶的态势,在经过一段时间后,攻防达到平衡,此后就回到第一种状态,即防守方会持续处于滞后循环中。
Relevant Link:
http://xueshu.baidu.com/usercenter/paper/show?paperid=eb82da16d21916df568789de58231e7e&site=xueshu_se
3. 网络安全攻防对抗治理策略
0x1:所谓的提供攻击者成本说法是否合理?
研究信息攻防博弈的最常见治理策略就是:提高攻击者成本,或加大对攻击者的惩罚力度。
针对类似问题,有学者已经证明混合战略博弈中提高惩罚力度,其实无法改变被惩罚者违规概率的均衡点。
实践中通过防御手段提高攻击者攻击成本的应用,是因为其在短期内可以以降低被惩罚者的均衡点,而从长期来看,该策略忽视了惩罚力度的加大实际上对于双方的支付矩阵都是有影响了。
一般来说防守者投入概率越高,攻击者采取行动的成本越高,或者被发现的概率越大,导致受到惩罚的可能越大。
系统仿真中设 C2 = 2+p*2,在短期内,攻击者的攻击概率可以下降至0,但从长期来看,由于防守方策略也受影响,攻击者的概率不会稳定在较低点,而是波动起伏的,
双方演化博弈过程
随着博弈次数和时间的变化,波动振幅也会加大,博弈无法达到演化均衡点。
所以,依靠防守方加大投资,是无法达到演化均衡的,最终呈现攻防双方反复波动的状态,并且防守方还是是滞后波动的。
0x2:引入第三方惩罚机制
当加入动态惩罚策略,如:
- 第三方监管部门对攻击者的惩罚力度
- 国家法律对攻击行为的定罪和制裁
- 相关部分对攻击者的追溯和惩罚
考虑对整个博弈模型的稳定性影响,系统中假设当 C2=2+2*q 时,随着博弈次数和时间的增加,攻击者采取攻击的概率逐渐收敛,稳定在纳什均衡点。
防守方和攻击方概率变化
可以看到,引入第三方动态惩罚策略的系统博弈是存在演化均衡的。
现实中,防守方投入如果侧重于攻击者攻击的追踪,为第三方监管部门进行动态惩罚提供网络攻击行为的审查线索,是有效遏制网络攻击的重要途径。
0x3:关闭或者减少攻击者获得收益的渠道
解决问题的另一个思路是减少攻击者获取收益的渠道,正常情况下,攻防双方在持续投入的情况下,攻防概率是处于一个纳什均衡中的,这个时候,如果没有新的变现和盈利渠道,那么攻击方就不会有动力去打破当前的均衡点。
以上是关于网络文件系统的演化的主要内容,如果未能解决你的问题,请参考以下文章
视频|协同学习系统(III):神经网络结构的自动组织与演化理论