SELinux如何处理大量用户?

Coo*_*per 5 linux selinux pam

不久前,我们开始根据 Active Directory 对 Linux 服务器上的用户进行身份验证。就实际的身份验证部分而言,一切运行良好。

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

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

我们在许可模式下看到 SELinux 存在这些问题。当我们完全禁用 SELinux 时,它们就会消失。禁用 SELinux 是一个选项。我也在寻找方法来限制 AD 使用 OU 或组向 Linux 呈现的用户数量。但我的书呆子总是想知道更多。

所以这是一个相当广泛的问题 - 但是有人对处理具有大量用户的 SELinux 有什么建议吗?我对 SELinux 不是特别熟悉——但这可能是一个学习机会。

Mat*_*Ife 4

对我来说,这感觉像是对 libselinux 的疏忽。

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

这将防止 CPU 被占用。

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

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