禁用/启用SELinux的原因


36

在关于StackOverflow 的这个问题以及我们这里完全不同的人群中,我想知道:禁用SELinux的原因是什么(假设大多数人仍然这样做)?您要保持启用状态吗?离开SELinux,您经历了哪些异常?除了Oracle,还有哪些其他供应商在启用SELinux的系统支持方面遇到麻烦?

额外的问题:是否有人能够以强制执行的目标模式在Oracle Linux和RHEL5上运行Oracle?我的意思是说,严格将是很棒的,但是我还没有做到这一点,所以让我们先关注目标;-)

Answers:


25

RedHat默认情况下会打开SELinux,因为它更安全。几乎每个使用Redhat衍生产品的供应商都将SELinux 关闭,因为他们不想花时间(因此也就花钱)弄清楚为什么事情不起作用。Redhat / Fedora人员投入了大量时间和精力,使SELinux在企业版中成为更可行的选择,但是没有其他许多组织真正关心您的安全性。(他们关心自己的安全性和产品的安全性声誉,这是完全不同的事情。)

如果您可以使其工作,那就去做。如果您做不到,那就不要指望那里的供应商会提供很多帮助。您可能可以从Redhat / Fedora团队,selinux邮件列表和freenode上的#selinux频道获得帮助。但是从像Oracle这样的公司那里-SELinux并没有真正考虑他们的业务计划。


8
雇用安装其产品的“企业”软件供应商通过在大型目录树上执行chmod -R 777 *来解决权限问题。他们确实不在乎您的安全性。
kmarsh

21

通常,最好不要在Permissive中运行SELinux,而不是完全禁用它。然后,您可以audit2why在一段时间后检查(通过),查看在常规使用期间会拒绝哪些类型的违规行为,并通过设置audit2allow这些“违规行为”是否为假阳性来构建自定义策略。

我发现默认情况下,在非Fedora派生系统上的SELinux行为比典型的Fedora / RHEL系统具有明显的触动性。

如果您还没有看过它,您可能会发现《Fedora SELinux用户指南》具有教育意义。


16

的原因:

  • 通过强制访问控制提高安全性
  • 您是否需要超出更高安全级别的原因?:-)

反对的理由:

  • 难以理解
  • 难以管理
  • 难以排除故障

就是说,如果您正在考虑SELinux,我建议您阅读《SELinux by Example》一书。

我曾在一家在每个系统上都以强制模式启用SELinux 的公司工作。对我们来说,关键是理解和使用audit2allow程序,该程序可用于创建新的上下文规则。

首先,我们将使用audit2allow生成一个模板,然后使用脚本来构建它,如下所示:

export NAME="my_serviced"
sudo audit2allow -m "${NAME}" -i /var/log/audit/audit.log > ${NAME}.te
sudo setup_semodule ${NAME}

setup_semodule脚本:

#!/bin/sh

# Where to store selinux related files
SOURCE=/etc/selinux/local
BUILD=/etc/selinux/local
NAME=$1

/usr/bin/checkmodule -M -m -o ${BUILD}/${NAME}.mod ${SOURCE}/${NAME}.te
/usr/bin/semodule_package -o ${BUILD}/${NAME}.pp -m ${BUILD}/${NAME}.mod
/usr/sbin/semodule -i ${BUILD}/${NAME}.pp

/bin/rm ${BUILD}/${NAME}.mod ${BUILD}/${NAME}.pp

这将从模板(.te文件)构建模块,生成程序包,然后加载模块。

我们将Puppet用于我们的配置管理系统,并且为Puppet编写了配置以管理所有这些。

SELinux Puppet模块:


2
+1,非常有用的信息。
DCookie

10

将其关闭的原因是调试可能很麻烦。

但是,我们现在不关闭它。我们几乎总是保持运行。我偶尔会关闭它,以快速验证SElinux是否存在问题。

现在调试起来要容易得多,尤其是如果您使自己成为audit2allow的忠实用户。您实际上并不需要用audit2allow来理解它,但是有时您最终可能会打开比使用audit2allow想象的要薄的地方。话虽如此,有些SELinux总比没有好。

我绝不是SELinux专家,仅使用了几年。我仍然不太了解基础知识,但是我知道足够多的知识来使应用程序运行,包括那些由'net的发行版和随机版本中包含的应用程序。

我不得不使用的主要事情是ls -lZ(演出的SELinux) ,audit2allowchcon,,semodule 和布尔值。使用这些工具,我设法获得了在SELinux下运行所需的每个应用程序。getenforcesetenforce

我发现他是调试SELinux问题的主要问题之一,当我有其他不可思议的问题时,只是想重新检查SELinux问题。通常,我要花点时间去“ h!检查SELinux !!”。

根据bind手册页,SELinux比在chroot监狱中运行bind安全得多。许多其他线索远比我建议的线索还多的人,所以我现在盲目运行。并且尽管偶尔出现问题,但还是值得怀疑。


2
+1指出您通常最好使SELinux运行,并且仅将其关闭以确认它是否是问题的根源。
Ophidian

2

我为AppArmor禁用了SELinux ,我发现它比SELinux更友好,更易于维护。


有趣。你在发行什么?我从未使用过AppArmor,但我很好奇它配置了哪些发行版以及它们的特性。会调查一下。我个人对SELinux没什么麻烦,顺便说一句,但这确实需要一些习惯。
wzzrd

AppArmor最初是由Novell开发的,默认情况下包含在其所有openSUSE和SUSE Linux Enterprise发行版中。默认情况下,它在企业发行版中处于启用状态,并且很容易在消费者发行版中启用。Ubuntu从7.04开始拥有它,但是默认情况下它不会自动执行每个应用程序。
andrewd18

我想我记得有一些关于Novell解雇大部分AppArmor团队的话题。Ubuntu不会从发行版中删除它吗?还是我再次听到脑海里的声音?;-)
wzzrd

Novell做到了-但作者仍在无偿工作。ubuntu仍然支持它,并且默认情况下会强制执行cups和mysqld之类的东西。
LiraNuna

并非总是但经常我们为了安全性而使用易用性,反之亦然。这是一种平衡的举动,答案大部分都不是琐碎的,因为定义风险和安全目标是一项非常困难的任务。
修订

1

当您可以在宽松模式下运行它时,没有理由将其关闭。它不会干扰正在运行的应用程序,并且仍将提供有用的安全日志记录。唯一的例外是有关用户上下文的信息:如果要在生活在chroot中运行的另一个linux实例中的不同用户之间进行切换,则可能会遇到问题。


实际上,在某些情况下,SELinux可能会在许可模式下干扰应用程序。第一:尽管系统被设置为允许的,但在某些时间点仍执行某些规则。不知道是否仍然如此。第二:处理规则所花费的时间足以使IPC搞砸。我已经在Oracle集群中看到了这一点。再次过去,不确定当前状态是什么。但是请记住,几乎每个系统调用都添加了一点处理时间。
詹森·谭

0

SE Linux不再像以前那样绝望地不友好,至少在像RHEL5这样的商业支持发行版中没有。在大多数情况下,您都可以保留它,并且RedHat提供的任何内容都可以。除此以外,它可以是可变的。问题是,对于像RedHat和Oracle这样的公司来说,使服务能够启用SE Linux的应用程序需要进行专业的服务,这是不错的收入来源,因此他们没有动力使所有事情都正常运转。


我不认为Oracle会正式支持SELinux
6
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.