美文网首页
S008SELinux的约束操作

S008SELinux的约束操作

作者: 夏大王2019 | 来源:发表于2016-10-18 10:44 被阅读22次

约束(constraints),是SELinux很有用的特新,它的使用十分普遍。很多时候,用户觉得约束是一种添加到黑名单上,并使其受限的方法。当然前提是默认允许,约束它告诉人们的是在指定情况下这是不允许的。但是在SELinux中,这种感觉是不准确的。SELinux中,约束更像是过滤器,它遵循白名单的方法。SELinux中的约束(constraints)是在指定的情况下允许某些操作,不匹配要求的操作则被禁止。

但是话又说回来,如果没有针对操作定义约束(constraints),SELinux是允许操作执行的(当然需通过其他检查,比如类型强制规则)。
约束(constraints)和类型强制(TE)的区别

类型强制使用安全上下文中的类型字段(第三部分)。不同于类型强制,约束则在规则中使用整个上下文,比起域(domains)对于操作更加有针对性。比如以下例子:

CODE SELinux object identity change constraint

constrain dir_file_class_set{create relabelto relabelfrom}  
(  
        u1 == u2  
        or t1 ==can_change_object_identity  
);  

上面看到的是一条约束,它描述了如果两个上下文中的SELinux部分一致(u1==u2)或者如果域被分配了can_change_object_identity属性,则域可以创建、重打标签目录和文件。这里的属性可以使用seinfo工具进行查询:

user $seinfo -acan_change_object_identity –x  

如果不满足这些限制,操作将会被拒绝。哪怕通过其他的类型强制规则明确运行此操作。

SELinux中的约束

SELinux使用约束来修整它的策略。它的很多特性都是通过约束(constraints)来实现的,基于用户访问控制(User-based access control)便是其中之一。MLS和MCS很多的规则也是通过约束来实现的。修改约束需要认真斟酌。很多情况下,如果需要修改,它将会放入发布版本的基础策略中一起构建。
罗列约束

可以使用seinfo工具来显示系统中的约束。但是它立刻返回的是完全展开的输出,使用的是数学表达式上的语法。如下所示:

user $seinfo --constrain  
constrain{ file } { create relabelfrom relabelto }  
(  u1 u2 == t1 { logrotate_t policykit_auth_t sysadm_t lvm_t rpm_t xdm_t krb5kdc_tnewrole_t portage_t  
local_login_trpm_script_t sysadm_passwd_t policykit_t portage_sandbox_t groupadd_t kpropd_tpasswd_t  
updpwd_tchfn_t cupsd_t gssd_t httpd_t slapd_t sshd_t udev_t virtd_t puppetmaster_trestorecond_t  
setfiles_tkadmind_t sulogin_t useradd_t } ==  || );  

需要记住

  1. 约束是SELinux策略中完整的部分
  2. 当某些操作被拒绝时,即使有相应的TE规则也被拒绝。此时很有可能是约束的限制
  3. 约束使用白名单方法,满足约束则被允许

参考链接

  1. SELinux/Tutorials/Putting constraints on operations

相关文章

  • S008SELinux的约束操作

    约束(constraints),是SELinux很有用的特新,它的使用十分普遍。很多时候,用户觉得约束是一种添加到...

  • mysql表结构修改、约束(二)

    知识要点: 表结构操作 非空约束 唯一约束 主键约束 自增长 默认约束 表结构操作 ( alter table...

  • MySQL数据库--加强篇

    数据约束 什么是数据的约束 对用户操作表的数据进行约束(约束用户对数据表的操作) 默认值(default) 作用:...

  • MySql 中的约束

    MySql 中的约束 作用:给表添加约束值,从而约束用户操作数据库的行为 数据库常见的约束值如下: 默认值约束(d...

  • tableHeaderView使用Masonry自动计算高度

    操作步骤 1.设置tableHeaderView及其约束 2.设置tableHeaderView最底部子视图的约束...

  • mysql_基础操作

    基本操作 约束 增 删 改 插 查

  • mysql字段约束操作

    字段常用约束如下表: 主键(primary key) 能唯一标识记录的字段,可以作为主键。一个表只能有一个主键。主...

  • 基础表操作

    基础表操作 列约束(https://www.jianshu.com/p/a912bb60052e) 主键约束 pr...

  • 数据约束

    数据约束 什么数据约束 : 对用户操作表的数据进行约束 默认值 作用: 当用户对使用默认值的字段不插入值的时候,就...

  • MySQL约束以及表之间的关系(主键and外键)

    一:约束 分类: 练习 二:为何要分表 三:外键约束 四:级联操作 五:多对多关系的处理

网友评论

      本文标题:S008SELinux的约束操作

      本文链接:https://www.haomeiwen.com/subject/xvazyttx.html