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. HADOOP安装指南-Ubuntu15.10和hadoop2.7.2

    Ubuntu15.10中安装hadoop2.7.2安装手册 太初 目录 1.      Hadoop单点模式... 2 1.1        安装步骤... 2 0.环境和版本... 2 1.在ubu ...

  2. Linux系统VNC配置实践总结

    VNC概述 VNC (Virtual Network Computing)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在 ...

  3. Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】

    翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...

  4. J2EE基础之Servlet

    J2EE基础之Servlet 1.  什么是Servlet? Servlet即Java服务小程序,是使用应用程序设计接口以及相关类和方法的Java程序.它可以作为一种插件,像Applet程序一样嵌入到 ...

  5. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

    引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

  6. HDU 5183 Negative and Positive (NP) --Hashmap

    题意:问有没有数对(i,j)(0<=i<=j<n),使得a[i]-a[i+1]+...+(-1)^(j-i)a[j]为K. 解法:两种方法,枚举起点或者枚举终点. 先保存前缀和:a1 ...

  7. HDU 1729 Stone Game【SG函数】

    以下转载至:长春理工大学赵小舟博弈论ppt 题目大意: 1.有n个盒子,每个盒子都有它的容量s 2.在游戏开始时,每个盒子里都有一些石子 3.双方轮流进行游戏,向一个盒子投入n个石子,其中n不能大于当 ...

  8. JS控制div跳转到指定的位置的解决方案总结

    总结一下自己在写这个需求遇到的问题,相信大家应该是经常遇到的.即要求滚轮滚动到指定的位置.先看下基本的解决方案. 1.给链接a加个#的方式来实现跳转.(锚点方法)这里直接贴下代码: html页面: & ...

  9. Java 线程同步

    线程同步 1.线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏. 2.线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的 ...

  10. 5.bootstrap练习笔记-巨幕和流体布局

    bootstrap练习笔记-巨幕和流体布局 1.在bootstrap中 .jumbotron可以设置巨幕效果 2.div.jumnotron自动设置一个黑色的巨幕效果 3.div.container ...