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. ajax缓存问题

    默认情况下,请求总会被发出去,但浏览器有可能从它的缓存中调取数据.换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端.要禁止使用缓存的结果,可以设置 cache ...

  2. Redis学习笔记1-Redis的介绍和认识

    说明:文章内容来自百度百科和redis官方对redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API ...

  3. 【转】App架构设计经验谈:接口的设计

    App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用REST ...

  4. 漫谈C++11 Thread库之原子操作

    我在之前一篇博文<漫谈C++11 Thread库之使写多线程程序>中,着重介绍了<thread>头文件中的std::thread类以及其上的一些基本操作,至此我们动手写多线程程 ...

  5. Release Management 安装 之 集成TFS

    集成TFS时需要在TFS服务器执行 tfssecurity /g+ "Team Foundation Service Accounts" n:ALM\rmtfsint ALLOW ...

  6. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  7. [Django]网页中利用ajax实现批量导入数据功能

    url.py代码: url(r'^workimport/$', 'keywork.views.import_keywork', name='import_keywork') view.py代码: fr ...

  8. EF6 如何判断DataContext有修改,以及如何放弃修改

      如何判断DataContext有修改: EF6的 using (var db = new Model1()) { if (db.ChangeTracker.HasChanges()) { Cons ...

  9. HashMap实现原理及源码分析

    哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出 ...

  10. 【原】移动web页面兼容处理的思考

    本月收到一份关爱里程碑的邮件,入职满3周年了,从一个懵懂的新人到从容淡定的小油条,在外辛苦打工不容易,能收到一封简单的关怀邮件也是有感欣慰,这里祝愿公司越发展越好. 进入主题,移动网页设计中,很多同学 ...