管理SELinux策略:优化故障排除及访问控制

简介:

如果您的新部署的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从允许模式调整回增强模式。

本文转自d1net(转载)

相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
9月前
|
存储 安全 网络安全
《内网安全攻防》DMZ访问控制策略(干货!)
《内网安全攻防》DMZ访问控制策略(干货!)
268 0
|
10月前
|
网络安全 数据安全/隐私保护
《网络安全0-100》经典访问控制策略(上)
《网络安全0-100》经典访问控制策略
62 1
|
10月前
|
网络安全 数据安全/隐私保护 存储
《网络安全0-100》经典访问控制策略(下)
《网络安全0-100》经典访问控制策略
122 0
|
存储 运维 Kubernetes
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
第五章 DO280OpenShift访问控制--管理项目和账户
240 0
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
|
分布式计算 安全 数据安全/隐私保护
信息安全之访问控制策略
信息安全之访问控制策略
288 0
|
安全 Java 数据管理
基于角色访问控制RBAC权限模型的动态资源访问权限管理实现
前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管理在crudapi中的实现。RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。模型中有几个关键的术语: 用户:系统接口及访问的操作者 权限:能够访问某接口或者做某操作的授权资格 角色:具有一类相同操作权限的用户的总称 。 #### 用户角色权限关系 一个用户有一个或多个角色 一个角色包含多个用户 一个角色有多种权限 一个权限属于多个角色
665 0
基于角色访问控制RBAC权限模型的动态资源访问权限管理实现
|
弹性计算 安全 测试技术
学习阿里云的访问控制策略
我们使用访问控制策略来描述如何保护系统中的资源, 准许执行哪些操作, 禁止执行哪些操作. 本文从常见的访问控制策略入手, 逐步了解阿里云平台的访问控制策略表达方法.
3146 0