本帖最后由 深信服认证 于 2022-11-25 16:26 编辑
一、 背景
近期对零信任模型充满了兴趣,那什么是零信任呢?简单的讲,零信任是一种新的思想重新组合了已有技术,实现相对于传统而言的安全访问控制。零信任不是本篇的主角,本篇文章是借着对访问控制的兴趣,重温了SELinux下的强制访问控制机制。
本文将概括SELinux的强访问控制原理,以一个实际的Web服务器文件控制实例,记录温故的“新”收获,最后罗列出在SELinux中常用到的相关组件安装装和查询命令,以供有兴趣的童鞋继续体验和探索。
二、 SELinux强制访问控制基本组件和原理
SELinux起源于美国国家安全局的一些项目,在传统linux的基础上,开发出更加安全的操作系统。SELinux的强制访问控制机制主要是内核层通过Flask架构实现。对于Flask架构,我们重点了解3个关键内容:安全服务器、客体管理器、访问向量缓存。
图 1Flask架构(图片来自网络)
1、安全服务器。安全服务器中主要包含了访问控制策略,提供访问是否被允许的决策依据。 2、客体管理器。客体管理器分布在不同的内核子系统中,比如进程子系统、文件子系统等。当主体向客体发起访问时,由客体管理器向安全服务器查询访问控制策略,当查到当前类型的主体与客体的访问关系时,会根据明确的结论(允许、拒绝)反馈给客体管理器。 3、访问向量缓存。为了提高访问控制决策的高效性,节省不必要的性能开销,访问向量缓存将安全服务器已经计算过的访问策略缓存下来,客体管理器可直接读取缓存的规则。
三、 Web文件访问控制
接下来,我们以Web服务器文件夹中的文件访问为例,浅尝强制访问控制的魅力。
3.1 实验环境 1、操作系统:CentOs 7 2、Web服务器的文件根路径是:/var/www/html。
3.2 实验步骤 首先,在Web服务器中查看当前文件“index.php”的文件标签,输入命令:“ls -Z”(-Z是查看文件的强制标签属性)。 上图中可以看到在“index.php”前面,有被“:”分隔的4部分内容,即“system_u bject_r:httpd_sys_content_t:S0”。这部分我们可称为该文件的一个标签,在SELinux中被称为上下文,构成结构是“用户:角色:类型:灵敏度”。 当前在浏览器中也能正常访问文件“index.php”。 现在我们在当前用户的根目录下(/root/),新生成一个网页文件(“123.php”),然后将该文件移动到web目录下,然后查看web目录下所有文件的上下文(标签)。 然后在浏览器中访问失败,被告知没有权限访问这个文件。 没有权限访问是因为这个文件的类型是“admin_home_t",而不是"httpd_sys_content_t"。在web目录下的文件,只要是”httpd_sys_content_t“的类型,就能被浏览器的用户访问。所以接下来,我们将文件“123.php”的类型做一次修改,然后再尝试访问。
输出命令:“semanage fcontext -a -t httpd_sys_content_t /var/www/html” 这条命令会向“/etc/selinux/targeted/contexts/files”的“file_contexts.local”文件写入该内容,用于后期更新、恢复文件夹里的文件类型。 然后我们使用命令:“restorecon -Rv /var/www/html”,将修改指定文件夹下(/var/www/html)的文件上下文,然后检查上下文修改是否成功。在下图中,可以看到“123.php”的上下文已修改成功。 此时,我们在浏览器中也可正常访问到“123.php”文件内容了。
四、 扩展-查看用户、角色、类型等命令 1、semanage命令需安装“policycoreutils-python”工具。安装命令:yum -y install policycoreutils-python。 2、查看SElinux用户种类的命令:seinfo -u 3、查看角色种类的命令:seinfo -r 4、查看类型种类的命令:seinfo -t 5、seinfo命令,需安装setools-console”工具,安装命令:yum install setools-console
五、 总结 本文以极简的方式,完成了一次SELinux系统进程(主体)对目录和文件(客体)访问控制的体验描述,这仅代表SELinux的冰山一角,它的功能很强大,比如RBAC模型和TE模型结合下对用户访问权限的细粒度控制。大家有兴趣的话,可以想想以下问题:SELinux的安全策略如何实现自定义;SELinux访问控制的思路和零信任的访问控制有哪些类似之处。
本文作者:严波,深信服教学教研中心主任,深信服安全服务认证专家(SCSE-S),产业教育中心资深讲师,网络安全等级保护体系专家,网络安全高级咨询顾问,中国网络空间安全协会会员,中国计算机学会会员,担任中国计算机行业协会数据安全专业委员会委员,数字政府网络安全产业联盟人才培养发展委员会副主任,中国软件测评中心数据安全产业专家委员会委员,暨南大学网络空间学院校外实践指导老师,深圳大学专业学位研究生校外导师,深圳信息职业技术学院产业学院副教授等职务,持有CISAW、CISP、CCNP等行业证书;负责过省级重大网络安全项目的策划、设计、建设,具备丰富的网络安全体系建设和安全服务的实战经验。 |