Linux多安全策略和动态安全策略框架演示验证方案及结果分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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多安全策略和动态安全策略框架演示验证方案及结果分析的主要内容,如果未能解决你的问题,请参考以下文章
RedHat/CentOS8【SELinux】引起的安全策略问题解决方案