首页 理论教育 Linux内核安全模块深入剖析-网络标签相关文件

Linux内核安全模块深入剖析-网络标签相关文件

时间:2023-11-22 理论教育 版权反馈
【摘要】:SMACK依靠IP协议中一个未能成为标准的选项CIPSO [8] 来将安全标签附着于IP包包头之中。当SMACK安全标签字符串长度低于24时,直接将SMACK安全标签放入cipso级别字符串中。首先,在这两个节点间交互的IP网络包不要带cipso,其次,可以认为全部来自或发往不支持cipso网络节点的ip网络包都带有同一个安全标签。文件netlabel就是用来规定来自某个或某些网络节点的网络包的网络标签。

Linux内核安全模块深入剖析-网络标签相关文件

(1)ambient

这个文件反映的是无标签网络包的安全标签。SMACK依靠IP协议中一个未能成为标准的选项CIPSO [8] 来将安全标签附着于IP包包头之中。这就带来一个小问题:当收到一个没有CIPSO数据的IP包时,此IP包的安全标签是什么呢?总得有什么方式来规定缺省值吧。这个缺省值的规定接口就是这个ambient文件。ambient文件的内容是一个字符串,规定了网络包的缺省标签。

(2)cipso

CIPSO的标准 [13] 规定网络数据包携带敏感级别和敏感类别,敏感级别是一个整数,敏感类别是一个整数的集合。看起来CIPSO中敏感级别和敏感类别的设计来自Bell-Lapadula模型。而SMACK安全标签是一个字符串。这就需要用一种方式将二者联系起来。cipso文件就是做这件事的。先说对cipso文件的写操作,一次写入一行,每行的格式是:

第一个参数是字符串,表示SMACK安全标签,第二个参数是整数,为CIPSO的敏感级别值,第三个参数是整数,表示后续还有几个整数,这些整数是CIPSO的敏感类别值。举个例子

(3)direct

上面的cipso文件只是沟通cipso标签和SMACK标签的一座桥,如果它是唯一的映射方式那么为每一个cipso标签和SMACK标签都做出规定是一件很麻烦的事。在SMACK系统中还有更加直接的方式。

前面提到CIPSO标签包含级别和类别,级别是一个整数,类别是整数的集合。在实际的网络包中,每个类别是一个比特,整个类别的集合就是一个字符串。SMACK就直接用这个字符串来携带SMACK安全标签,因为SMACK标签也是一个字符串。不过,这就完美了吗?且慢还有一个问题:承载类别集合的这个字符串有长度限制。看看SMACK代码中这段注释:

cipso限制级别字符串的长度上限是30,SMACK进一步限制可用其中的开始24个字节。当SMACK安全标签字符串长度低于24时,直接将SMACK安全标签放入cipso级别字符串中。当SMACK安全标签字符串长度等于或大于24时,将SMACK安全标签转化为一个整数smk_secid,然后将smk_secid放入cipso类别字符串。为区分这两种情况,前一种情况下,cipso级别值为smack_cipso_direct;后一种情况下,cipso级别值为smack_cipso_mapped。

direct文件就是为了存取变量smack_cipso_direct而出现的。

(4)mapped(www.xing528.com)

此文件用于存取变量smack_cipso_mapped。

(5)doi

cipso标准考虑到级别和类别的地域性问题,即级别和类别在一组网络节点中的含义与在另一组网络节点中的含义是不同的。为了区分地域,cipso标准规定ip的cipso选项中还应携带另一个信息doi,全称是domain of interpretation。

smackfs的doi文件用来读写doi的值。

(6)netlabel

cipso选项并没有成为正式标准,大多数系统没有实现它。实现了cipso的网络节点如何与不支持cipso的网络节点交互呢?首先,在这两个节点间交互的IP网络包不要带cipso,其次,可以认为全部来自或发往不支持cipso网络节点的ip网络包都带有同一个安全标签。

文件netlabel就是用来规定来自某个或某些网络节点的网络包的网络标签。文件每一行的格式如下:

或者

前面的格式用于单个网络节点,后面的格式用于子网。举个例子:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