题 如何在SELinux中处理大量用户?


不久前,我们开始在我们的Linux服务器上针对Active Directory验证用户身份。就实际的身份验证部分而言,事情进展顺利。

然而,其中一个副作用是Linux认为(有点正确)它有几千(~15-20k)用户。我们已经看到了几个似乎与SELinux相关的问题(其中之一就是 https://serverfault.com/questions/236419/usr-bin-install-hangs-apparently-due-to-selinux)。其他一些问题包括:

  • dmesg反复报道说,restorcon被oom-killer杀死了
  • 在某些服务器上启动需要很长时间 - 这发生在内核加载之后,显然是在读取卷组期间,同时也是在运行restorecon启动脚本时。
  • yum update挂起(类似的行为) 我的SELinux / GNU'安装' 关于mmap / munmap的问题)

我们在SELinux中看到了这些问题 宽容 模式。当我们完全禁用SELinux时,它们会消失。禁用SELinux是一种选择。我还在研究如何使用OU或组限制AD向Linux提供的用户数量。但是我的书呆子总是想知道更多。

所以这是一个非常广泛的问题 - 但任何人都有任何建议与大量用户打交道SELinux?我对SELinux并不是特别熟悉 - 但这可能是学习的机会。


5
2018-03-07 16:55






答案:


这对我来说就像是对libselinux的疏忽。

这里的“修复”是将旧的/etc/selinux/targeted/contexts/files/file_contexts.homedirs重命名为其他内容。创建一个新的(通常包含几个通用正则表达式,您可以在原始文件的顶部找到),然后将该文件设置为不可变,以便策略重写器不重新生成文件(这在新的selinux策略时会发生-targeted rpm已部署)。

这样可以防止你得到的CPU咀嚼。

您的问题发生是因为restorecond打开此文件作为扫描用户目录中文件的参考,必须始终保护文件不受无效文件标签更改的影响。但由于您的文件包含数千个条目,因此扫描会占用大量CPU。

我怀疑在创建库时从未考虑过这个问题,并且可能需要从SELinux端重新考虑。但就目前而言 - '修复'应该有效。


4
2018-03-21 22:56



不可变性导致selinux-policy-targeted RPM失败会在安装时无声地失败,或者大惊小怪?附:嗨! - Coops
@Coops - 不,RPM会忽略它。 SEManage做了那个工作和semanage抱怨它,但无论该命令的结果是什么,RPM似乎很高兴。 - Matthew Ife


这实际上取决于restorecon实际上在做什么,但通常你根本不想运行它,因为这意味着文件标有错误的标签,restorecon想要使它正确。解决方案是使用正确的标签创建这些文件。

如果它实际上是守护进程 restorecond 在后台运行以进行重新标记然后您可以调整它,以便它不会执行不应该的文件。请参阅restorecond的手册页。

这些服务器处理许多文件吗?或者创建了多个文件?它是否挂载NFS共享?

你用什么发行版? Redhat和Fedora对selinux相关问题非常敏感。如果用户数据库的绝对大小或组中的用户是真正的问题,他们几乎肯定想知道它。提交bugzilla的错误。


1
2018-03-15 14:55