Linux多安全策略和动态安全策略框架演示验证方案及结果分析
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多安全策略和动态安全策略框架演示验证方案及结果分析的更多相关文章
- Android 使用动态载入框架DL进行插件化开发
如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 (来自时之沙的csdn博客) 概述: 随着应用的不断迭代.应用的体积不断增大,项目越来越臃肿,冗余添 ...
- Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署
本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...
- Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署
本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...
- JDK动态代理和CGLib动态代理简单演示
JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例. 一.首先我们进行JDK动态代理的演示. 现在我们有一个简单的业务接口Saying,如下: package te ...
- Android 热补丁动态修复框架小结
一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa ...
- DL动态载入框架技术文档
DL动态载入框架技术文档 DL技术交流群:215680213 1. Android apk动态载入机制的研究 2. Android apk动态载入机制的研究(二):资源载入和activity生命周期管 ...
- android动画源码合集、动态主题框架、社交app源码等
Android精选源码 仿MIUI果冻视图-BouncingJellyView 一个快速易用的动态主题框架 android动画效果集合源码 android使用Kotlin开发的Dribbb ...
- 【驱动】linux系统下nand flash驱动程序框架
linux操作系统下nand flash驱动框架 当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层 ...
- Kail Linux渗透测试教程之Recon-NG框架
Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...
随机推荐
- spring mvc生成注册验证码
通过Spring MVC为系统添加验证码 1:布局登陆页面,用户名,密码,填写验证码的文本框,及验证码的图片及点击换图 <%@ taglib prefix="c" uri=& ...
- MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因
在博客Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: N ...
- Linux命令学习总结:rmdir
命令简介: 该命令用用来删除空目录,如果目录非空,则会出现错误.可以使用rm删除目录中的文件后,使用rmdir删除目录.也可以使用rm -rf替代rmdir命令.这是一个非常简单的命令. 命令语法 ...
- RHEL7.2和RHEL6.5的配置网络yum源和本地yum源
RHEL7.2配置本地yum源 [root@localhost ~]#monut /dev/sr0 /mnt #挂载光盘 [root@localhost ~]# rm -rf /etc/yu ...
- 在Cortex-M系列上如何准确地做us级延时?
前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结. 根据我们的经验,最容易想到的大概通过计算指令周期来解决.该思路在Cortex上并不是 ...
- sql server 2012 数据引擎任务调度算法解析(上)
微软在sql server 2012版本之后,引入了新的任务调度算法,这个算法与之前的版本有一些细微的差别.我在这里试着简单描述一下,一些基本概念就不再赘述了,比如NUMA.scheduler.wor ...
- amCharts图表中的JavaScript中文注释引起的浏览器兼容性问题
近期用amCharts做图表.一切都很顺利,然后演示的时候掉链子了,平时开发的时候都是用的火狐和谷歌,加上这种图表框架本来就号称兼容性极好,也没有在ie上测试,演示的机器上恰巧用的是ie11,发现一个 ...
- WPF 开源Chart控件
控件: Icon URL Supplier Dynamic Data Display 2009
- C#基础---Attribute(标签) 和 reflect(反射) 应用
1.Attribute的定义与作用: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Micros ...
- OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...