浅尝基于SELinux环境下的Web文件访问控制
  

深信服认证 1559

{{ttag.title}}
本帖最后由 深信服认证 于 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_ubject_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等行业证书;负责过省级重大网络安全项目的策划、设计、建设,具备丰富的网络安全体系建设和安全服务的实战经验。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

发表新帖
热门标签
全部标签>
每日一问
功能体验
技术笔记
新版本体验
技术咨询
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
GIF动图学习
信服课堂视频
安装部署配置
秒懂零信任
自助服务平台操作指引
技术晨报
深信服技术支持平台
答题榜单公布
卧龙计划
畅聊IT
答题自测
云计算知识
通用技术
安全攻防
每日一记
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
迁移
社区帮助指南
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
纪元平台
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

81
219
0

发帖

粉丝

关注

本版达人