3演示验证方案及结果分析
3.1演示验证方案
3.1.1验证目标

该方案主要用于验证采用Flask体系结构实现的SELinux对系统的防护过程及相应的防护原理。
3.1.2验证环境

操作系统:启用了SELinux的centos6.3

内核版本:2.6.32-279.e16.i686

策略类型:targeted

策略版本:policy.24

必要的软件包:setools、policycoreutil
3.1.3技术原理

由于targeted策略只对网络服务进行保护,因此该验证场景就以www服务器为例来说明SELinux对网络服务的保护过程。对于www服务器,其操作的目录为/var/www/html,当在该目录中创建一个新的html文件时,此时服务器上的文件系统会将创建该文件的进程的SID、该文件所在目录的SID以及文件所属的类别传递给安全服务器,安全服务器在接收到这些数据后对其进行处理,从而为新建文件生成一个安全上下文并将其映射为相应的SID,然后将该SID返回给文件系统,文件系统获得该SID后将其与新建的html文件进行绑定。之后,如果某个用户需要访问www服务器上的某个数据,其首先向该服务器发送一个请求,当服务器发现用户的请求时,其会通过httpd进程读取用户请求的数据,此时服务器上的文件系统会根据httpd进程的SID、用户请求的文件的SID以及文件的类型查询访问向量缓存,如果找到,则根据相应的安全决策进行处理;反之文件系统会将httpd进程的SID、用户请求的文件的SID以及文件的类型传递给安全服务器,安全服务器根据这些数据及相应的安全策略进行计算,从而得到相应的访问向量,然后将其返回给文件系统,同时将该访问向量存放到AVC中,最后文件系统根据得到访问向量对相应的操作进行处理。
3.1.4操作步骤
对于该验证方案,详细的操作步骤如下所示:
1. 启动www服务,并查看httpd进程的安全上下文。
2. 在qkxue.net/var/www/html目录中创建一个名为index.html的html文件。
3. 通过浏览器访问该文件,在地址栏中输入http://127.0.0.1,结果如图3-1所示。
4. 将1216.www.qixoo.qixoo.com/index.html的类型属性修改为user_home_t。
5. 通过浏览器访问该文件,在地址栏中输入http://127.0.0.1,结果如图3-2所示。
6. 使用restorecon命令将index.html文件的安全上下文恢复为默认的安全上下文。
7. 通过浏览器访问该文件,在地址栏中输入http://127.0.0.1,结果如图3-3所示。

3.2演示验证结果

按上述步骤执行完成之后,其执行结果如下图所示:

 

图3-1 index.html的直接访问结果

图3-2 index.html类型修改后的访问结果

图3-3 index.html类型恢复默认值之后的访问结果

下面结合执行步骤对上述执行结果进行分析:

1. 当启动httpd服务之后,通过ps命令得知httpd进程的域为httpd_t。

 

 2. 当通过echo命令将相应的字符串重定向到index.html文件时,如果index.html文件不存在,则创建该文件。在创建文件时,安全服务器会为该文件生成一个安全上下文,并将其映射为相应的SID,然后将该SID传递给文件系统,文件系统在接收到该SID之后会将其与新建文件绑定起来。对于该过程的详细介绍以及该过程中涉及的函数、函数的调用关系详见2.3.2.2小节,这里不再赘述。

 

3. 当通过浏览器访问index.html文件时,此时会触发httpd进程来读取该文件。对于index.html文件,由第二步可知其类型为httpd_sys_content_t,通过策略分析工具apol查找主体为httpd_t,客体为httpd_sys_content_t的规则,其结果如下所示:

 

由上述结果可知,httpd_t类型的主体和httpd_ss_content_t类型的客体在策略库中只定义了11条条件规则,并且在当前状态下,使能了httpd_t类型的主体对httpd_sys_content_t类型的文件的访问规则,由该规则可知,允许httpd_t类型的主体对httpd_sys_content_t类型的文件执行读操作,因此当用户通过浏览器访问index.html文件会出现图3-1的结果。

4. 通过chcon命令将index.html文件的类型修改为user_home_t

5. 当通过浏览器读取index.html文件时,其结果如图3-2所示,通过策略分析工具apol查找主体为httpd_t,客体为user_home_t的规则,其结果如下所示:

 

