Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253751
  • 博文数量: 106
  • 博客积分: 535
  • 博客等级: 下士
  • 技术积分: 1020
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-27 14:13
文章分类

全部博文(106)

文章存档

2021年(10)

2020年(4)

2019年(2)

2018年(5)

2017年(6)

2016年(10)

2015年(15)

2014年(16)

2013年(25)

2012年(9)

2010年(4)

我的朋友

分类: 其他平台

2015-06-29 15:46:10

系统环境:FC20

1.安全访问机制分析。

1.1 DAC

   Discretionary Access Control(DAC)。
    DAC是由对象的所有者来决定文件的访问权限。

1.2 MAC

   Mandatory Access Control(MAC)。
  MAC由系统来决定文件的访问权限。
   MAC是DAC系统的一个补充。在MAC的环境下面,每一个程序都在一个仅仅开放了相关权限的sandbox里面执行,所以即使出现问题,也仅仅是这个sandbox里面出现问题,不会影响到sandbox外面的资源。

1.3 MAC优势

    MAC授权给程序,不是用户,DAC往往是授权给用户。
    MAC的权限不会被对象的所有者修改。
    MAC还可以保护DAC不能保护的资源,比如socket,或者进程。

MAC模块示例:

点击(此处)折叠或打开

  1. policy_module(myapp,1.0.0)

  2. ########################################
  3. #
  4. # Declarations
  5. #
  6. require {
  7.     type unconfined_t;
  8.     type usr_t;
  9.     attribute entry_type;
  10.     type fs_t;
  11.     type setroubleshootd_t;
  12.     role unconfined_r;
  13.     attribute ttynode;
  14.     attribute ptynode;
  15.     attribute domain;
  16. }
  17. type myapp_t;
  18. type myapp_exec_t;
  19. type myapp_file_t;

  20. domain_type(myapp_t)
  21. domain_entry_file(myapp_t, myapp_exec_t)

  22. allow unconfined_t myapp_file_t : file manage_file_perms;
  23. allow myapp_t myapp_file_t : file manage_file_perms
展开为单行的规格描述如下:

点击(此处)折叠或打开

  1. policy_module(myapp,1.0.0)

  2. ########################################
  3. #
  4. # Declarations
  5. #
  6. require {
  7.     type unconfined_t;
  8.     type usr_t;
  9.     attribute entry_type;
  10.     type fs_t;
  11.     type setroubleshootd_t;
  12.     role unconfined_r;
  13.     attribute ttynode;
  14.     attribute ptynode;
  15.     attribute domain;
  16. }
  17. type myapp_t;                                                                #myapp运行时的domain
  18. type myapp_exec_t;                                                            #可执行文件,用于切换domain
  19. type myapp_file_t;                                                            #myapp私有的文件

  20. typeattribute myapp_t domain;                                                #基本腰声明的domain

  21. allow unconfined_t myapp_file_t : file manage_file_perms;                    #read write to file myapp_file_t,当前的shell可以查看,此类型的文件
  22. allow unconfined_t myapp_file_t : file { relabelto };                        #user can change file to myapp_file_t,当前的shell可以切换文件的type
  23. allow myapp_file_t fs_t : filesystem {associate};                            #切换文件type,必须要包含此类    

  24. allow unconfined_t myapp_exec_t : file {getattr execute manage_file_perms};    #read wirte to file myapp_exec_t, execture file, 对可执行文件有执行权限
  25. allow setroubleshootd_t myapp_exec_t : file {getattr};                        #一个selinux需要的
  26. allow unconfined_t myapp_exec_t : file { relabelto };                        #可以将一个可执行文件的type设置为myapp_exec_t user can change file to myapp_exec_t
  27. allow myapp_exec_t fs_t : filesystem {associate};                            

  28. #domain transfer
  29. allow myapp_t myapp_exec_t : file entrypoint;                                #文件的entry point
  30. allow unconfined_t myapp_t : process transition;                            #两个domain可允许切换
  31. role unconfined_r types myapp_t;                                            #role are authorized to domain myapp_t

  32. type_transition unconfined_t myapp_exec_t : process myapp_t;                #执行时,可以进行自动切换

  33. allow myapp_t unconfined_t : process sigchld;            

  34. allow myapp_t {ttynode ptynode} : chr_file rw_file_perms;                    #for access tty pty file for log
  35. allow myapp_t myapp_exec_t : file {getattr execute manage_file_perms};        #read wirte to file myapp_exec_t, execture file
  36. allow myapp_t myapp_file_t : file manage_file_perms;                        #for acess myapp private file
  编译方式:
 su
 cd /usr/share/selinux/devel
 make load 或者 make reload




阅读(2326) | 评论(0) | 转发(0) |
0

上一篇:Android 红框问题

下一篇:块设备驱动分析

给主人留下些什么吧!~~