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

本文涉及的产品
访问控制,不限时长
日志服务 SLS,月写入数据量 50GB 1个月
简介:

如果您的新部署的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(转载)

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
3月前
|
Apache 数据安全/隐私保护
HAProxy的高级配置选项-ACL篇之基于策略的访问控制
这篇文章介绍了HAProxy的高级配置选项,特别是如何使用ACL(访问控制列表)进行基于策略的访问控制,通过实战案例展示了如何配置HAProxy以允许或拒绝来自特定源地址的访问。
71 6
HAProxy的高级配置选项-ACL篇之基于策略的访问控制
|
4月前
|
安全 数据库 数据安全/隐私保护
|
4月前
|
安全 数据安全/隐私保护 开发者
|
4月前
|
安全 Linux 数据库
|
4月前
|
安全 数据安全/隐私保护
|
4月前
|
存储 监控 安全
Linux存储安全:访问控制的实践与策略
【8月更文挑战第18天】Linux存储安全:访问控制的实践与策略
64 0
|
6月前
|
弹性计算 安全 Shell
阿里云ECS安全加固:从访问控制到数据保护的全方位策略
【6月更文挑战第29天】阿里云ECS安全聚焦访问控制、系统加固及数据保护。安全组限定IP和端口访问,密钥对增强SSH登录安全;定期更新补丁,使用防病毒工具;数据备份与加密确保数据安全。多维度策略保障业务安全。
170 15
|
5月前
|
安全 Java 数据库
如何设计返利App的用户权限与访问控制策略
如何设计返利App的用户权限与访问控制策略
|
5月前
|
监控 安全 Java
Java中的权限管理与访问控制策略
Java中的权限管理与访问控制策略
|
7月前
|
弹性计算 安全 Shell
【阿里云弹性计算】阿里云ECS安全加固:从访问控制到数据保护的全方位策略
【5月更文挑战第22天】本文详述了阿里云ECS的安全加固策略,包括访问控制(如安全组设置和密钥对管理)、系统安全加固(如安全补丁更新和防病毒措施)以及数据保护(如数据备份、恢复和加密)。通过这些措施,用户可增强ECS安全性,保障业务安全稳定运行。
151 0