微信号:LinuxKernelTravel

介绍:Linux内核之旅

Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制中安全服务器相关操作

2016-11-23 10:41 苗磊

2.3.1.2 安全服务器相关操作

安全服务器主要由SID/安全上下文的映射和策略逻辑两部分组成,主要用于维护SID与安全上下文的映射关系、维护系统的访问控制策略、为新建客体提供SID、接收客体管理器的安全查询请求等。对于这些操作,Linux中实现如表2-15所示,这些函数均定义在security/selinux/ss/services.c中。

表2-15 SELinux的安全服务器中部分操作说明

函数名称

函数功能

selinux_set_mapping()

计算参数map中客体类别的数量,并将map中字符形式的类别-权限映射转换为数值形式的类别权限映射

map_class()

将客体类别在策略中的值转换为内核中相应的类别值

ummap_class()

将映射的客体类别值转换为策略中相应的类别值

map_decision()

根据客体类别获取相应的访问向量策略

security_mls_enabled()

判断是否启用了MLS策略

constraint_expr_eval()

计算约束表达式的布尔值

security_dump_masked_av()

审计指定的权限

context_struct_to_string()

将一个安全上下文字符串写入到动态分配的字符串中,并让参数*scontext指向该字符串,*scontext_len存放该字符串的长度

security_validate_transition()

判断指定的源、目的、进程的安全上下文是否满足客体类别的约束表达式,若不满足,则释放相应的安全上下文对应的空间

security_bounded_transition()

检查指定的转换是否受到限制,如果newsid受到oldsid的约束,返回0,否则返回错误码

avd_init()

初始化访问向量决策

security_compute_av()

根据客体类别对(ssid,tsid)计算访问向量决策

security_get_initial_sid_context()

将初始化SID转化为相应的上下文字符串

security_sid_to_context_core()

SID关联的安全上下文字符串写入动态分配的字符串中,并让scontext指向该字符串,scontext_len存放该字符串的长度

string_to_context_struct()

解析安全上下文字符串,将其转化为相应的context结构

security_context_to_sid_core()

获取字符串形式的安全上下文对应的SID,成功时返回0

security_context_to_sid()

获取给定的安全上下文对应的SID,该函数只是对security_context_to_sid_core()的简单封装

security_context_to_sid_default()

该函数只是简单的封装了security_context_to_sid_core()函数

compute_sid_handle_invalid_context()

对于一个无效的安全上下文生成一条审计记录

filename_compute_type()

根据文件名转换规则设置指定安全上下文newcontext中的类型

security_compute_sid()

根据源SID、目标SID以及目标客体类别生成一个安全上下文,并获取该上下文对应的SID

security_transition_sid()

为新的客体创建一个SID,成功时返回0,该函数只是简单的封装了security_compute_sid()函数

security_member_sid()

为对实例化对象中选择的成员计算一个SID,该函数只是简单的封装了security_compute_sid()函数

security_change_sid()

重新标记客体时计算一个可用的SID,该函数只是简单的封装了security_compute_sid()函数

clone_sid()

SID和其对应的安全上下文插入到SID表中

convert_context()

将安全上下文c中的值由p->oldp指定的值转化为p->newp指定的值,并基于新策略确定安全上下文的有效性。

security_policydb_len()

获取策略库的长度

security_load_policy()

加载一套新的安全策略,并使其生效,然后刷新访问向量缓存,并在必要的情况下转换SID

security_genfs_sid()

为不支持扩展属性、基于转换的、基于进程的文件系统中的文件获取一个SID

security_fs_use()

确定如何处理一个文件系统的标记

security_get_bools()

获取策略支持的布尔值的数量、名字和值

security_set_bools()

设置策略库支持的布尔值,并更新条件策略

security_get_bool_value()

用于获取指定布尔值的状态

security_preserve_bools()

根据策略库中布尔值的当前值计算条件策略语句

security_sid_mls_copy()

根据sid对应的安全上下文中的用户、角色、类型和mls_sid对应的安全上下文中的mls域创建一个新的安全上下文,在确保安全上下文有效的情况下获取对应的SID,并将其存放到new_sid

security_get_classes()

获取策略支持的客体类别的数量及各个类别的值

security_get_permission()

获取指定的客体类别支持的权限的数量及相应的权限

security_policycap_supported()

检查策略库是否支持指定的能力

security_read_policy()

将策略库结构体中的数据写入到二进制策略文件中

selinux_audit_rule_free()

释放审计规则占有的存储空间

selinux_audit_rule_init()

根据参数field对审计规则进行初始化

selinux_audit_rule_known()

检查规则是否包含selinux中的相关域,若包含,返回1

selinux_audit_rule_audit()

根据field/op对判断sid对应的安全上下文是否与指定的审计安全上下文匹配,若匹配返回真,反之返回假

aurule_init()

该函数为AVC_CALLBACK_RESET事件注册aurule_avc_callback()回调函数,该函数在AVC_CALLBACK_RESET事件发生时将会调用aurule_callback()函数来重新初始化所有可用规则的lsm_rule

如表2-15所示,这里只给出了安全服务器的部分操作的实现,并没有给出网络相关的操作。对于这些函数,下一节将会对其中比较重要的部分函数进行介绍。


 
Linux内核之旅 更多文章 Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制(7) Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制(6) Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制(5) Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制(4) Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制(3)
猜您喜欢 用Python实现简易可拓展的规则引擎 高流量站点NGINX与PHP-fpm配置优化 出轨的概率有多大? 微信小程序(微信应用号)网络开发实践 Swift 为CGSize扩展数学运算符