SELinux零知识学习二十、SELinux策略语言之类型强制(5)
最佳答案 问答题库718位专家为你答疑解惑
接前一篇文章:SELinux零知识学习十九、SELinux策略语言之类型强制(4)
二、SELinux策略语言之类型强制
3. 访问向量规则
AV规则就是按照对客体类别的访问许可指定具体含义的规则,SELinux策略语言目前支持四类AV规则:
- allow:表示允许主体对客体执行允许的操作。
- neverallow:表示不允许主体对客体执行指定的操作。
- auditallow:表示允许操作并记录访问决策信息。
- dontaudit:表示不记录违反规则的决策信息,且违反规则不影响运行。
(1)通用AV规则语法
虽然这些规则的用途不一样,但它们的基本语法是一样的,每个规则都包含了下面5个元素:
- 规则名称
allow,dontaudit,auditallow和neverallow。
- 源类型
授予访问的类型,通常是进程尝试访问的域类型。
- 目标类型
客体的类型,其被授权可以访问源类型。
- 客体类别
客体的类别。
- 许可
表示主体对客体访问时允许的操作类型(也叫做访问向量)。
一个简单的AV规则有一个源类型、目标类型、客体类别和许可。在前文的allow规则中可以看到许多AV规则,如:
allow user_t bin_t : file execute;
这个allow规则的源类型为user_t、目标类型为bin_t、客体类别为file、许可为execute,这个规则可以解读为:允许user_t执行类型为bin_t的文件。
这4个AV规则语法都一样,只是关键字(规则名称)不同。例如,可以将上面这个例子替换成auditallow规则,只需要替换掉规则名称即可:
auditallow user_t bin_t : file execute
1)AV规则的密钥
在Linux内核中,所有的AV规则都是通过一个组源类型、目标类型和许可进行唯一性标识的,这个三重组成为一个密钥,当作哈希表使用,缓存在策略数据结构中。当一个进程产生了一个访问请求时,SELinux LSM模块被要求允许基于这个密钥进行访问。
那么,如果不止一个规则使用同一密钥(即相同的源类型、目标类型和许可)时,会发生什么状况呢?如下面的规则:
allow user_t bin_t : file execute;
allow user_t bin_t : file read;
类型为user_t的进程对类型为bin_t的文件是可读还是可执行?答案是两者皆可。所有有相同密钥的规则通过checkpolicy进行组合,编译后的策略将只有一条规则,同时具有read和execute许可,它们都会被安全服务器接受。所有的AV都按照这种方式进行累加。
警告:策略中的每个子级AV规则与其上级AV规则具有相同的密钥,并将许可adds进最高级规则编译策略中,不存在removing授予其它角色的许可的概念。因此要当心,尽管你在策略中的某部分编写了良好的规则,但可能在策略的其它地方会授予额外的许可。
99%的人还看了
相似问题
- nginx使用详解:转发规则、负载均衡、server_name
- SOME/IP 协议介绍(六)接口设计的兼容性规则
- 【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】
- AI监管规则:各国为科技监管开辟了不同的道路
- Sentinel 熔断规则 (DegradeRule)
- ClickHouse 语法优化规则
- QT基础入门【QSS】样式规则、选择器类型、子控件介绍
- 华为云,阿里云,腾讯云 安全组配置规则
- 3、Sentinel 动态限流规则
- CentOS/RHEL7环境下更改网卡名称为CentOS6的传统命名规则
猜你感兴趣
版权申明
本文"SELinux零知识学习二十、SELinux策略语言之类型强制(5)":http://eshow365.cn/6-40432-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!