由上述结果可知,httpd_t类型的主体和httpd_sys_content_t类型的客体在策略库中只定义了6条条件规则,并且在当前状态下,禁止了httpd_t类型的主体对httpd_sys_content_t类型的文件的访问规则,即没有规则授予httpd类型的主体以读权限来访问user_home_t类型的文件,因此当用户通过浏览器访问index.html文件会出现图3-2的结果。

6. 通过restorecon命令将index.html的安全上下文恢复为默认值。

7. 通过浏览器访问index.html文件,结果如图3-3所示,其原因和第三步一样,即SELinux中的策略通过allow命令授予了相应的读权限,所以访问成功。

对于上述过程中使用的命令,如echo、sesearch、chcon等,详见man手册,这里不再赘述;至于SELinux的策略配置规则以及策略分析工具apol的使用方法参见“SELinux实例:使用安全增强的Linux”一书。
4.待解决问题

本文以SELinux为例详细的分析了Flask体系结构,并就SELinux对系统的防护进行了验证,然而由于时间问题,该验证场景只是基于Linux-2.6.32版内核进行了测试,并未在Linux-3.5.4版内核中进行测试。

Linux多安全策略和动态安全策略框架演示验证方案及结果分析的更多相关文章

  1. Android 使用动态载入框架DL进行插件化开发

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客) 概述: 随着应用的不断迭代.应用的体积不断增大,项目越来越臃肿,冗余添 ...

  2. Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署

    本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...

  3. Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署

    本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...

  4. JDK动态代理和CGLib动态代理简单演示

    JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例. 一.首先我们进行JDK动态代理的演示. 现在我们有一个简单的业务接口Saying,如下: package te ...

  5. Android 热补丁动态修复框架小结

    一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa ...

  6. DL动态载入框架技术文档

    DL动态载入框架技术文档 DL技术交流群:215680213 1. Android apk动态载入机制的研究 2. Android apk动态载入机制的研究(二):资源载入和activity生命周期管 ...

  7. android动画源码合集、动态主题框架、社交app源码等

    Android精选源码 仿MIUI果冻视图-BouncingJellyView   一个快速易用的动态主题框架   android动画效果集合源码   android使用Kotlin开发的Dribbb ...

  8. 【驱动】linux系统下nand flash驱动程序框架

    linux操作系统下nand flash驱动框架 当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层 ...

  9. Kail Linux渗透测试教程之Recon-NG框架

    Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...

随机推荐

  1. 萌新笔记——C++里创建 Trie字典树(中文词典)(一)(插入、遍历)

    萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...

  2. php 上传文件

    $_FILES["file"]["name"] - 被上传文件的名称 $_FILES["file"]["type"] - ...

  3. 令人崩溃的@requestBody乱码一例

    这个问题真是让我心力憔悴了...在客户现场对接就是乱码,StringHttpConverter怎么配置都不行... 场景其实很简单:客户那头post一个http请求,包体是json字符串,我这头spr ...

  4. linux下的守护进程daemon

    什么是守护进程?其实感觉守护进程并没有什么明确的定义,只是守护进程有一些特征,这是它需要遵循的. 守护进程的第一个特征是长时间在后台运行的程序,并且主要是为了提供某种服务,而为了能够让服务尽可能随时都 ...

  5. 【小白的CFD之旅】06 流体力学基础

    从黄师姐那里了解到要学习CFD的话,需要先补充流体力学.数学以及计算机方面的常识,小白就一阵头大.想起当初自己已经把牛皮吹出去了,现在都不知道怎么收场,一个月入不了门多丢人.不过头大归头大,小白还是老 ...

  6. 兼容可控硅调光的一款LED驱动电路记录

    1.该款电路为兼容可控硅调光的LED驱动电路,采用OB3332为开关控制IC,拓扑方案为Buck: 2.FB1:磁珠的单位是欧姆,而不是亨利,这一点要特别注意.因为磁珠的单位是按照它在某一频率 产生的 ...

  7. 《In Search of an Understandable Consensus Algorithm》翻译

    Abstract Raft是一种用于管理replicated log的consensus algorithm.它能和Paxos产生同样的结果,有着和Paxos同样的性能,但是结构却不同于Paxos:它 ...

  8. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  9. 面试题:return和finally执行

    创建一个包含return和finally的方法:(如下所示) public class Demo { public int get() { int x=1; try { x++; return x; ...

  10. Winform窗体的基本控件

    一.窗体的事件 每一个窗体都有一个事件,这个窗体加载完成之后执行哪一段代码 位置:(1)右键属性→事件→load 双击进入.(2)双击窗体任意一个位置进入 public partial class F ...