频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

3.4.3 参考策略源代码分析

作者: 倪继利 著 出处:电子工业出版社博文视点  2007-12-28 12:44    砖    好    评论   进入论坛
阅读提示:《Linux安全体系分析与编程》第三章分析了SELinux的安全机制,介绍了安全策略配置语言、内核策略库的结构,简述了SELinux内核模块的实现,还分析了用户空间的客体管理器。本文主要介绍的是参考策略源代码分析。

3.4.3  参考策略源代码分析

策略文件含有成千上万条规则,并且规则随着应用程序的增加而加倍增长。如何让规则结构清晰和编写简单一直是一个难点,参考策略通过抽象化、层次化和模块化,很大程度简化了策略的编写。

参考策略源代码主要由模块源代码组成,每个模块针对一个RPM包或一个应用程序或一项服务。模块由私有规则文件(.te)、文件标识描述文件(.fc)和模块的接口文件(.if)组成。每个模块对应用程序的权限作了详细的描述,还提供了接口给其他模块使用,主要用于域的转移。

例如:Linux操作系统启动时,init进程经过域转移后,域变成init_t类型。当init进程执行应用程序/sbin/consoletype时,/sbin/consoletype的标签为system_u:object_r:consoletype_exec_t,s0,由init进程和文件consoletype的安全上下文对可以查找到策略,consoletype.te文件中含有私有规则init_domain(consoletype_t,consoletype_exec_t),这样,consoletype执行后的进程的域转移为consoletype_t。

应用程序的策略模块常给其他模块提供接口来实现域的转移,但也可以用私有策略进行域的转移。这样,只允许指定的域执行本应用程序,给新产生的进程指定的域。

策略模块将SELinux规则进行抽象封装,以便于理解和书写,在编译时,再给m4宏进行扩展成SELinux规则存放在policy.conf中。policy.conf文件中还提供了策略模块的注释,以便在规则调试时从policy.conf中找到规则对应的策略模块语句。

策略模块很多,但机制类似,下面以wine模块为例说明策略模块的抽象语句与SELinux规则的对应关系。

1.wine.te

wine.te文件描述了wine应用程序的域的私有规则,从域的私有规则可以看出,在targeted策略中,wine进程具有unconfined域的权限,即可对几乎所有的文件进行操作等,另外,它还有对所有可执行文件进行执行的权限 。wine.te文件列出如下:

policy_module(wine,1.1.3)
########################################
#
# Declarations
#
type wine_t;
domain_type(wine_t)                    #定义进程wine的域为wine_t

type wine_exec_t;                      #定义可执行文件的类型
domain_entry_file(wine_t,wine_exec_t)   #指定域wint_t由wine_exec_t类型文件转移生成

