Linux运维知识:管理SELinux策略之优化故障排除及访问控制
小标 2018-06-29 来源 : 阅读 1194 评论 0

摘要:本文主要向大家介绍了Linux运维知识的管理SELinux策略之优化故障排除及访问控制,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助。

    本文主要向大家介绍了Linux运维知识的管理SELinux策略之优化故障排除及访问控制,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助。

  如果您的新部署的SaaS应用程序或任何您刚刚开发的系统或服务由于SELinux而无法运行,最好的办法是在允许模式(Permissive)下进行故障排除。

  SELinux在日志事件记录方面的SELinux模式分为不同的三类——增强(Enforcing)、允许(Permissive)以及禁用(Disabled)——这也展示了管理员在SELinux系统内部如何能够确保应用程序安全并排除故障。

  安全增强型Linux是具有先进的访问控制机制,内置于大多数现代Linux发行版。随着安全增强型Linux的到位,管理员使用策略可以实现更好的安全管理。

  但这些策略不仅是系统安全的关键,也是其功能实现的关键。例如,安全增强型Linux(Security-Enhanced Linux)允许应用程序查询策略;管理员控制流程的初始化、继承并执行程序;同时管理员管理文件、文件系统、目录、套接字,打开文件描述符、通讯接口和网络接口。其也同样允许已发生策略的调整,具备更改SELinux策略而不需要重新启动系统的能力。

  SELinux通过实施强制访问控制(Mandatory Access Control,MAC)基础上的自主访问控制(Discretionary Access Control,DAC)来实现防止系统被入侵。DAC限制访问对象或资源,如文件、套接字、管道或网络接口,基于主题或流程的特定身份,和/或主题所属于的群组。MAC限制主题访问对象或在对象或目标上运行的某种操作的能力。

  SELinux模式

  SELinux可设置为三种不同的模式:

  增强(Enforcing):SELinux基于SELinux的策略拒绝访问;

  允许(Permissive):SELinux不拒绝访问,但会记录所有拒绝行为;以及

  禁用(Disabled):SELinux不可用状态。

  并不推荐将SELinux设置为禁用模式。某些时候,管理员使用此模式是因为SELinux系统复杂,如果管理不善,可以轻易造成对应用程序功能的影响。例如,管理员可能会推出软件即服务(SaaS)类型的应用程序,随后发现它没有正确地运行。在迅速地查看过日志文件后,管理员发现SELinux是罪魁祸首,因此将其关闭——但这会使强大的安全工具失去作用。

  利用SELinux进行故障排除

  工作很扎实。这是管理员在出现问题时应该始终最先关注的内容。默认情况下,SELinux会将所有内容记录在/var/log/audit/audit.log中。当某一应用程序的功能出错——假设您很确定问题不是出在应用程序的代码——那么SELinux日志文件是您排除故障首先要关注的内容。标准的用户必须使用su命令来获得查看SELinux日志的权限(如图A)。

  CentOS 7服务器上的SELinux的日志文件

  梳理审计日志的过程可能会很繁琐,但它可以帮助了解究竟发生了什么问题。具体查看显示拒绝的条目。这些条目将列出诸如进程ID、用户ID、请求的权限、进程命令和目标名称等信息。有了这些信息,您会发现为什么SELinux无法与您的应用程序/服务协同工作。

  GUI的替代

  如果碰巧运行的服务器上具有GUI(图形化用户界面),SELinux Alert Browser是一件必备的工具。当SELinux发现了某项问题,将会进行报警。点击报警信息,输入您的root用户密码,同时SELinux警告浏览器就会出现。

  在初期,SELinux应该被设置为增强模式。如果SELinux在您的应用程序或服务中发现了问题,它便会拒绝其运行。您可以将默认策略从增强模式更改为允许模式,这样SELinux会允许服务运行,同时记录下所有用于排除问题的日志内容。当您遇到这样的问题时,您可以按照以下步骤从增强模式切换到允许模式:

  1.打开终端窗口;

  2.输入sudo nano /etc/sysconfig/selinux命令;

  3.将SELINUX=enforcing更改为SELINUX=permissive;

  4.保存并关闭文件;

  5.重新启动服务器;

  为确保状态已发生变化,输入命令sestatus。这个命令会告诉您一切您需要知道的关于SELinux的当前状态(如图B)。

  SELinux已经被切换为允许模式。

  在当前状态下,您的应用程序将会运行,并且SELinux将记录所有拒绝行为,以便您能够定位问题所在。

  更改SELinux策略

  举例来说,您有一个SaaS的应用程序,想通过Apache服务器运行,这是不正常的。

  假设Apache已经从某一可变换的文档root运行网站服务,这就很可能是SELinux遇到问题的原因。我们例子中可变换的文档root所在位置是/srv/www/。您在Apache上设置的所有内容都是正确的,但是网站无法从可变换的文档root中启动运行。您通过/var/log/audit/audit.log日志文件发现SELinux是罪魁祸首。问题是,SELinux并不了解可变换的文档root。

  首先,找出某一合法的文件上的诸多细节,我们将使用/var/www/html/ index.html——从标准文档root目录就可以调整相应的替代文件root。要查找此信息,请输入以下命令:

  ls -lZ /var/www/html/index.html

  该命令的输出结果如图C中显示的那样。

  该命令的输出结果是“ls -lZ /var/www/html/index.html”。

  使用命令emanage fcontext -l | grep '/var/www'Kauai展示所有的fcontext条目,或者使用命令/var/www/ folder来展示所有文件内容,将返回同样的内容类型,即例子中的httpd_sys_content_t。随后,通过SELinux使这种类型的文件能够在/srv/www/service.com/html目录中启用。为此,使用semanage命令帮助完成策略变更:

  semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'

  上述的命令指示semanage添加新的httpd_sys_content_t类型fcontext,并将其应用到目录/srv/www中,同样适用于任何子目录和文件。此时,输入命令semanage fcontext -l | grep '/srv/www'来查看您/srv/www目录中的文件,并验证httpd_sys_content_t内容是否生效。现在输入命令restorecon -Rv /srv/www,这将为/srv/www目录重新标记设置适当的安全内容,新修订的SELinux策略也同样适用于任何子目录和文件。

  现在,Apache能够在/srv/www目录下提供服务内容而不会遭到SELinux的零星打断。当您的问题解决完成,使用和SELinux从增强模式调整成允许模式同样的方法,将SELinux从允许模式调整回增强模式。

   本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程