wzzrd Asked: 2009-06-24 22:26:57 +0800 CST2009-06-24 22:26:57 +0800 CST 2009-06-24 22:26:57 +0800 CST 禁用/启用 SELinux 的原因 772 在 StackOverflow 上的这个问题以及我们在这里遇到的完全不同的人群中,我想知道:您禁用 SELinux 的原因是什么(假设大多数人仍然这样做)?您想保持启用吗?离开 SELinux 后,您遇到了哪些异常情况?除了 Oracle,还有哪些供应商在支持启用 SELinux 的系统时遇到了麻烦? 额外的问题:有人设法让 Oracle 在 RHEL5 上运行 SELinux 并强制执行目标模式吗?我的意思是,严格会很棒,但我认为这还不太可能,所以让我们先保持目标;-) linux redhat security oracle selinux 7 个回答 Voted Best Answer tylerl 2009-06-25T00:44:25+08:002009-06-25T00:44:25+08:00 RedHat 默认开启 SELinux,因为它更安全。几乎所有使用 Redhat 衍生产品的供应商都会关闭 SELinux ,因为他们不想花费时间(因此也需要金钱)来弄清楚为什么这件事不起作用。Redhat/Fedora 人员投入了大量时间和精力,使 SELinux 在企业中成为一种可行的选择,但没有很多其他组织真正关心您的安全性。(他们关心自己的安全和产品的安全声誉,这是完全不同的事情。) 如果你能让它发挥作用,那就去做吧。如果你不能,那么不要指望那里的供应商提供很多帮助。您可能可以从 Redhat/Fedora 人员、selinux 邮件列表和 freenode 上的#selinux 频道获得帮助。但是像甲骨文这样的公司——嗯,SELinux 并没有真正考虑到他们的商业计划。 Ophidian 2009-06-25T05:50:54+08:002009-06-25T05:50:54+08:00 通常你最好在 Permissive 中运行 SELinux,而不是完全禁用它。然后,您可以在一段时间后检查(通过audit2why)以查看在您的常规使用期间会拒绝哪些类型的违规行为,并通过audit2allow这些“违规行为”是否为您的设置的误报来构建自定义策略。 我发现非 Fedora 派生系统上的 SELinux 行为比默认情况下典型的 Fedora/RHEL 系统上的行为要敏感得多。 如果您还没有看过它,您可能会发现Fedora SELinux 用户指南具有教育意义。 jtimberman 2009-06-27T12:22:26+08:002009-06-27T12:22:26+08:00 的原因: 通过强制访问控制实现更高级别的安全性 您需要更高级别的安全性之外的理由吗?:-) 反对理由: 难以理解 难以管理 难以排除故障 也就是说,如果您正在考虑使用 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 木偶模块: http://github.com/sansnoc/puppet/tree/master/selinux Jason Tan 2009-06-25T03:33:52+08:002009-06-25T03:33:52+08:00 关闭它的原因是调试起来很痛苦。 但是我们现在不关闭它。我们几乎总是让它运行。我偶尔会关闭它以快速验证 SElinux 是否存在问题。 现在调试起来要容易得多,尤其是如果您熟悉 audit2allow 的话。您实际上并不需要使用 audit2allow 来理解它,但有时您最终会打开比您想象的更宽的范围。话虽如此,有些 SELinux 总比没有好。 我绝不是 SELinux 专家,并且只使用了几年。我仍然不太了解基础知识,但我知道的足以让应用程序运行,包括那些包含在发行版中的应用程序和由 'net. 我必须使用的主要内容是(显示ls -lZselinux 上下文)、、、、、audit2allow和布尔值。使用这些工具,我设法让我需要在 SELinux 下运行的每个应用程序。chconsemodulegetenforcesetenforce 我发现调试 SELinux 问题的一个大问题,就是当我遇到其他明智的莫名其妙的问题时,要记住检查 SELinux 问题。我通常会花点时间去“h!检查 SELinux!!”。 根据绑定手册页,SELinux 比在 chroot 监狱中运行绑定要安全得多。很多其他人比我有更多的线索也推荐它,所以我现在盲目地运行它。并且怀疑尽管偶尔会出现问题,但它可能值得做。 LiraNuna 2009-06-25T00:21:21+08:002009-06-25T00:21:21+08:00 我为AppArmor禁用了 SELinux ,我发现它比 SELinux 更友好且易于维护。 Federico 2009-06-27T11:58:02+08:002009-06-27T11:58:02+08:00 当您可以在 Permissive 模式下运行它时,没有理由将其关闭。它不会干扰正在运行的应用程序,它仍然会提供有用的安全日志记录。唯一的例外是关于用户上下文:如果您在居住在另一个运行在 chroot 中的 linux 实例中的不同用户之间进行更改,您可能会遇到问题。 goo 2009-06-24T23:15:34+08:002009-06-24T23:15:34+08:00 SE Linux 不再像以前那样不友好,至少它不在商业支持的发行版中,如 RHEL5。在大多数情况下,您可以将其保持打开状态,并且可以使用 RedHat 提供的任何内容。对于其他任何东西,它都可以是可变的。问题是,让应用程序与 SE Linux 一起工作的专业服务工作对于 RedHat 和 Oracle 等公司来说是一个不错的收入来源,因此他们没有动力让一切都很好地运行 ootb。
RedHat 默认开启 SELinux,因为它更安全。几乎所有使用 Redhat 衍生产品的供应商都会关闭 SELinux ,因为他们不想花费时间(因此也需要金钱)来弄清楚为什么这件事不起作用。Redhat/Fedora 人员投入了大量时间和精力,使 SELinux 在企业中成为一种可行的选择,但没有很多其他组织真正关心您的安全性。(他们关心自己的安全和产品的安全声誉,这是完全不同的事情。)
如果你能让它发挥作用,那就去做吧。如果你不能,那么不要指望那里的供应商提供很多帮助。您可能可以从 Redhat/Fedora 人员、selinux 邮件列表和 freenode 上的#selinux 频道获得帮助。但是像甲骨文这样的公司——嗯,SELinux 并没有真正考虑到他们的商业计划。
通常你最好在 Permissive 中运行 SELinux,而不是完全禁用它。然后,您可以在一段时间后检查(通过
audit2why
)以查看在您的常规使用期间会拒绝哪些类型的违规行为,并通过audit2allow
这些“违规行为”是否为您的设置的误报来构建自定义策略。我发现非 Fedora 派生系统上的 SELinux 行为比默认情况下典型的 Fedora/RHEL 系统上的行为要敏感得多。
如果您还没有看过它,您可能会发现Fedora SELinux 用户指南具有教育意义。
的原因:
反对理由:
也就是说,如果您正在考虑使用 SELinux,我推荐这本书SELinux by Example。
我在一家公司工作,该公司在每个系统上都启用了 SELinux,处于强制模式。我们的关键是理解和使用可用于创建新上下文规则的 audit2allow 程序。
首先,我们使用 audit2allow 生成模板,然后使用脚本构建它,如下所示:
setup_semodule 脚本:
这将从模板(.te 文件)构建模块,生成一个包,然后加载该模块。
我们将 Puppet 用于我们的配置管理系统,并为 Puppet 编写配置来管理这一切。
SELinux 木偶模块:
关闭它的原因是调试起来很痛苦。
但是我们现在不关闭它。我们几乎总是让它运行。我偶尔会关闭它以快速验证 SElinux 是否存在问题。
现在调试起来要容易得多,尤其是如果您熟悉 audit2allow 的话。您实际上并不需要使用 audit2allow 来理解它,但有时您最终会打开比您想象的更宽的范围。话虽如此,有些 SELinux 总比没有好。
我绝不是 SELinux 专家,并且只使用了几年。我仍然不太了解基础知识,但我知道的足以让应用程序运行,包括那些包含在发行版中的应用程序和由 'net.
我必须使用的主要内容是(显示
ls -lZ
selinux 上下文)、、、、、audit2allow
和布尔值。使用这些工具,我设法让我需要在 SELinux 下运行的每个应用程序。chcon
semodule
getenforce
setenforce
我发现调试 SELinux 问题的一个大问题,就是当我遇到其他明智的莫名其妙的问题时,要记住检查 SELinux 问题。我通常会花点时间去“h!检查 SELinux!!”。
根据绑定手册页,SELinux 比在 chroot 监狱中运行绑定要安全得多。很多其他人比我有更多的线索也推荐它,所以我现在盲目地运行它。并且怀疑尽管偶尔会出现问题,但它可能值得做。
我为AppArmor禁用了 SELinux ,我发现它比 SELinux 更友好且易于维护。
当您可以在 Permissive 模式下运行它时,没有理由将其关闭。它不会干扰正在运行的应用程序,它仍然会提供有用的安全日志记录。唯一的例外是关于用户上下文:如果您在居住在另一个运行在 chroot 中的 linux 实例中的不同用户之间进行更改,您可能会遇到问题。
SE Linux 不再像以前那样不友好,至少它不在商业支持的发行版中,如 RHEL5。在大多数情况下,您可以将其保持打开状态,并且可以使用 RedHat 提供的任何内容。对于其他任何东西,它都可以是可变的。问题是,让应用程序与 SE Linux 一起工作的专业服务工作对于 RedHat 和 Oracle 等公司来说是一个不错的收入来源,因此他们没有动力让一切都很好地运行 ootb。