########################################
#
# Local policy
#
ifdef(`targeted_policy',`
allow wine_t self:process { execstack execmem execheap };
unconfined_domain_noaudit(wine_t) #使域wine_t成为unconfined域,即可做unconfined的操作
files_execmod_all_files(wine_t)    #可执行所有可执行文件

 optional_policy(`
 hal_dbus_chat(wine_t)
 ')
')

2.wine.if

wine.if文件提供了给其他的域使用的接口,用于域的转移,即当其他进程调用wine应用程序时,新生成的wine进程将转移到接口指定的域。wine.if文件列出如下:

## Wine Is Not an Emulator.  Run Windows programs in Linux.

########################################
## 
##Execute the wine program in the wine domain.
## 
## 
##
##Domain allowed access.
##
## 
#
interface(`wine_domtrans',`
gen_require(`
type wine_t, wine_exec_t;
')

corecmd_search_bin($1)                     #$1域有搜索bin目录的权限
domain_auto_trans($1, wine_exec_t, wine_t) #$1执行wine_exec_t文件,新进程域为wine_t

allow $1 wine_t:fd use;
allow wine_t $1:fd use;
allow wine_t $1:fifo_file rw_file_perms;
allow wine_t $1:process sigchld;
')

3.wine.fc

wine.fc文件提供了wine应用程序的文件标识,策略模块编译后,这些标识会被写入到文件的扩展属性中去。SELinux将根据进程域的标签和文件的标签去查找规则,确定执行权限。wine.fc文件列出如下:

/usr/bin/wine--gen_context(system_u:object_r:wine_exec_t,s0)
/opt/picasa/wine/bin/wine--gen_context(system_u:object_r:wine_exec_t,s0)

4.policy.conf中与wine相关的规则

策略源代码经编译后生成policy.conf文件。在policy.conf文件中,wine应用程序的模块策略经m4宏扩展后的规则列出如下,其中,注释####表示在策略模块中的策略语句,在begin和end之前是策略语句经m4宏扩展后的规则。

type wine_exec_t;
type wine_t;
##### begin domain_type(wine_t) depth: 1         #对应策略模块wine.te中语句

##### begin domain_base_type(wine_t) depth: 2
     typeattribute wine_t domain;                #定义域属性
##### end domain_base_type(wine_t) depth: 1

##### begin init_sigchld(wine_t) depth: 2
allow wine_t init_t:process sigchld;
##### end init_sigchld(wine_t) depth: 1

##### begin init_signull(wine_t) depth: 2
allow wine_t init_t:process signull;
##### end init_signull(wine_t) depth: 1

##### begin rpm_use_fds(wine_t) depth: 2
allow wine_t rpm_t:fd use;
##### end rpm_use_fds(wine_t) depth: 1

##### begin rpm_read_pipes(wine_t) depth: 2
allow wine_t rpm_t:fifo_file { read getattr lock ioctl };
##### end rpm_read_pipes(wine_t) depth: 1

##### begin selinux_dontaudit_read_fs(wine_t) depth: 2
dontaudit wine_t security_t:dir { getattr search };
dontaudit wine_t security_t:file { getattr read };
##### end selinux_dontaudit_read_fs(wine_t) depth: 1

##### begin seutil_dontaudit_read_config(wine_t) depth: 2
dontaudit wine_t selinux_config_t:dir search;
dontaudit wine_t selinux_config_t:file { getattr read };
##### end seutil_dontaudit_read_config(wine_t) depth: 1

##### end domain_type(wine_t) depth: 0


##### begin domain_entry_file(wine_t,wine_exec_t) depth: 1
allow wine_t wine_exec_t:file entrypoint;
allow wine_t wine_exec_t:file { read getattr lock execute ioctl };
typeattribute wine_exec_t entry_type;
##### end domain_entry_file(wine_t,wine_exec_t) depth: 0


##### begin domain_entry_file(wine_t,wine_exec_t) depth: 1
allow wine_t wine_exec_t:file entrypoint;
allow wine_t wine_exec_t:file { read getattr lock execute ioctl };
typeattribute wine_exec_t entry_type;

##### begin corecmd_executable_file(wine_exec_t) depth: 2
typeattribute wine_exec_t exec_type;

##### begin files_type(wine_exec_t) depth: 3
typeattribute wine_exec_t file_type;
##### end files_type(wine_exec_t) depth: 2

##### end corecmd_executable_file(wine_exec_t) depth: 1

##### end domain_entry_file(wine_t,wine_exec_t) depth: 0

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
专题
安全防范与策略
Linux——从菜鸟到高手
补丁自动分发管理策略专题
Linux/Solaris服务器的安全配置
Linux 集群技术专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
世纪枭雄比尔盖茨的王者传奇
世纪枭雄比尔盖茨的王者传奇
虚拟化技术还有点“虚”
虚拟化技术还有点“虚”
ASP.NET开发教程
ASP.NET开发教程
· ASP.NET开发教程
· 专题:ASP.NET 2.0基础..
· LAMP技术精解
· 服务器节能与绿色IT
· ARP攻击防范与解决方案
· Linux 集群技术专题
· Windows集群服务应用
· CISSP认证成长之路
· SQL Server 2008/2005..
· SQL Server入门到精通
· 网络工程师职业规划与..
· 浏览器的战国时代
· 运营商封堵ADSL共享 中..
· 微软出价446亿美元收购..
· 技术人求职简历完备手册
· 开源虚拟化技术Xen
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· Windows集群服务应用
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
· 专题:AIX操作系统管理..
· 访问控制列表(ACL)介绍
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· ASP.NET开发教程
· PHP开发应用手册