如果禁用selinux会发生什么问题[关闭]


9

我们从另一个团队那里继承了一堆二手服务器。其中有些启用了SELinux,有些则没有。由于SELinux的,我们是无法设置密码的ssh,我们的网络服务器等,我们发现一个变通此stackexchange网站,这是运行:

restorecon -R -v ~/.ssh

但是,由于我们不需要运行SELinux来完成工作,因此将其关闭可能比记住每个人都需要权限的目录运行上述cmd容易。

我们是否可以关闭SELinux而不产生任何影响,还是重新映像服务器更好?需要注意的一件事;我们的IT团队真的很忙,因此除非是绝对必要(需要非常好的业务案例),否则重新映像服务器的位置并不高...或者有人用一瓶苏格兰威士忌或威士忌贿赂老板。

更新:感谢大家的建议。这些服务器都将用作内部开发服务器。这些机器将不会有外部访问,因此安全性不是我们关注的重点。据我们所知,我们目前使用的所有服务器均未启用SELinux。我的经理刚刚获得的一些服务正在执行,而那些我们正在禁用的服务正在执行,因此集群中的所有内容都是统一的。


1
我在Android.se上回答了类似的问题:SELinux处于“许可”模式有多危险?我应该注意什么?。“允许”模式与禁用SELinux之间的主要区别在于,您将不再获得AVC日志消息,并且SELinux将不会使文件标签保持最新,因此您需要在重新启用文件之前重新标记文件。
WhiteWinterWolf '16

“可能出什么问题了?”
scai

3
@scai这实际上是一个好问题。正如Sato Katsura指出的那样,SELinux很难有效使用。错误的安全感会损害安全性。
Rhymoid

Answers:


14

SELinux是操作系统的安全功能。它旨在帮助保护服务器的某些部分免受其他部分的侵害。

例如,如果您运行一个Web服务器,并且具有一些允许攻击者运行任意命令的“易受攻击”代码,那么SELinux可以通过阻止Web服务器访问不允许查看的文件来帮助缓解这种情况。

现在您可以禁用SELinux,它不会破坏任何东西。服务器将继续正常运行。

但是您将禁用其中一项安全功能。


10
只有正确配置SELinux才能正常工作。但是,SELinux是如此复杂,以至于没有人有时间和/或知识来正确配置它,因此最终要么被禁用,要么成为管理员的永久痛苦。但是你们一直对它作为一种安全功能投入信心。
佐藤桂

3
我同意selinux是要管理的PITA,但是将其称为安全功能仍然是公平且完全准确的。对于那些希望或需要投入时间来学习和管理它的人(不是我),这是无价的-例如,大型,知名网站的系统管理员,也吸引着全世界脚本小子的目标。
cas

2
@SatoKatsura仅仅因为配置困难或难以理解并不能证明禁用安全机制是合理的。前提是实际上需要这种安全机制,但这种安全机制并不总是容易决定的。
scai

@scai我不是说应该(或不应该)禁用它。我的意思是,SELinux的基础模型存在缺陷。有人认为所有可以禁用的安全机制都是有缺陷的。
佐藤桂

@SatoKatsura是的,这就是为什么拥有密码完全毫无意义的原因,因为可以将其禁用(例如使用pam或nss或仅使用空白密码)。顺便说一句,我从未宣称您说过应该禁用selinux。我只是在反驳您的说法,即它不是真正的安全功能。
cas

8

SELinux的观点各不相同。在许多情况下,某些应用程序不能很好地与SELinux配合使用,因此这一决定毫无意义(Oracle是一个例子)。
通常,SELinux是一种保护机制,可为恶意分子想要破坏您的系统的方式设置另一个障碍。

在大公司担任系统管理员之前,我通常禁用SELinux。我没有时间跟踪用户,开发人员和管理人员正在使用的所有系统上的所有SELinux错误。

在禁用功能之前,您可能需要首先将系统上的文件重新标记为应有的名称。我找到的最简单的方法是输入命令:

 # /sbin/fixfiles onboot

要么

 # touch /.autorelabel

然后,重新启动并等待,因为系统将花费大约相同的时间来验证并重置系统中错误的SELinux标签。之后,您可能会满意,因为它可以修复和更正不合格的SELinux标签,这些标签在尝试管理服务器之前可能已被修改。

但是,如果不这样做,则不会在执行模式下不包含SELinux,不会对系统造成损害。这只是额外的保护层。


3
讨论,不要沉默。但是完全正确;并非所有系统都需要selinux。
phyrfox

+1表示建议在禁用SELinux作为回退之前尝试全局重新标记文件。SELinux旨在防止意外的软件和用户行为。在没有明确定义的预期行为的系统上,SELinux的危害确实可能大于弊端(操作系统提供的策略试图尽可能地笼统,但有时这还不够)。
WhiteWinterWolf

谢谢!/sbin/fixfiles onboot在CentOS上为我工作,而不是touch /.autorelabel。正在运行sealert -a /var/log/audit/audit.log现在显示0条警报。@mdpc这两个命令有什么区别?
Joseph K.

5

简而言之,禁用像SELinux这样的强制性访问控制(MAC)机制不是一个好主意,如果一个坏人成功规避了由自由访问控制(DAC)实现的基于名称的访问控制,则可能使您处于安全劣势。

是我,我会做类似的事情

semanage fcontext -a -t ssh_home_t ~/.ssh # Adding the policy
restorecon -R -v ~/.ssh # Applying the policy

以确保从中递归分配的类型标签~/.ssh


1
它是程式化的“ SELinux”。Linux不是首字母缩写词,而“ SE”部分是缩写。
Rhymoid '16

@Rhymoid:的确是一个很好的笔记。实际上我写的是偶然的。
sjsam '16

2

一般来说,您不应该禁用SELinux。有一些工具可以帮助您了解问题所在。我最喜欢的是sealert示例用法:

sealert -a /var/log/audit/audit.log

OFC始终可以将SELinux设置为允许模式进行调试,但是Red Hat认为将SELinux禁用或允许是严重的安全缺陷。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.