在StackOverflow的这个问题的行中,以及我们在这里完全不同的人群,我想知道:你禁止SELinux的原因是什么(假设大多数人仍然这样做)? 你想保持启用? 你离开SELinux出现了什么exception? 除了Oracle之外,还有哪些供应商支持启用SELinux的系统?
奖金问题:任何人都设法使用SELinux在RHEL5上运行Oracle来强制执行目标模式? 我的意思是,严格会很棒,但是我不会那么远,所以让我们留在目标首先;-)
RedHat默认打开SELinux,因为它更安全。 几乎每个使用Redhat衍生产品的供应商都会closuresSELinux ,因为他们不想花时间(也就是金钱)来弄清楚为什么这个东西不能工作。 Redhat / Fedora的人投入了大量的时间和精力,使得SELinux在企业中成为一个可行的select,但并不是很多其他组织真正关心你的安全。 (他们关心他们的安全和产品的安全声誉,这是完全不同的事情。)
如果你能做到这一点,那就去做吧。 如果你不能,那么不要期望在那里的供应商提供很多帮助。 您可能可以从RedHat / Fedora家伙,从selinux邮件列表和freenode上的#selinux频道获得帮助。 但是从像Oracle这样的公司来说,SELinux并没有真正考虑到他们的业务计划。
通常情况下,您最好在Permissive中运行SELinux,而不是完全禁用它。 然后,您可以稍后检查(通过audit2why
),以查看在您的常规使用情况下会拒绝哪些违规行为,并且如果这些“违规”对于您的设置是错误肯定的,则通过audit2allow
构build自定义策略。
我发现,在非Fedora衍生系统上,SELinux的行为比默认情况下使用典型的Fedora / RHEL系统更为敏感。
如果你还没有看到它,你可能会发现Fedora SELinux用户指南的教育。
理由:
反对的理由:
这就是说,如果你正在考虑SELinux,我推荐SELinux by Example 。
我曾经为一家在每个系统上启用了SELinux的公司工作。 对我们来说,关键是理解和使用audit2allow程序,它可以用来创build新的上下文规则。
首先,我们将生成一个audit2allow模板,然后使用脚本来构build它,如下所示:
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作为我们的configurationpipe理系统,我们为Puppet编写configuration来pipe理所有这些。
SELinux Puppet模块:
closures它的原因是因为它可能是一个痛苦的debugging。
但是,我们现在不closures它。 我们几乎总是保持运行。 我偶尔会closures它来快速validationSElinux是否有问题。
现在debugging要容易得多,特别是如果你用audit2allow做家庭的话。 你并不需要用audit2allow来理解它,但是你可以有时候比audit2allow更加开放。 说了一些SELinux总比没有好。
我绝不是SELinux的专家,只用了几年。 我还是不太了解这些基础知识,但是我知道足够的应用程序可以运行,包括发行版和随机内容。
我不得不使用的主要是ls -lZ
(显示selinux上下文), audit2allow
, chcon
, semodule
, getenforce
, setenforce
和布尔值。 有了这些工具,我已经设法让我需要在SELinux下运行的每个应用程序。
我发现在debuggingSELinux问题时遇到的一个大问题,就是当我还有其他明智的莫名其妙的问题时,记住要检查SELinux的问题。 通常我会花一点儿时间去“检查SELinux !!”。
根据bind man页面,SELinux远比在chroot jail中运行bind更安全。 很多其他的人比我还有更多的线索推荐,所以我现在盲目地运行它。 并怀疑偶尔的问题,这可能是值得的。
我禁用了SELinux for AppArmor ,我发现它比SELinux更友好,更容易维护。
当您可以在Permissive模式下运行时,没有理由closures它。 它不会干扰正在运行的应用程序,它仍然会提供有用的安全日志logging。 唯一的例外是关于用户上下文:如果你在不同的用户之间改变生活在另一个Linux实例运行在一个chroot你可能有问题。
SE Linux并不像以前那样绝望不友好,至less它不是像RHEL5那样在商业上受到支持的发行版。 大部分情况下,你可以把它打开,而且RedHat提供的任何东西都可以。 与其他任何东西都可以是可变的。 问题在于,专业的服务工作让SE Linux的应用程序能够正常工作,对于像RedHat和Oracle这样的公司来说,这是一个很好的收入来源,所以他们没有动力让所有的东西都能很好的工作。